/* 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 ); });