| // META: script=/common/get-host-info.sub.js |
| // META: script=resources/create-wasm-module.js |
| // META: timeout=long |
| |
| const { HTTPS_NOTSAMESITE_ORIGIN } = get_host_info(); |
| const iframe = document.createElement('iframe'); |
| iframe.src = `${HTTPS_NOTSAMESITE_ORIGIN}/streams/transferable/resources/deserialize-error-frame.html`; |
| |
| window.addEventListener('message', async evt => { |
| // Tests are serialized to make the results deterministic. |
| switch (evt.data) { |
| case 'init done': { |
| const ws = new WritableStream(); |
| iframe.contentWindow.postMessage(ws, '*', [ws]); |
| return; |
| } |
| |
| case 'ws done': { |
| const module = await createWasmModule(); |
| const rs = new ReadableStream({ |
| start(controller) { |
| controller.enqueue(module); |
| } |
| }); |
| iframe.contentWindow.postMessage(rs, '*', [rs]); |
| return; |
| } |
| |
| case 'rs done': { |
| iframe.remove(); |
| } |
| } |
| }); |
| |
| // Need to do this after adding the listener to ensure we catch the first |
| // message. |
| document.body.appendChild(iframe); |
| |
| fetch_tests_from_window(iframe.contentWindow); |