<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="../../resources/js-test-pre.js"></script>
</head>
<body>
<script>

description("Test sending shared WebAssembly.Memory via postMessage to a worker.");

if (typeof WebAssembly !== 'undefined') {
    jsTestIsAsync = true;
    memory = new WebAssembly.Memory({ initial: 1, maximum: 2, shared: true });
    buffer = memory.buffer;
    view = new Uint8Array(buffer);
    view[0] = 42;
    shouldBe(`view[0]`, `42`);
    worker = new Worker("./resources/webassembly-memory-shared-worker.js");
    worker.onmessage = function(msg) {
        message = msg;
        shouldBe(`message.data`, `"DONE"`);
        shouldBe(`view[0]`, `43`);
        shouldBe(`view[1]`, `42`);
        shouldBe(`view[2]`, `44`);
        shouldBe(`buffer.byteLength`, `65536`);
        shouldBe(`memory.buffer.byteLength`, `131072`);
        finishJSTest();
    };
    worker.postMessage(memory);
}
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>
