Bug 1451307 - Part 2 - Move trackingUI tests out of b/b/c/test/general into their own subdirectory. r=Gijs draft
authorJohann Hofmann <jhofmann@mozilla.com>
Thu, 19 Apr 2018 17:22:11 +0200
changeset 813028 ea0e77f0873e5f8f655d50c5cbec00d114219f7a
parent 813027 51b05505a9b85d7841851dd44c925da95029c958
child 813029 8cf3a6668af15661ceb6fc7ba4eed34c3e098774
push id114745
push userjhofmann@mozilla.com
push dateMon, 02 Jul 2018 09:21:29 +0000
reviewersGijs
bugs1451307
milestone63.0a1
Bug 1451307 - Part 2 - Move trackingUI tests out of b/b/c/test/general into their own subdirectory. r=Gijs MozReview-Commit-ID: 5e2Hwt9jcX5
browser/base/content/test/general/benignPage.html
browser/base/content/test/general/browser.ini
browser/base/content/test/general/browser_trackingUI_3.js
browser/base/content/test/general/browser_trackingUI_4.js
browser/base/content/test/general/browser_trackingUI_5.js
browser/base/content/test/general/browser_trackingUI_6.js
browser/base/content/test/general/browser_trackingUI_telemetry.js
browser/base/content/test/general/file_trackingUI_6.html
browser/base/content/test/general/file_trackingUI_6.js
browser/base/content/test/general/file_trackingUI_6.js^headers^
browser/base/content/test/general/trackingPage.html
browser/base/content/test/trackingUI/benignPage.html
browser/base/content/test/trackingUI/browser.ini
browser/base/content/test/trackingUI/browser_trackingUI_3.js
browser/base/content/test/trackingUI/browser_trackingUI_4.js
browser/base/content/test/trackingUI/browser_trackingUI_5.js
browser/base/content/test/trackingUI/browser_trackingUI_6.js
browser/base/content/test/trackingUI/browser_trackingUI_telemetry.js
browser/base/content/test/trackingUI/file_trackingUI_6.html
browser/base/content/test/trackingUI/file_trackingUI_6.js
browser/base/content/test/trackingUI/file_trackingUI_6.js^headers^
browser/base/content/test/trackingUI/head.js
browser/base/content/test/trackingUI/trackingPage.html
browser/components/uitour/test/browser.ini
browser/components/uitour/test/browser_trackingProtection.js
--- a/browser/base/content/test/general/browser.ini
+++ b/browser/base/content/test/general/browser.ini
@@ -438,42 +438,16 @@ support-files =
 # DO NOT ADD MORE TESTS HERE. USE A TOPICAL DIRECTORY INSTEAD.
 [browser_tabs_isActive.js]
 # DO NOT ADD MORE TESTS HERE. USE A TOPICAL DIRECTORY INSTEAD.
 [browser_tabs_owner.js]
 # DO NOT ADD MORE TESTS HERE. USE A TOPICAL DIRECTORY INSTEAD.
 [browser_testOpenNewRemoteTabsFromNonRemoteBrowsers.js]
 run-if = e10s
 # DO NOT ADD MORE TESTS HERE. USE A TOPICAL DIRECTORY INSTEAD.
-[browser_trackingUI_3.js]
-tags = trackingprotection
-# DO NOT ADD MORE TESTS HERE. USE A TOPICAL DIRECTORY INSTEAD.
-[browser_trackingUI_4.js]
-tags = trackingprotection
-support-files =
-  trackingPage.html
-  benignPage.html
-# DO NOT ADD MORE TESTS HERE. USE A TOPICAL DIRECTORY INSTEAD.
-[browser_trackingUI_5.js]
-tags = trackingprotection
-support-files =
-  trackingPage.html
-# DO NOT ADD MORE TESTS HERE. USE A TOPICAL DIRECTORY INSTEAD.
-[browser_trackingUI_6.js]
-tags = trackingprotection
-support-files =
-  file_trackingUI_6.html
-  file_trackingUI_6.js
-  file_trackingUI_6.js^headers^
-# DO NOT ADD MORE TESTS HERE. USE A TOPICAL DIRECTORY INSTEAD.
-[browser_trackingUI_telemetry.js]
-tags = trackingprotection
-support-files =
-  trackingPage.html
-# DO NOT ADD MORE TESTS HERE. USE A TOPICAL DIRECTORY INSTEAD.
 [browser_typeAheadFind.js]
 # DO NOT ADD MORE TESTS HERE. USE A TOPICAL DIRECTORY INSTEAD.
 [browser_unknownContentType_title.js]
 # DO NOT ADD MORE TESTS HERE. USE A TOPICAL DIRECTORY INSTEAD.
 [browser_unloaddialogs.js]
 # DO NOT ADD MORE TESTS HERE. USE A TOPICAL DIRECTORY INSTEAD.
 [browser_utilityOverlay.js]
 # DO NOT ADD MORE TESTS HERE. USE A TOPICAL DIRECTORY INSTEAD.
rename from browser/base/content/test/general/benignPage.html
rename to browser/base/content/test/trackingUI/benignPage.html
--- a/browser/base/content/test/trackingUI/browser.ini
+++ b/browser/base/content/test/trackingUI/browser.ini
@@ -1,12 +1,21 @@
 [DEFAULT]
 tags = trackingprotection
 support-files =
   head.js
-  ../general/benignPage.html
-  ../general/trackingPage.html
+  benignPage.html
+  trackingPage.html
 
+[browser_trackingUI_3.js]
+[browser_trackingUI_4.js]
+[browser_trackingUI_5.js]
+[browser_trackingUI_6.js]
+support-files =
+  file_trackingUI_6.html
+  file_trackingUI_6.js
+  file_trackingUI_6.js^headers^
 [browser_trackingUI_appMenu.js]
 [browser_trackingUI_appMenu_toggle.js]
 [browser_trackingUI_open_preferences.js]
 [browser_trackingUI_reload_hint.js]
 [browser_trackingUI_state.js]
+[browser_trackingUI_telemetry.js]
rename from browser/base/content/test/general/browser_trackingUI_3.js
rename to browser/base/content/test/trackingUI/browser_trackingUI_3.js
--- a/browser/base/content/test/general/browser_trackingUI_3.js
+++ b/browser/base/content/test/trackingUI/browser_trackingUI_3.js
@@ -1,19 +1,16 @@
 /*
  * Test that the Tracking Protection is correctly enabled / disabled
  * in both normal and private windows given all possible states of the prefs:
  *   privacy.trackingprotection.enabled
  *   privacy.trackingprotection.pbmode.enabled
  * See also Bug 1178985.
  */
 
-const PREF = "privacy.trackingprotection.enabled";
-const PB_PREF = "privacy.trackingprotection.pbmode.enabled";
-
 registerCleanupFunction(function() {
   Services.prefs.clearUserPref(PREF);
   Services.prefs.clearUserPref(PB_PREF);
 });
 
 add_task(async function testNormalBrowsing() {
   let TrackingProtection = gBrowser.ownerGlobal.TrackingProtection;
   ok(TrackingProtection, "TP is attached to the browser window");
rename from browser/base/content/test/general/browser_trackingUI_4.js
rename to browser/base/content/test/trackingUI/browser_trackingUI_4.js
--- a/browser/base/content/test/general/browser_trackingUI_4.js
+++ b/browser/base/content/test/trackingUI/browser_trackingUI_4.js
@@ -1,23 +1,17 @@
 /*
  * Test that the Tracking Protection icon is properly animated in the identity
  * block when loading tabs and switching between tabs.
  * See also Bug 1175858.
  */
 
-const PREF = "privacy.trackingprotection.enabled";
-const PB_PREF = "privacy.trackingprotection.pbmode.enabled";
-const BENIGN_PAGE = "http://tracking.example.org/browser/browser/base/content/test/general/benignPage.html";
-const TRACKING_PAGE = "http://tracking.example.org/browser/browser/base/content/test/general/trackingPage.html";
 var TrackingProtection = null;
 var tabbrowser = null;
 
-var {UrlClassifierTestUtils} = ChromeUtils.import("resource://testing-common/UrlClassifierTestUtils.jsm", {});
-
 registerCleanupFunction(function() {
   TrackingProtection = tabbrowser = null;
   UrlClassifierTestUtils.cleanupTestTrackers();
   Services.prefs.clearUserPref(PREF);
   Services.prefs.clearUserPref(PB_PREF);
   while (gBrowser.tabs.length > 1) {
     gBrowser.removeCurrentTab();
   }
rename from browser/base/content/test/general/browser_trackingUI_5.js
rename to browser/base/content/test/trackingUI/browser_trackingUI_5.js
--- a/browser/base/content/test/general/browser_trackingUI_5.js
+++ b/browser/base/content/test/trackingUI/browser_trackingUI_5.js
@@ -1,19 +1,16 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 // Test that sites added to the Tracking Protection whitelist in private
 // browsing mode don't persist once the private browsing window closes.
 
-const PB_PREF = "privacy.trackingprotection.pbmode.enabled";
-const TRACKING_PAGE = "http://tracking.example.org/browser/browser/base/content/test/general/trackingPage.html";
 var TrackingProtection = null;
 var browser = null;
-var {UrlClassifierTestUtils} = ChromeUtils.import("resource://testing-common/UrlClassifierTestUtils.jsm", {});
 
 registerCleanupFunction(function() {
   TrackingProtection = browser = null;
   UrlClassifierTestUtils.cleanupTestTrackers();
 });
 
 function hidden(sel) {
   let win = browser.ownerGlobal;
@@ -74,17 +71,17 @@ function testTrackingPageUnblocked() {
 
 add_task(async function testExceptionAddition() {
   await UrlClassifierTestUtils.addTestTrackers();
   let privateWin = await promiseOpenAndLoadWindow({private: true}, true);
   browser = privateWin.gBrowser;
   let tab = await BrowserTestUtils.openNewForegroundTab({ gBrowser: browser, waitForLoad: true, waitForStateStop: true });
 
   TrackingProtection = browser.ownerGlobal.TrackingProtection;
-  await pushPrefs([PB_PREF, true]);
+  await SpecialPowers.pushPrefEnv({"set": [[PB_PREF, true]]});
 
   ok(TrackingProtection.enabled, "TP is enabled after setting the pref");
 
   info("Load a test page containing tracking elements");
   await promiseTabLoadEvent(tab, TRACKING_PAGE);
 
   testTrackingPage(tab.ownerGlobal);
 
rename from browser/base/content/test/general/browser_trackingUI_6.js
rename to browser/base/content/test/trackingUI/browser_trackingUI_6.js
--- a/browser/base/content/test/general/browser_trackingUI_6.js
+++ b/browser/base/content/test/trackingUI/browser_trackingUI_6.js
@@ -1,9 +1,9 @@
-const URL = "http://mochi.test:8888/browser/browser/base/content/test/general/file_trackingUI_6.html";
+const URL = getRootDirectory(gTestPath).replace("chrome://mochitests/content", "http://mochi.test:8888") + "file_trackingUI_6.html";
 
 function waitForSecurityChange(numChanges = 1) {
   return new Promise(resolve => {
     let n = 0;
     let listener = {
       onSecurityChange() {
         n = n + 1;
         info("Received onSecurityChange event " + n + " of " + numChanges);
rename from browser/base/content/test/general/browser_trackingUI_telemetry.js
rename to browser/base/content/test/trackingUI/browser_trackingUI_telemetry.js
--- a/browser/base/content/test/general/browser_trackingUI_telemetry.js
+++ b/browser/base/content/test/trackingUI/browser_trackingUI_telemetry.js
@@ -1,17 +1,12 @@
 /*
  * Test telemetry for Tracking Protection
  */
 
-const PREF = "privacy.trackingprotection.enabled";
-const BENIGN_PAGE = "http://tracking.example.org/browser/browser/base/content/test/general/benignPage.html";
-const TRACKING_PAGE = "http://tracking.example.org/browser/browser/base/content/test/general/trackingPage.html";
-const {UrlClassifierTestUtils} = ChromeUtils.import("resource://testing-common/UrlClassifierTestUtils.jsm", {});
-
 /**
  * Enable local telemetry recording for the duration of the tests.
  */
 var oldCanRecord = Services.telemetry.canRecordExtended;
 Services.telemetry.canRecordExtended = true;
 Services.prefs.setBoolPref(PREF, false);
 Services.telemetry.getHistogramById("TRACKING_PROTECTION_ENABLED").clear();
 registerCleanupFunction(function() {
rename from browser/base/content/test/general/file_trackingUI_6.html
rename to browser/base/content/test/trackingUI/file_trackingUI_6.html
--- a/browser/base/content/test/general/file_trackingUI_6.html
+++ b/browser/base/content/test/trackingUI/file_trackingUI_6.html
@@ -3,14 +3,14 @@
 <head>
   <meta charset="UTF-8">
   <title>Testing the shield from fetch and XHR</title>
 </head>
 <body>
   <p>Hello there!</p>
   <script type="application/javascript">
     function test_fetch() {
-      let url = "http://trackertest.org/browser/browser/base/content/test/general/file_trackingUI_6.js";
+      let url = "http://trackertest.org/browser/browser/base/content/test/trackingUI/file_trackingUI_6.js";
       return fetch(url);
     }
   </script>
 </body>
 </html>
rename from browser/base/content/test/general/file_trackingUI_6.js
rename to browser/base/content/test/trackingUI/file_trackingUI_6.js
rename from browser/base/content/test/general/file_trackingUI_6.js^headers^
rename to browser/base/content/test/trackingUI/file_trackingUI_6.js^headers^
--- a/browser/base/content/test/trackingUI/head.js
+++ b/browser/base/content/test/trackingUI/head.js
@@ -1,8 +1,53 @@
+var {UrlClassifierTestUtils} = ChromeUtils.import("resource://testing-common/UrlClassifierTestUtils.jsm", {});
+
+const PREF = "privacy.trackingprotection.enabled";
+const PB_PREF = "privacy.trackingprotection.pbmode.enabled";
+const ROOT = getRootDirectory(gTestPath).replace("chrome://mochitests/content", "http://tracking.example.org");
+const BENIGN_PAGE = ROOT + "benignPage.html";
+const TRACKING_PAGE = ROOT + "trackingPage.html";
+
+function promiseWindowWillBeClosed(win) {
+  return new Promise((resolve, reject) => {
+    Services.obs.addObserver(function observe(subject, topic) {
+      if (subject == win) {
+        Services.obs.removeObserver(observe, topic);
+        executeSoon(resolve);
+      }
+    }, "domwindowclosed");
+  });
+}
+
+function promiseWindowClosed(win) {
+  let promise = promiseWindowWillBeClosed(win);
+  win.close();
+  return promise;
+}
+
+function promiseOpenAndLoadWindow(aOptions, aWaitForDelayedStartup = false) {
+  return new Promise(resolve => {
+    let win = OpenBrowserWindow(aOptions);
+    if (aWaitForDelayedStartup) {
+      Services.obs.addObserver(function onDS(aSubject, aTopic, aData) {
+        if (aSubject != win) {
+          return;
+        }
+        Services.obs.removeObserver(onDS, "browser-delayed-startup-finished");
+        resolve(win);
+      }, "browser-delayed-startup-finished");
+
+    } else {
+      win.addEventListener("load", function() {
+        resolve(win);
+      }, {once: true});
+    }
+  });
+}
+
 /**
  * Waits for a load (or custom) event to finish in a given tab. If provided
  * load an uri into the tab.
  *
  * @param tab
  *        The tab to load into.
  * @param [optional] url
  *        The url to load, or the current url.
rename from browser/base/content/test/general/trackingPage.html
rename to browser/base/content/test/trackingUI/trackingPage.html
--- a/browser/components/uitour/test/browser.ini
+++ b/browser/components/uitour/test/browser.ini
@@ -13,18 +13,18 @@ skip-if = debug || asan # updateUI leaks
 [browser_no_tabs.js]
 [browser_openPreferences.js]
 [browser_openSearchPanel.js]
 skip-if = true # Bug 1113038 - Intermittent "Popup was opened"
 [browser_trackingProtection.js]
 skip-if = os == "linux" # Intermittent NS_ERROR_NOT_AVAILABLE [nsIUrlClassifierDBService.beginUpdate]
 tag = trackingprotection
 support-files =
-  !/browser/base/content/test/general/benignPage.html
-  !/browser/base/content/test/general/trackingPage.html
+  !/browser/base/content/test/trackingUI/benignPage.html
+  !/browser/base/content/test/trackingUI/trackingPage.html
 [browser_trackingProtection_tour.js]
 tag = trackingprotection
 [browser_showMenu.js]
 tag = trackingprotection
 [browser_UITour.js]
 skip-if = os == "linux" || verify # Intermittent failures, bug 951965
 [browser_UITour2.js]
 [browser_UITour3.js]
--- a/browser/components/uitour/test/browser_trackingProtection.js
+++ b/browser/components/uitour/test/browser_trackingProtection.js
@@ -1,14 +1,14 @@
 "use strict";
 
 const PREF_INTRO_COUNT = "privacy.trackingprotection.introCount";
 const PREF_TP_ENABLED = "privacy.trackingprotection.enabled";
-const BENIGN_PAGE = "http://tracking.example.org/browser/browser/base/content/test/general/benignPage.html";
-const TRACKING_PAGE = "http://tracking.example.org/browser/browser/base/content/test/general/trackingPage.html";
+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");
 
 var {UrlClassifierTestUtils} = ChromeUtils.import("resource://testing-common/UrlClassifierTestUtils.jsm", {});
 
 registerCleanupFunction(function() {
   UrlClassifierTestUtils.cleanupTestTrackers();
   Services.prefs.clearUserPref(PREF_TP_ENABLED);