diff -r 000000000000 -r 6474c204b198 browser/base/content/test/general/browser_bug767836_perwindowpb.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/browser/base/content/test/general/browser_bug767836_perwindowpb.js Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,83 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +function test() { + //initialization + waitForExplicitFinish(); + let newTabPrefName = "browser.newtab.url"; + let newTabURL; + let testURL = "http://example.com/"; + let mode; + + function doTest(aIsPrivateMode, aWindow, aCallback) { + openNewTab(aWindow, function () { + if (aIsPrivateMode) { + mode = "per window private browsing"; + newTabURL = "about:privatebrowsing"; + } else { + mode = "normal"; + newTabURL = Services.prefs.getCharPref(newTabPrefName) || "about:blank"; + } + + // Check the new tab opened while in normal/private mode + is(aWindow.gBrowser.selectedBrowser.currentURI.spec, newTabURL, + "URL of NewTab should be " + newTabURL + " in " + mode + " mode"); + // Set the custom newtab url + Services.prefs.setCharPref(newTabPrefName, testURL); + ok(Services.prefs.prefHasUserValue(newTabPrefName), "Custom newtab url is set"); + + // Open a newtab after setting the custom newtab url + openNewTab(aWindow, function () { + is(aWindow.gBrowser.selectedBrowser.currentURI.spec, testURL, + "URL of NewTab should be the custom url"); + + // clear the custom url preference + Services.prefs.clearUserPref(newTabPrefName); + ok(!Services.prefs.prefHasUserValue(newTabPrefName), "No custom newtab url is set"); + + aWindow.gBrowser.removeTab(aWindow.gBrowser.selectedTab); + aWindow.gBrowser.removeTab(aWindow.gBrowser.selectedTab); + aWindow.close(); + aCallback() + }); + }); + } + + function testOnWindow(aIsPrivate, aCallback) { + whenNewWindowLoaded({private: aIsPrivate}, function(win) { + executeSoon(function() aCallback(win)); + }); + } + + // check whether any custom new tab url has been configured + ok(!Services.prefs.prefHasUserValue(newTabPrefName), "No custom newtab url is set"); + + // test normal mode + testOnWindow(false, function(aWindow) { + doTest(false, aWindow, function() { + // test private mode + testOnWindow(true, function(aWindow) { + doTest(true, aWindow, function() { + finish(); + }); + }); + }); + }); +} + +function openNewTab(aWindow, aCallback) { + // Open a new tab + aWindow.BrowserOpenTab(); + + let browser = aWindow.gBrowser.selectedBrowser; + if (browser.contentDocument.readyState == "complete") { + executeSoon(aCallback); + return; + } + + browser.addEventListener("load", function onLoad() { + browser.removeEventListener("load", onLoad, true); + executeSoon(aCallback); + }, true); +} \ No newline at end of file