fune/browser/base/content/test/general/browser_bug767836_perwindowpb.js
Mike Conley 8ba260392e Bug 1619992 - Split AboutNewTabService into AboutNewTabParentService and AboutNewTabChildService. r=perftest-reviewers,Mardak,sparky
This patch does the following:
* Moves most logic for initiating about:home / about:newtab into AboutNewTab.jsm
* Makes AboutNewTab the API surface for overriding the default about:newtab URLs.
* Reduces the surface of nsIAboutNewTabService, and makes the properties read-only
* Splits the remaining code in the nsIAboutNewTabService into an implementation for
  the parent process, and one for content processes.

This split will hopefully help reduce confusion about which code in
AboutNewTabService is running in which process.

Differential Revision: https://phabricator.services.mozilla.com/D65569

--HG--
rename : browser/components/newtab/test/xpcshell/test_AboutNewTabService.js => browser/components/newtab/test/xpcshell/test_AboutNewTab.js
extra : moz-landing-system : lando
2020-03-11 03:10:29 +00:00

81 lines
2.3 KiB
JavaScript

/* 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";
const { AboutNewTab } = ChromeUtils.import(
"resource:///modules/AboutNewTab.jsm"
);
async function doTest(isPrivate) {
let win = await BrowserTestUtils.openNewBrowserWindow({ private: isPrivate });
let defaultURL = AboutNewTab.newTabURL;
let newTabURL;
let mode;
let testURL = "http://example.com/";
if (isPrivate) {
mode = "per window private browsing";
newTabURL = "about:privatebrowsing";
} else {
mode = "normal";
newTabURL = "about:newtab";
}
await openNewTab(win, newTabURL);
// Check the new tab opened while in normal/private mode
is(
win.gBrowser.selectedBrowser.currentURI.spec,
newTabURL,
"URL of NewTab should be " + newTabURL + " in " + mode + " mode"
);
// Set the custom newtab url
AboutNewTab.newTabURL = testURL;
is(AboutNewTab.newTabURL, testURL, "Custom newtab url is set");
// Open a newtab after setting the custom newtab url
await openNewTab(win, testURL);
is(
win.gBrowser.selectedBrowser.currentURI.spec,
testURL,
"URL of NewTab should be the custom url"
);
// Clear the custom url.
AboutNewTab.resetNewTabURL();
is(AboutNewTab.newTabURL, defaultURL, "No custom newtab url is set");
win.gBrowser.removeTab(win.gBrowser.selectedTab);
win.gBrowser.removeTab(win.gBrowser.selectedTab);
await BrowserTestUtils.closeWindow(win);
}
add_task(async function test_newTabService() {
// check whether any custom new tab url has been configured
ok(!AboutNewTab.newTabURLOverridden, "No custom newtab url is set");
// test normal mode
await doTest(false);
// test private mode
await doTest(true);
});
async function openNewTab(aWindow, aExpectedURL) {
// Open a new tab
aWindow.BrowserOpenTab();
let browser = aWindow.gBrowser.selectedBrowser;
let loadPromise = BrowserTestUtils.browserLoaded(
browser,
false,
aExpectedURL
);
let alreadyLoaded = await ContentTask.spawn(browser, aExpectedURL, url => {
let doc = content.document;
return doc && doc.readyState === "complete" && doc.location.href == url;
});
if (!alreadyLoaded) {
await loadPromise;
}
}