no-transferring.html (1407B)
1 <!DOCTYPE html> 2 <!-- Based on similar tests in html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/ --> 3 <meta charset="utf-8"> 4 <title>WebAssembly.Modules cannot be transferred</title> 5 <script src="/resources/testharness.js"></script> 6 <script src="/resources/testharnessreport.js"></script> 7 <script src="./resources/create-empty-wasm-module.js"></script> 8 9 <script> 10 "use strict"; 11 12 test(() => { 13 const module = createEmptyWasmModule(); 14 assert_throws_dom("DataCloneError", () => window.postMessage(module, "*", [module])); 15 assert_throws_dom("DataCloneError", () => window.postMessage("test", "*", [module])); 16 }, "Trying to transfer a WebAssembly.Module to this window throws"); 17 18 test(() => { 19 const module = createEmptyWasmModule(); 20 const worker = new Worker("resources/echo-worker.js"); 21 assert_throws_dom("DataCloneError", () => worker.postMessage(module, [module])); 22 assert_throws_dom("DataCloneError", () => worker.postMessage("test", [module])); 23 }, "Trying to transfer a WebAssembly.Module to a worker throws"); 24 25 test(() => { 26 const module = createEmptyWasmModule(); 27 const channel = new MessageChannel(); 28 assert_throws_dom("DataCloneError", () => channel.port1.postMessage(module, [module])); 29 assert_throws_dom("DataCloneError", () => channel.port1.postMessage("test", [module])); 30 }, "Trying to transfer a WebAssembly.Module through a MessagePort throws"); 31 </script>