Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Errors

/* Any copyright is dedicated to the Public Domain.
"use strict";
const TEST_PATH = getRootDirectory(gTestPath).replace(
);
const TEST_PATH_SITE = getRootDirectory(gTestPath).replace(
);
const COOP_HELPER_FILE =
getRootDirectory(gTestPath).replace("chrome://mochitests/content/", "") +
"file_print_coop_helper.html";
async function test_print_flags_with_headers(headers, expectIsolated) {
let params = new URLSearchParams({
file: COOP_HELPER_FILE,
});
for (let header of headers) {
params.append("headers", header);
}
for (const origin of ["https://example.com", "https://test1.example.com"]) {
for (const hash of [
"print",
"print-same-origin-frame",
"print-same-origin-frame-srcdoc",
"print-cross-origin-frame",
]) {
if (expectIsolated && hash == "print-cross-origin-frame") {
// The iframe wouldn't load.
continue;
}
let url = `${origin}/document-builder.sjs?${params}#${hash}`;
info(`Testing ${url}`);
is(
document.querySelector(".printPreviewBrowser"),
null,
"There shouldn't be any print preview browser"
);
await BrowserTestUtils.withNewTab(url, async function (browser) {
await new PrintHelper(browser).waitForDialog();
isnot(
document.querySelector(".printPreviewBrowser"),
null,
"Should open the print preview correctly"
);
ok(true, "Shouldn't crash");
gBrowser.getTabDialogBox(browser).abortAllDialogs();
let isolated = await SpecialPowers.spawn(browser, [], () => {
return content.crossOriginIsolated;
});
is(isolated, expectIsolated, "Expected isolation");
});
}
}
}
add_task(async function test_window_print_coop() {
return test_print_flags_with_headers(
["Cross-Origin-Opener-Policy: same-origin"],
/* expectIsolated = */ false
);
});
add_task(async function test_window_print_coep() {
return test_print_flags_with_headers(
[
"Cross-Origin-Opener-Policy: same-origin",
"Cross-Origin-Embedder-Policy: require-corp",
],
/* expectIsolated = */ true
);
});