forked from mirrors/gecko-dev
ContentTask tasks have a different lifetime than SpecialPowers tasks, with the former being tied to the lifetime of a message manager and the latter tied to the lifetime of a window global. That means that existing ContentTask callers which expect to be able to register load listeners before the creation of a window global, or which expect to persist after a page has navigated, won't work as SpecialPowers tasks. Since those sorts of tasks are not really resilient in the face of Fission, they should really be written to work differently, but this patch mostly just reverts them to using ContentTask for the time being. Differential Revision: https://phabricator.services.mozilla.com/D53744 --HG-- extra : moz-landing-system : lando
72 lines
2 KiB
JavaScript
72 lines
2 KiB
JavaScript
add_task(async function test() {
|
|
const uris = [undefined, "about:blank"];
|
|
|
|
function checkContentProcess(newBrowser, uri) {
|
|
return ContentTask.spawn(newBrowser, [uri], async function(uri) {
|
|
var prin = content.document.nodePrincipal;
|
|
Assert.notEqual(
|
|
prin,
|
|
null,
|
|
"Loaded principal must not be null when adding " + uri
|
|
);
|
|
Assert.notEqual(
|
|
prin,
|
|
undefined,
|
|
"Loaded principal must not be undefined when loading " + uri
|
|
);
|
|
|
|
Assert.equal(
|
|
prin.isSystemPrincipal,
|
|
false,
|
|
"Loaded principal must not be system when loading " + uri
|
|
);
|
|
});
|
|
}
|
|
|
|
for (var uri of uris) {
|
|
await BrowserTestUtils.withNewTab({ gBrowser }, async function(newBrowser) {
|
|
let loadedPromise = BrowserTestUtils.browserLoaded(newBrowser);
|
|
await BrowserTestUtils.loadURI(newBrowser, uri);
|
|
|
|
var prin = newBrowser.contentPrincipal;
|
|
isnot(
|
|
prin,
|
|
null,
|
|
"Forced principal must not be null when loading " + uri
|
|
);
|
|
isnot(
|
|
prin,
|
|
undefined,
|
|
"Forced principal must not be undefined when loading " + uri
|
|
);
|
|
is(
|
|
prin.isSystemPrincipal,
|
|
false,
|
|
"Forced principal must not be system when loading " + uri
|
|
);
|
|
|
|
// Belt-and-suspenders e10s check: make sure that the same checks hold
|
|
// true in the content process.
|
|
await checkContentProcess(newBrowser, uri);
|
|
|
|
await loadedPromise;
|
|
|
|
prin = newBrowser.contentPrincipal;
|
|
isnot(prin, null, "Loaded principal must not be null when adding " + uri);
|
|
isnot(
|
|
prin,
|
|
undefined,
|
|
"Loaded principal must not be undefined when loading " + uri
|
|
);
|
|
is(
|
|
prin.isSystemPrincipal,
|
|
false,
|
|
"Loaded principal must not be system when loading " + uri
|
|
);
|
|
|
|
// Belt-and-suspenders e10s check: make sure that the same checks hold
|
|
// true in the content process.
|
|
await checkContentProcess(newBrowser, uri);
|
|
});
|
|
}
|
|
});
|