tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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>