dom/tests/browser/browser_geolocation_privatebrowsing_perwindowpb.js

Tue, 06 Jan 2015 21:39:09 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Tue, 06 Jan 2015 21:39:09 +0100
branch
TOR_BUG_9701
changeset 8
97036ab72558
permissions
-rw-r--r--

Conditionally force memory storage according to privacy.thirdparty.isolate;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.

     1 function test() {
     2   var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
     3   let baseProvider = "http://mochi.test:8888/browser/dom/tests/browser/network_geolocation.sjs";
     4   prefs.setCharPref("geo.wifi.uri", baseProvider + "?desired_access_token=fff");
     6   prefs.setBoolPref("geo.prompt.testing", true);
     7   prefs.setBoolPref("geo.prompt.testing.allow", true);
     8   var origScanValue = true; // same default in NetworkGeolocationProvider.js.
     9   try {
    10     origScanValue = prefs.getBoolPref("geo.wifi.scan");
    11   } catch(ex) {}
    12   prefs.setBoolPref("geo.wifi.scan", false);
    14   const testPageURL = "http://mochi.test:8888/browser/" +
    15     "dom/tests/browser/browser_geolocation_privatebrowsing_page.html";
    16   waitForExplicitFinish();
    18   var windowsToClose = [];
    19   function testOnWindow(aIsPrivate, aCallback) {
    20     let win = OpenBrowserWindow({private: aIsPrivate});
    21     let gotLoad = false;
    22     let gotActivate = 
    23       (Cc["@mozilla.org/focus-manager;1"].getService(Ci.nsIFocusManager).activeWindow == win);
    24     if (!gotActivate) {
    25       win.addEventListener("activate", function onActivate() {
    26         info("got activate");
    27         win.removeEventListener("activate", onActivate, true);
    28         gotActivate = true;
    29         if (gotLoad) {
    30           windowsToClose.push(win);
    31           win.BrowserChromeTest.runWhenReady(function() { aCallback(win) });
    32         }
    33       }, true);
    34     } else {
    35       info("Was activated");
    36     }
    37     win.addEventListener("load", function onLoad() {
    38       info("Got load");
    39       win.removeEventListener("load", onLoad, true);
    40       gotLoad = true;
    41       if (gotActivate) {
    42         windowsToClose.push(win);
    43         setTimeout(function() { aCallback(win) }, 1000);
    44       }
    45     }, true);
    46   }
    48   testOnWindow(false, function(aNormalWindow) {
    49     aNormalWindow.gBrowser.selectedBrowser.addEventListener("georesult", function load(ev) {
    50       aNormalWindow.gBrowser.selectedBrowser.removeEventListener("georesult", load, false);
    51       is(ev.detail, 200, "unexpected access token");
    53       prefs.setCharPref("geo.wifi.uri", baseProvider + "?desired_access_token=ggg");
    55       testOnWindow(true, function(aPrivateWindow) {
    56         aPrivateWindow.gBrowser.selectedBrowser.addEventListener("georesult", function load2(ev) {
    57           aPrivateWindow.gBrowser.selectedBrowser.removeEventListener("georesult", load2, false);
    58           is(ev.detail, 200, "unexpected access token");
    60           prefs.setCharPref("geo.wifi.uri", baseProvider + "?expected_access_token=fff");
    62           testOnWindow(false, function(aAnotherNormalWindow) {
    63             aAnotherNormalWindow.gBrowser.selectedBrowser.addEventListener("georesult", function load3(ev) {
    64               aAnotherNormalWindow.gBrowser.selectedBrowser.removeEventListener("georesult", load3, false);
    65               is(ev.detail, 200, "unexpected access token");
    66               prefs.setBoolPref("geo.prompt.testing", false);
    67               prefs.setBoolPref("geo.prompt.testing.allow", false);
    68               prefs.setBoolPref("geo.wifi.scan", origScanValue);
    69               windowsToClose.forEach(function(win) {
    70                                        win.close();
    71                                      });
    72               finish();
    73             }, false, true);
    74             aAnotherNormalWindow.content.location = testPageURL;
    75           });
    76         }, false, true);
    77         aPrivateWindow.content.location = testPageURL;
    78       });
    79     }, false, true);
    80     aNormalWindow.content.location = testPageURL;
    81   });
    82 }

mercurial