diff options
Diffstat (limited to 'dom/workers/test/test_dynamicImport.html')
-rw-r--r-- | dom/workers/test/test_dynamicImport.html | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/dom/workers/test/test_dynamicImport.html b/dom/workers/test/test_dynamicImport.html new file mode 100644 index 0000000000..bffef87d2d --- /dev/null +++ b/dom/workers/test/test_dynamicImport.html @@ -0,0 +1,76 @@ +<!-- + Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ +--> +<!DOCTYPE HTML> +<html> +<!-- +Tests of Worker Dynamic Import (Bug 1540913) +Ensure that the script loader doesn't accidentally reorder events due to async work +done by dynamic import +--> +<head> + <title>Test for Worker Dynamic Import (Bug 1540913)</title> + <script src="/tests/SimpleTest/SimpleTest.js"></script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> +</head> +<body onload="onLoad()"> +<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1540913">Worker Dynamic Import + Bug 1540913</a> +<p id="display"></p> +<div id="content" style="display: none"> + +</div> +<pre id="test"> +<script class="testbody" type="text/javascript"> +SimpleTest.waitForExplicitFinish(); + +async function onLoad() { + await SpecialPowers.pushPrefEnv( + { set: [["dom.workers.modules.enabled", true ]] }); + + const workers = [ + new Worker("dynamicImport_worker.js", {type: "classic"}), + new Worker("dynamicImport_worker.js", {type: "module"}) + ]; + + let successCount = 0; + + for (const worker of workers) { + const events = []; + worker.onmessage = function(event) { + switch (event.data) { + case "first": + ok(events.length === 1 && events[0] === "second", + "first dynamic import returned"); + events.push(event.data); + successCount++; + // Cheap way to make sure we only finish successfully after + // both the module and classic test is finished. + if (successCount == 2) { + SimpleTest.finish(); + } + break; + case "second": + ok(events.length === 0, + "second dynamic import returned"); + events.push(event.data); + break; + default: + ok(false, "Unexpected message:" + event.data); + SimpleTest.finish(); + } + }; + + worker.onerror = function(event) { + ok(false, "Worker had an error:" + event.message); + SimpleTest.finish(); + } + + worker.postMessage("start"); + } +} +</script> +</pre> +</body> +</html> |