tor-browser

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

test_suppressed_microtasks.html (1917B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <head>
      4  <meta charset="utf-8">
      5  <title>Test microtask suppression</title>
      6  <script src="/tests/SimpleTest/SimpleTest.js"></script>
      7  <link rel="stylesheet" href="/tests/SimpleTest/test.css"/>
      8  <script>
      9    SimpleTest.waitForExplicitFinish();
     10 
     11    var previousTask = -1;
     12    function test() {
     13      let win = window.open("about:blank");
     14      win.onmessage = function() {
     15        win.start = win.performance.now();
     16        win.didRunMicrotask = false;
     17        win.onmessage = function() {
     18          ok(win.didRunMicrotask, "Should have run a microtask.");
     19          let period = win.performance.now() - win.start;
     20          win.opener.ok(
     21            period < 200,
     22            "Running a task should be fast. Took " + period + "ms.");
     23          win.onmessage = null;
     24        }
     25        win.queueMicrotask(function() { win.didRunMicrotask = true; });
     26        win.postMessage("measurementMessage", "*");
     27      }
     28      win.postMessage("initialMessage", "*");
     29 
     30      const last = 500000;
     31      for (let i = 0; i < last + 1; ++i) {
     32        window.queueMicrotask(function() {
     33          // Check that once microtasks are unsuppressed, they are handled in
     34          // the correct order.
     35          if (previousTask !=  i - 1) {
     36            // Explicitly optimize out cases which pass.
     37            ok(false, "Microtasks should be handled in order.");
     38          }
     39          previousTask = i;
     40          if (i == last) {
     41            win.close();
     42            SimpleTest.finish();
     43          }
     44        });
     45      }
     46 
     47      // Synchronous XMLHttpRequest suppresses microtasks.
     48      var xhr = new XMLHttpRequest();
     49      xhr.open("GET", "slow.sjs", false);
     50      xhr.send();
     51      is(previousTask, -1, "Shouldn't have run microtasks during a sync XHR.");
     52    }
     53  </script>
     54 </head>
     55 <body onload="test()">
     56 <p id="display"></p>
     57 <div id="content" style="display: none"></div>
     58 <pre id="test"></pre>
     59 </body>
     60 </html>