test_dynamicImport.html (2046B)
1 <!-- 2 Any copyright is dedicated to the Public Domain. 3 http://creativecommons.org/publicdomain/zero/1.0/ 4 --> 5 <!DOCTYPE HTML> 6 <html> 7 <!-- 8 Tests of Worker Dynamic Import (Bug 1540913) 9 Ensure that the script loader doesn't accidentally reorder events due to async work 10 done by dynamic import 11 --> 12 <head> 13 <title>Test for Worker Dynamic Import (Bug 1540913)</title> 14 <script src="/tests/SimpleTest/SimpleTest.js"></script> 15 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 16 </head> 17 <body onload="onLoad()"> 18 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1540913">Worker Dynamic Import 19 Bug 1540913</a> 20 <p id="display"></p> 21 <div id="content" style="display: none"> 22 23 </div> 24 <pre id="test"> 25 <script class="testbody" type="text/javascript"> 26 SimpleTest.waitForExplicitFinish(); 27 28 async function onLoad() { 29 30 const workers = [ 31 new Worker("dynamicImport_worker.js", {type: "classic"}), 32 new Worker("dynamicImport_worker.js", {type: "module"}) 33 ]; 34 35 let successCount = 0; 36 37 for (const worker of workers) { 38 const events = []; 39 worker.onmessage = function(event) { 40 switch (event.data) { 41 case "first": 42 ok(events.length === 1 && events[0] === "second", 43 "first dynamic import returned"); 44 events.push(event.data); 45 successCount++; 46 // Cheap way to make sure we only finish successfully after 47 // both the module and classic test is finished. 48 if (successCount == 2) { 49 SimpleTest.finish(); 50 } 51 break; 52 case "second": 53 ok(events.length === 0, 54 "second dynamic import returned"); 55 events.push(event.data); 56 break; 57 default: 58 ok(false, "Unexpected message:" + event.data); 59 SimpleTest.finish(); 60 } 61 }; 62 63 worker.onerror = function(event) { 64 ok(false, "Worker had an error:" + event.message); 65 SimpleTest.finish(); 66 } 67 68 worker.postMessage("start"); 69 } 70 } 71 </script> 72 </pre> 73 </body> 74 </html>