81 lines
2.3 KiB
JavaScript
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 TEST_PATH = getRootDirectory(gTestPath).replace(
|
|
"chrome://mochitests/content",
|
|
"https://example.com"
|
|
);
|
|
|
|
add_task(async function () {
|
|
const testUserContextId = 2;
|
|
const testCases = [
|
|
{
|
|
url: `${TEST_PATH}empty.html`,
|
|
crossOriginIsolated: false,
|
|
},
|
|
{
|
|
url: `${TEST_PATH}coop_coep.html`,
|
|
crossOriginIsolated: true,
|
|
},
|
|
];
|
|
|
|
for (const testCase of testCases) {
|
|
let tab = BrowserTestUtils.addTab(gBrowser, testCase.url, {
|
|
userContextId: testUserContextId,
|
|
});
|
|
await promiseBrowserLoaded(tab.linkedBrowser);
|
|
|
|
is(
|
|
tab.userContextId,
|
|
testUserContextId,
|
|
`The tab was opened with the expected userContextId`
|
|
);
|
|
|
|
await SpecialPowers.spawn(
|
|
tab.linkedBrowser,
|
|
[testCase.crossOriginIsolated],
|
|
async expectedCrossOriginIsolated => {
|
|
is(
|
|
content.window.crossOriginIsolated,
|
|
expectedCrossOriginIsolated,
|
|
`The tab was opened in the expected crossOriginIsolated environment`
|
|
);
|
|
}
|
|
);
|
|
|
|
let sessionPromise = BrowserTestUtils.waitForSessionStoreUpdate(tab);
|
|
BrowserTestUtils.removeTab(tab);
|
|
await sessionPromise;
|
|
|
|
let restoredTab = SessionStore.undoCloseTab(window, 0);
|
|
|
|
// TODO: also check that `promiseTabRestored` is fulfilled. This currently
|
|
// doesn't happen correctly in some cases, as the content restore is aborted
|
|
// when the process switch occurs to load a cross-origin-isolated document
|
|
// into a different process.
|
|
await promiseBrowserLoaded(restoredTab.linkedBrowser);
|
|
|
|
is(
|
|
restoredTab.userContextId,
|
|
testUserContextId,
|
|
`The tab was restored with the expected userContextId`
|
|
);
|
|
|
|
await SpecialPowers.spawn(
|
|
restoredTab.linkedBrowser,
|
|
[testCase.crossOriginIsolated],
|
|
async expectedCrossOriginIsolated => {
|
|
is(
|
|
content.window.crossOriginIsolated,
|
|
expectedCrossOriginIsolated,
|
|
`The tab was restored in the expected crossOriginIsolated environment`
|
|
);
|
|
}
|
|
);
|
|
|
|
BrowserTestUtils.removeTab(restoredTab);
|
|
}
|
|
});
|