summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/html/cross-origin-opener-policy/coep-blob-popup.https.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/html/cross-origin-opener-policy/coep-blob-popup.https.html')
-rw-r--r--testing/web-platform/tests/html/cross-origin-opener-policy/coep-blob-popup.https.html51
1 files changed, 51 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/cross-origin-opener-policy/coep-blob-popup.https.html b/testing/web-platform/tests/html/cross-origin-opener-policy/coep-blob-popup.https.html
new file mode 100644
index 0000000000..08f70181fc
--- /dev/null
+++ b/testing/web-platform/tests/html/cross-origin-opener-policy/coep-blob-popup.https.html
@@ -0,0 +1,51 @@
+<!doctype html>
+<title>Cross-Origin-Opener-Policy and Cross-Origin-Embedder-Policy: 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=../cross-origin-embedder-policy/resources/script-factory.js></script>
+<script>
+["window.open()", "<a>", "<a rel=noopener>"].forEach(type => {
+ promise_test(t => {
+ const origins = get_host_info();
+ const id = `tut mir leid ${type}`;
+ const blob = new Blob([`<script>${createScript(origins.ORIGIN, origins.HTTPS_REMOTE_ORIGIN, "channel", id)}<\/script>`], {type: "text/html"});
+ const blobURL = URL.createObjectURL(blob);
+ const bc = new BroadcastChannel(id);
+
+ if (type === "window.open()") {
+ const popup = window.open(blobURL);
+ t.add_cleanup(() => 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);
+ });
+ } else {
+ const a = document.createElement("a");
+ a.target = type;
+ if (type === "<a rel=noopener>") {
+ a.rel = "noopener";
+ }
+ a.href = blobURL;
+ a.click();
+ }
+
+ return new Promise(resolve => {
+ bc.onmessage = t.step_func(({ data }) => {
+ assert_equals(data.id, id);
+ assert_equals(data.origin, window.origin);
+ assert_true(data.sameOriginNoCORPSuccess, "Same-origin without CORP did not succeed");
+ assert_true(data.crossOriginNoCORPFailure, "Cross-origin without CORP did not fail");
+ if (type === "<a rel=noopener>") {
+ assert_false(data.opener, 'opener');
+ } else {
+ assert_true(data.opener, 'opener');
+ }
+ resolve();
+ });
+ });
+ }, `COOP+COEP blob URL popup: ${type}`);
+});
+</script>