summaryrefslogtreecommitdiffstats
path: root/browser/base/content/test/general/browser_bug767836_perwindowpb.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/base/content/test/general/browser_bug767836_perwindowpb.js')
-rw-r--r--browser/base/content/test/general/browser_bug767836_perwindowpb.js90
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);
+}