Backed out changeset cac0d4aa79d1 (bug 1501286) Backed out changeset 578d395f555e (bug 1501286) Backed out changeset d9940451c373 (bug 1501286) Backed out changeset ca6c3139bdd2 (bug 1501286) Backed out changeset 93d6f4d54f78 (bug 1501286)
137 lines
6.1 KiB
JavaScript
137 lines
6.1 KiB
JavaScript
"use strict";
|
|
|
|
const PREF_INTRO_COUNT = "browser.contentblocking.introCount";
|
|
const PREF_CB_UI_ENABLED = "browser.contentblocking.ui.enabled";
|
|
const PREF_TP_ENABLED = "privacy.trackingprotection.enabled";
|
|
const PREF_FB_ENABLED = "browser.fastblock.enabled";
|
|
const PREF_FB_TIMEOUT = "browser.fastblock.timeout";
|
|
const BENIGN_PAGE = "http://tracking.example.org/browser/browser/base/content/test/trackingUI/benignPage.html";
|
|
const TRACKING_PAGE = "http://tracking.example.org/browser/browser/base/content/test/trackingUI/trackingPage.html";
|
|
const TOOLTIP_PANEL = document.getElementById("UITourTooltip");
|
|
const TOOLTIP_ANCHOR = document.getElementById("tracking-protection-icon-animatable-box");
|
|
|
|
var {UrlClassifierTestUtils} = ChromeUtils.import("resource://testing-common/UrlClassifierTestUtils.jsm", {});
|
|
|
|
registerCleanupFunction(function() {
|
|
UrlClassifierTestUtils.cleanupTestTrackers();
|
|
Services.prefs.clearUserPref(PREF_CB_UI_ENABLED);
|
|
Services.prefs.clearUserPref(PREF_TP_ENABLED);
|
|
Services.prefs.clearUserPref(PREF_FB_ENABLED);
|
|
Services.prefs.clearUserPref(PREF_FB_TIMEOUT);
|
|
Services.prefs.clearUserPref(PREF_INTRO_COUNT);
|
|
});
|
|
|
|
function allowOneIntro() {
|
|
Services.prefs.setIntPref(PREF_INTRO_COUNT, window.ContentBlocking.MAX_INTROS - 1);
|
|
}
|
|
|
|
add_task(async function setup_test() {
|
|
Services.prefs.setBoolPref(PREF_CB_UI_ENABLED, true);
|
|
Services.prefs.setBoolPref(PREF_TP_ENABLED, true);
|
|
await UrlClassifierTestUtils.addTestTrackers();
|
|
});
|
|
|
|
add_task(async function test_benignPage() {
|
|
info("Load a test page not containing tracking elements");
|
|
allowOneIntro();
|
|
await BrowserTestUtils.withNewTab(BENIGN_PAGE, async function() {
|
|
await Assert.rejects(waitForConditionPromise(() => {
|
|
return BrowserTestUtils.is_visible(TOOLTIP_PANEL);
|
|
}, "timeout"), /timeout/, "Info panel shouldn't appear on a benign page");
|
|
});
|
|
});
|
|
|
|
add_task(async function test_tracking() {
|
|
info("Load a test page containing tracking elements");
|
|
allowOneIntro();
|
|
await BrowserTestUtils.withNewTab({gBrowser, url: TRACKING_PAGE}, async function() {
|
|
await new Promise((resolve, reject) => {
|
|
waitForPopupAtAnchor(TOOLTIP_PANEL, TOOLTIP_ANCHOR, resolve,
|
|
"Intro panel should appear");
|
|
});
|
|
|
|
is(Services.prefs.getIntPref(PREF_INTRO_COUNT), window.ContentBlocking.MAX_INTROS, "Check intro count increased");
|
|
|
|
let step2URL = Services.urlFormatter.formatURLPref("privacy.trackingprotection.introURL") +
|
|
"?step=2&newtab=true&variation=2";
|
|
let buttons = document.getElementById("UITourTooltipButtons");
|
|
|
|
info("Click the step text and nothing should happen");
|
|
let tabCount = gBrowser.tabs.length;
|
|
await EventUtils.synthesizeMouseAtCenter(buttons.children[0], {});
|
|
is(gBrowser.tabs.length, tabCount, "Same number of tabs should be open");
|
|
|
|
info("Resetting count to test that viewing the tour prevents future panels");
|
|
allowOneIntro();
|
|
|
|
let panelHiddenPromise = promisePanelElementHidden(window, TOOLTIP_PANEL);
|
|
let tabPromise = BrowserTestUtils.waitForNewTab(gBrowser, step2URL);
|
|
info("Clicking the main button");
|
|
EventUtils.synthesizeMouseAtCenter(buttons.children[1], {});
|
|
let tab = await tabPromise;
|
|
is(Services.prefs.getIntPref(PREF_INTRO_COUNT), window.ContentBlocking.MAX_INTROS,
|
|
"Check intro count is at the max after opening step 2");
|
|
is(gBrowser.tabs.length, tabCount + 1, "Tour step 2 tab opened");
|
|
await panelHiddenPromise;
|
|
ok(true, "Panel hid when the button was clicked");
|
|
BrowserTestUtils.removeTab(tab);
|
|
});
|
|
|
|
info("Open another tracking page and make sure we don't show the panel again");
|
|
await BrowserTestUtils.withNewTab(TRACKING_PAGE, async function() {
|
|
await Assert.rejects(waitForConditionPromise(() => {
|
|
return BrowserTestUtils.is_visible(TOOLTIP_PANEL);
|
|
}, "timeout"), /timeout/, "Info panel shouldn't appear more than MAX_INTROS");
|
|
});
|
|
});
|
|
|
|
add_task(async function test_fastBlock() {
|
|
Services.prefs.clearUserPref(PREF_INTRO_COUNT);
|
|
|
|
Services.prefs.setBoolPref(PREF_TP_ENABLED, false);
|
|
Services.prefs.setBoolPref(PREF_FB_ENABLED, true);
|
|
Services.prefs.setIntPref(PREF_FB_TIMEOUT, 0);
|
|
|
|
info("Load a test page containing tracking elements for FastBlock");
|
|
allowOneIntro();
|
|
await BrowserTestUtils.withNewTab({gBrowser, url: TRACKING_PAGE}, async function() {
|
|
await new Promise((resolve, reject) => {
|
|
waitForPopupAtAnchor(TOOLTIP_PANEL, TOOLTIP_ANCHOR, resolve,
|
|
"Intro panel should appear");
|
|
});
|
|
|
|
is(Services.prefs.getIntPref(PREF_INTRO_COUNT), window.ContentBlocking.MAX_INTROS, "Check intro count increased");
|
|
|
|
let step2URL = Services.urlFormatter.formatURLPref("privacy.trackingprotection.introURL") +
|
|
"?step=2&newtab=true&variation=1";
|
|
let buttons = document.getElementById("UITourTooltipButtons");
|
|
|
|
info("Click the step text and nothing should happen");
|
|
let tabCount = gBrowser.tabs.length;
|
|
await EventUtils.synthesizeMouseAtCenter(buttons.children[0], {});
|
|
is(gBrowser.tabs.length, tabCount, "Same number of tabs should be open");
|
|
|
|
info("Resetting count to test that viewing the tour prevents future panels");
|
|
allowOneIntro();
|
|
|
|
let panelHiddenPromise = promisePanelElementHidden(window, TOOLTIP_PANEL);
|
|
let tabPromise = BrowserTestUtils.waitForNewTab(gBrowser, step2URL);
|
|
info("Clicking the main button");
|
|
EventUtils.synthesizeMouseAtCenter(buttons.children[1], {});
|
|
let tab = await tabPromise;
|
|
is(Services.prefs.getIntPref(PREF_INTRO_COUNT), window.ContentBlocking.MAX_INTROS,
|
|
"Check intro count is at the max after opening step 2");
|
|
is(gBrowser.tabs.length, tabCount + 1, "Tour step 2 tab opened");
|
|
await panelHiddenPromise;
|
|
ok(true, "Panel hid when the button was clicked");
|
|
BrowserTestUtils.removeTab(tab);
|
|
});
|
|
|
|
info("Open another tracking page and make sure we don't show the panel again");
|
|
await BrowserTestUtils.withNewTab(TRACKING_PAGE, async function() {
|
|
await Assert.rejects(waitForConditionPromise(() => {
|
|
return BrowserTestUtils.is_visible(TOOLTIP_PANEL);
|
|
}, "timeout"), /timeout/, "Info panel shouldn't appear more than MAX_INTROS");
|
|
});
|
|
});
|