| <!DOCTYPE html> |
| <meta charset="utf-8"> |
| <title>Structured cloning of SharedArrayBuffers into same-origin-domain windows</title> |
| <link rel="help" href="https://html.spec.whatwg.org/multipage/#structuredserialize"> |
| <link rel="author" title="Domenic Denicola" href="mailto:d@domenic.me"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <body> |
| <script> |
| "use strict"; |
| document.domain = "{{host}}"; |
| |
| async_test(t => { |
| const iframe = document.createElement("iframe"); |
| t.add_cleanup(() => iframe.remove()); |
| iframe.src = "//{{domains[www1]}}:{{location[port]}}/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/resources/iframe-domain-failure.sub.html"; |
| let domain; |
| let childCrossOriginIsolated; |
| window.onmessage = t.step_func((e) => { |
| if (e.data.name === "domain") { |
| domain = e.data.value; |
| return; |
| } |
| if (e.data.name === "crossOriginIsolated") { |
| childCrossOriginIsolated = e.data.value; |
| return; |
| } |
| if (e.data.name === "hasSharedArrayBuffer") { |
| const hasSharedArrayBuffer = e.data.value; |
| |
| // document.domain mutation is no-op because the surrounding agent |
| // cluster's cross-origin isolated is true. |
| assert_equals(domain, "{{domains[www1]}}"); |
| |
| // crossOriginIsolated is false in the nested frame because the frame is |
| // cross-origin and hence the cross-origin isolated capability is false. |
| // We use assert_equals instead of assert_false here to see if |
| // `childCrossOriginIsolated` is set. |
| assert_equals(childCrossOriginIsolated, false); |
| |
| assert_false(hasSharedArrayBuffer); |
| t.done(); |
| return; |
| } |
| assert_unreached("Got a message event, expected a messageerror event"); |
| }); |
| document.body.append(iframe); |
| }, "SharedArrayBuffer and a same-origin-domain (but not same-origin) iframe"); |
| </script> |