80 lines
2.3 KiB
JavaScript
80 lines
2.3 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
const TEST_PATH = getRootDirectory(gTestPath).replace(
|
|
"chrome://mochitests/content",
|
|
"https://example.com"
|
|
);
|
|
|
|
const TEST_PATH_SITE = getRootDirectory(gTestPath).replace(
|
|
"chrome://mochitests/content",
|
|
"https://test1.example.com"
|
|
);
|
|
|
|
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
|
|
);
|
|
});
|