michael@0: function test() { michael@0: var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch); michael@0: let baseProvider = "http://mochi.test:8888/browser/dom/tests/browser/network_geolocation.sjs"; michael@0: prefs.setCharPref("geo.wifi.uri", baseProvider + "?desired_access_token=fff"); michael@0: michael@0: prefs.setBoolPref("geo.prompt.testing", true); michael@0: prefs.setBoolPref("geo.prompt.testing.allow", true); michael@0: var origScanValue = true; // same default in NetworkGeolocationProvider.js. michael@0: try { michael@0: origScanValue = prefs.getBoolPref("geo.wifi.scan"); michael@0: } catch(ex) {} michael@0: prefs.setBoolPref("geo.wifi.scan", false); michael@0: michael@0: const testPageURL = "http://mochi.test:8888/browser/" + michael@0: "dom/tests/browser/browser_geolocation_privatebrowsing_page.html"; michael@0: waitForExplicitFinish(); michael@0: michael@0: var windowsToClose = []; michael@0: function testOnWindow(aIsPrivate, aCallback) { michael@0: let win = OpenBrowserWindow({private: aIsPrivate}); michael@0: let gotLoad = false; michael@0: let gotActivate = michael@0: (Cc["@mozilla.org/focus-manager;1"].getService(Ci.nsIFocusManager).activeWindow == win); michael@0: if (!gotActivate) { michael@0: win.addEventListener("activate", function onActivate() { michael@0: info("got activate"); michael@0: win.removeEventListener("activate", onActivate, true); michael@0: gotActivate = true; michael@0: if (gotLoad) { michael@0: windowsToClose.push(win); michael@0: win.BrowserChromeTest.runWhenReady(function() { aCallback(win) }); michael@0: } michael@0: }, true); michael@0: } else { michael@0: info("Was activated"); michael@0: } michael@0: win.addEventListener("load", function onLoad() { michael@0: info("Got load"); michael@0: win.removeEventListener("load", onLoad, true); michael@0: gotLoad = true; michael@0: if (gotActivate) { michael@0: windowsToClose.push(win); michael@0: setTimeout(function() { aCallback(win) }, 1000); michael@0: } michael@0: }, true); michael@0: } michael@0: michael@0: testOnWindow(false, function(aNormalWindow) { michael@0: aNormalWindow.gBrowser.selectedBrowser.addEventListener("georesult", function load(ev) { michael@0: aNormalWindow.gBrowser.selectedBrowser.removeEventListener("georesult", load, false); michael@0: is(ev.detail, 200, "unexpected access token"); michael@0: michael@0: prefs.setCharPref("geo.wifi.uri", baseProvider + "?desired_access_token=ggg"); michael@0: michael@0: testOnWindow(true, function(aPrivateWindow) { michael@0: aPrivateWindow.gBrowser.selectedBrowser.addEventListener("georesult", function load2(ev) { michael@0: aPrivateWindow.gBrowser.selectedBrowser.removeEventListener("georesult", load2, false); michael@0: is(ev.detail, 200, "unexpected access token"); michael@0: michael@0: prefs.setCharPref("geo.wifi.uri", baseProvider + "?expected_access_token=fff"); michael@0: michael@0: testOnWindow(false, function(aAnotherNormalWindow) { michael@0: aAnotherNormalWindow.gBrowser.selectedBrowser.addEventListener("georesult", function load3(ev) { michael@0: aAnotherNormalWindow.gBrowser.selectedBrowser.removeEventListener("georesult", load3, false); michael@0: is(ev.detail, 200, "unexpected access token"); michael@0: prefs.setBoolPref("geo.prompt.testing", false); michael@0: prefs.setBoolPref("geo.prompt.testing.allow", false); michael@0: prefs.setBoolPref("geo.wifi.scan", origScanValue); michael@0: windowsToClose.forEach(function(win) { michael@0: win.close(); michael@0: }); michael@0: finish(); michael@0: }, false, true); michael@0: aAnotherNormalWindow.content.location = testPageURL; michael@0: }); michael@0: }, false, true); michael@0: aPrivateWindow.content.location = testPageURL; michael@0: }); michael@0: }, false, true); michael@0: aNormalWindow.content.location = testPageURL; michael@0: }); michael@0: }