diff options
Diffstat (limited to 'testing/web-platform/tests/html/cross-origin-opener-policy/blob-popup.https.html')
-rw-r--r-- | testing/web-platform/tests/html/cross-origin-opener-policy/blob-popup.https.html | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/cross-origin-opener-policy/blob-popup.https.html b/testing/web-platform/tests/html/cross-origin-opener-policy/blob-popup.https.html new file mode 100644 index 0000000000..eda150eb34 --- /dev/null +++ b/testing/web-platform/tests/html/cross-origin-opener-policy/blob-popup.https.html @@ -0,0 +1,40 @@ +<!doctype html> +<title>Cross-Origin-Opener-Policy and a blob URL popup</title> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src=/common/get-host-info.sub.js></script> +<script src="/common/utils.js"></script> +<script> +async_test(t => { + window.test = t; // Make the test available globally so the blob URL can use it + window.furtherPopup = null; + + const bc = new BroadcastChannel(token()); + bc.onmessage = t.step_func_done(({ data }) => { + assert_equals(data.name.length, 0); + assert_false(data.opener); + assert_true(furtherPopup.closed); + }); + + const blobContents = `<script> +const w = window.open("${get_host_info().HTTPS_REMOTE_ORIGIN}/html/cross-origin-opener-policy/resources/coop-coep.py?coop=x&coep=x&channel=${bc.name}", "${bc.name}"); +window.opener.furtherPopup = w; +<\/script>`; + const blob = new Blob([blobContents], { type: "text/html" }); + const blobURL = URL.createObjectURL(blob); + const popup = window.open(blobURL); + t.add_cleanup(() => { + // Close the popups once the test is complete. + // The browsing context of the second popup is closed hence use the + // broadcast channel to trigger the closure. + bc.postMessage("close"); + popup.close(); + }); + popup.onload = t.step_func(() => { + assert_equals(popup.opener, window); + assert_equals(popup.location.href, blobURL); + assert_equals(popup.document.URL, blobURL); + assert_equals(popup.origin, window.origin); + }); +}); +</script> |