Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

add_setup(async function () {
await SpecialPowers.pushPrefEnv({
set: [
["browser.newtab.preload", false],
["privacy.firstparty.isolate", true],
],
});
});
/**
* Test about:newtab will have firstPartytDomain set when we enable the pref.
*
* We split about:newtab from browser_firstPartyIsolation_aboutPages.js because
* about:newtab needs special care.
*
* In the original test browser_firstPartyIsolation_aboutPages.js, when calling
* tabbrowser.addTab, if it found out the uri is about:newtab, it will use
* the preloaded browser, however the preloaded browser is loaded before when we
* turn on the firstPartyIsolation pref, which won't have the pref set.
*
* To prevent to use the preloaded browser, a simple trick is open a window
* first.
**/
add_task(async function test_aboutNewTab() {
// In Fission, we cannot open a non-remote window.
let win = await BrowserTestUtils.openNewBrowserWindow({
remote: SpecialPowers.useRemoteSubframes,
});
let gbrowser = win.gBrowser;
let tab = BrowserTestUtils.addTab(gbrowser, "about:newtab");
await BrowserTestUtils.browserLoaded(tab.linkedBrowser);
let attrs = {
firstPartyDomain: "about.ef2a7dd5-93bc-417f-a698-142c3116864f.mozilla",
};
await SpecialPowers.spawn(
tab.linkedBrowser,
[{ attrs }],
async function (args) {
Assert.ok(true, "principal " + content.document.nodePrincipal.origin);
Assert.equal(
content.document.nodePrincipal.originAttributes.firstPartyDomain,
args.attrs.firstPartyDomain,
"about:newtab should have firstPartyDomain set"
);
Assert.ok(
content.document.nodePrincipal.isContentPrincipal,
"The principal should be a content principal."
);
}
);
gbrowser.removeTab(tab);
win.close();
});