diff options
Diffstat (limited to 'browser/base/content/test/general/browser_bug767836_perwindowpb.js')
-rw-r--r-- | browser/base/content/test/general/browser_bug767836_perwindowpb.js | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/browser/base/content/test/general/browser_bug767836_perwindowpb.js b/browser/base/content/test/general/browser_bug767836_perwindowpb.js new file mode 100644 index 000000000..7f5d15e76 --- /dev/null +++ b/browser/base/content/test/general/browser_bug767836_perwindowpb.js @@ -0,0 +1,90 @@ +/* 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/. */ +"use strict"; +/* globals waitForExplicitFinish, executeSoon, finish, whenNewWindowLoaded, ok */ +/* globals is */ +/* exported test */ + +function test() { + // initialization + waitForExplicitFinish(); + + let aboutNewTabService = Components.classes["@mozilla.org/browser/aboutnewtab-service;1"] + .getService(Components.interfaces.nsIAboutNewTabService); + let newTabURL; + let testURL = "http://example.com/"; + let defaultURL = aboutNewTabService.newTabURL; + let mode; + + function doTest(aIsPrivateMode, aWindow, aCallback) { + openNewTab(aWindow, function() { + if (aIsPrivateMode) { + mode = "per window private browsing"; + newTabURL = "about:privatebrowsing"; + } else { + mode = "normal"; + newTabURL = "about:newtab"; + } + + // 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 + aboutNewTabService.newTabURL = testURL; + is(aboutNewTabService.newTabURL, testURL, "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. + aboutNewTabService.resetNewTabURL(); + is(aboutNewTabService.newTabURL, defaultURL, "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(() => aCallback(win)); + }); + } + + // check whether any custom new tab url has been configured + ok(!aboutNewTabService.overridden, "No custom newtab url is set"); + + // test normal mode + testOnWindow(false, function(aWindow) { + doTest(false, aWindow, function() { + // test private mode + testOnWindow(true, function(aWindow2) { + doTest(true, aWindow2, 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); +} |