fune/browser/components/uitour/test/browser_trackingProtection_tour.js
Johann Hofmann 5584301845 Bug 1476218 - Part 3 - Update Tracking Protection tests to reflect Content Blocking changes. r=nhnt11
This commit also moves the remaining trackingUI_* tests out of b/b/c/test/general,
since I needed to touch them anyway

Differential Revision: https://phabricator.services.mozilla.com/D2935

--HG--
rename : browser/base/content/test/general/benignPage.html => browser/base/content/test/trackingUI/benignPage.html
rename : browser/base/content/test/general/browser_trackingUI_3.js => browser/base/content/test/trackingUI/browser_trackingUI_3.js
rename : browser/base/content/test/general/browser_trackingUI_4.js => browser/base/content/test/trackingUI/browser_trackingUI_animation_2.js
rename : browser/base/content/test/general/browser_trackingUI_6.js => browser/base/content/test/trackingUI/browser_trackingUI_fetch.js
rename : browser/base/content/test/general/browser_trackingUI_5.js => browser/base/content/test/trackingUI/browser_trackingUI_pbmode_exceptions.js
rename : browser/base/content/test/general/browser_trackingUI_telemetry.js => browser/base/content/test/trackingUI/browser_trackingUI_telemetry.js
rename : browser/base/content/test/general/file_trackingUI_6.html => browser/base/content/test/trackingUI/file_trackingUI_fetch.html
rename : browser/base/content/test/general/file_trackingUI_6.js => browser/base/content/test/trackingUI/file_trackingUI_fetch.js
rename : browser/base/content/test/general/file_trackingUI_6.js^headers^ => browser/base/content/test/trackingUI/file_trackingUI_fetch.js^headers^
rename : browser/base/content/test/general/trackingPage.html => browser/base/content/test/trackingUI/trackingPage.html
extra : rebase_source : 2a12463ab2ba39bdcf077580a2d6e565f80c879c
2018-08-08 14:31:34 +02:00

89 lines
3.1 KiB
JavaScript

"use strict";
var gTestTab;
var gContentAPI;
var gContentWindow;
const { UrlClassifierTestUtils } = ChromeUtils.import("resource://testing-common/UrlClassifierTestUtils.jsm", {});
const TP_ENABLED_PREF = "privacy.trackingprotection.enabled";
add_task(setup_UITourTest);
add_task(async function test_setup() {
Services.prefs.setBoolPref("privacy.trackingprotection.enabled", true);
await UrlClassifierTestUtils.addTestTrackers();
registerCleanupFunction(function() {
UrlClassifierTestUtils.cleanupTestTrackers();
Services.prefs.clearUserPref("privacy.trackingprotection.enabled");
});
});
add_UITour_task(async function test_unblock_target() {
await checkToggleTarget("controlCenter-trackingUnblock");
});
add_UITour_task(function setup_block_target() {
// Preparation for test_block_target. These are separate since the reload
// interferes with UITour as it does a teardown. All we really care about
// is the permission manager entry but UITour tests shouldn't rely on that
// implementation detail.
window.ContentBlocking.disableForCurrentPage();
});
add_UITour_task(async function test_block_target() {
await checkToggleTarget("controlCenter-trackingBlock");
window.ContentBlocking.enableForCurrentPage();
});
async function checkToggleTarget(targetID) {
let popup = document.getElementById("UITourTooltip");
let trackerOpened = new Promise(function(resolve, reject) {
Services.obs.addObserver(function onopen(subject) {
let asciiSpec = subject.QueryInterface(Ci.nsIHttpChannel).URI.asciiSpec;
if (asciiSpec === "https://tracking.example.com/") {
Services.obs.removeObserver(onopen, "http-on-opening-request");
resolve();
}
}, "http-on-opening-request");
});
await ContentTask.spawn(gBrowser.selectedBrowser, {}, function() {
let doc = content.document;
let iframe = doc.createElement("iframe");
iframe.setAttribute("id", "tracking-element");
iframe.setAttribute("src", "https://tracking.example.com/");
doc.body.insertBefore(iframe, doc.body.firstChild);
});
await trackerOpened;
let testTargetAvailability = async function(expectedAvailable) {
let data = await getConfigurationPromise("availableTargets");
let available = (data.targets.includes(targetID));
is(available, expectedAvailable, "Target has expected availability.");
};
await testTargetAvailability(false);
await showMenuPromise("controlCenter");
await testTargetAvailability(true);
await showInfoPromise(targetID, "This is " + targetID,
"My arrow should be on the side");
is(popup.alignmentPosition, "end_before",
"Check " + targetID + " position");
let hideMenuPromise =
promisePanelElementHidden(window, gIdentityHandler._identityPopup);
await gContentAPI.hideMenu("controlCenter");
await hideMenuPromise;
ok(!BrowserTestUtils.is_visible(popup), "The tooltip should now be hidden.");
await testTargetAvailability(false);
await ContentTask.spawn(gBrowser.selectedBrowser, {}, function() {
content.document.getElementById("tracking-element").remove();
});
}