tor-browser

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

worker-dispay-none.tentative.html (1951B)


      1 <!DOCTYPE html>
      2 <meta charset="utf-8">
      3 <title>Child frame with worker marked as frozen</title>
      4 <script src="/resources/testharness.js"></script>
      5 <script src="/resources/testharnessreport.js"></script>
      6 <body>
      7 <script>
      8 async_test((t) => {
      9 
     10  var child = document.createElement('iframe');
     11 
     12  var loaded = false;
     13  var frozen = false;
     14  var resumed = false;
     15 
     16  var subworker_freeze_count = 0;
     17  var subworker2_freeze_count = 0;
     18  var subworker_count = 0;
     19  var subworker2_count = 0;
     20  var bc = new BroadcastChannel('subworker_channel');
     21  bc.onmessage = t.step_func((e) => {
     22    if (e.data == 'subworker') {
     23      subworker_count++;
     24    } else if (e.data == 'subworker2') {
     25      subworker2_count++;
     26    } else {
     27      assert_unreached('bad message');
     28    }
     29 
     30    // Ensure that if we have resumed that we get at least
     31    // one message from each worker.
     32    if (loaded && frozen && resumed &&
     33        subworker2_count > subworker2_freeze_count &&
     34        subworker_count > subworker_freeze_count) {
     35      t.done();
     36    } else if (loaded && frozen && !resumed) {
     37      // Ensure that at most one message is sent after the frozen state.
     38      assert_true(subworker_count - subworker_freeze_count <= 1);
     39      assert_true(subworker2_count - subworker2_freeze_count <= 1);
     40    }
     41  });
     42 
     43  window.addEventListener('message', t.step_func((e) => {
     44    if (e.data == "load") {
     45      loaded = true;
     46    } else if (e.data == "freeze") {
     47      assert_true(loaded);
     48      frozen = true;
     49      subworker_freeze_count = subworker_count;
     50      subworker2_freeze_count = subworker2_count;
     51      child.style = "display: block";
     52    } else if (e.data == "resume") {
     53      assert_true(loaded);
     54      assert_true(frozen);
     55      resumed = true;
     56    }
     57  }));
     58 
     59  child.allow = "execution-while-not-rendered 'none'";
     60  child.src = "resources/subframe_worker.html";
     61  document.body.appendChild(child);
     62  child.style = "display: none";
     63 }, "Child frame frozen");
     64 
     65 </script>
     66 </body>