<!DOCTYPE html>
<!-- Based on similar tests in html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/ -->
<meta charset="utf-8">
<title>WebAssembly.Modules cannot be transferred</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="./resources/create-empty-wasm-module.js"></script>

<script>
"use strict";

test(() => {
  const module = createEmptyWasmModule();
  assert_throws_dom("DataCloneError", () => window.postMessage(module, "*", [module]));
  assert_throws_dom("DataCloneError", () => window.postMessage("test", "*", [module]));
}, "Trying to transfer a WebAssembly.Module to this window throws");

test(() => {
  const module = createEmptyWasmModule();
  const worker = new Worker("resources/echo-worker.js");
  assert_throws_dom("DataCloneError", () => worker.postMessage(module, [module]));
  assert_throws_dom("DataCloneError", () => worker.postMessage("test", [module]));
}, "Trying to transfer a WebAssembly.Module to a worker throws");

test(() => {
  const module = createEmptyWasmModule();
  const channel = new MessageChannel();
  assert_throws_dom("DataCloneError", () => channel.port1.postMessage(module, [module]));
  assert_throws_dom("DataCloneError", () => channel.port1.postMessage("test", [module]));
}, "Trying to transfer a WebAssembly.Module through a MessagePort throws");
</script>
