tor-browser

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

test_terminate.html (2285B)


      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 DOM Worker terminate feature
      9 -->
     10 <head>
     11  <title>Test for DOM Worker Navigator</title>
     12  <script src="/tests/SimpleTest/SimpleTest.js"></script>
     13  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
     14 </head>
     15 <body>
     16 <p id="display"></p>
     17 <div id="content" style="display: none">
     18 
     19 </div>
     20 <pre id="test">
     21 <script class="testbody" language="javascript">
     22 
     23 
     24  var messageCount = 0;
     25  var intervalCount = 0;
     26 
     27  var interval;
     28 
     29  var worker;
     30 
     31  function messageListener(event) {
     32    is(event.data, "Still alive!", "Correct message!");
     33    if (++messageCount == 20) {
     34      ok(worker.onmessage === messageListener,
     35         "Correct listener before terminate");
     36 
     37      worker.terminate();
     38 
     39      var exception = false;
     40      try {
     41        worker.addEventListener("message", messageListener);
     42      }
     43      catch (e) {
     44        exception = true;
     45      }
     46      is(exception, false, "addEventListener didn't throw after terminate");
     47 
     48      exception = false;
     49      try {
     50        worker.removeEventListener("message", messageListener);
     51      }
     52      catch (e) {
     53        exception = true;
     54      }
     55      is(exception, false, "removeEventListener didn't throw after terminate");
     56 
     57      exception = false;
     58      try {
     59        worker.postMessage("foo");
     60      }
     61      catch (e) {
     62        exception = true;
     63      }
     64      is(exception, false, "postMessage didn't throw after terminate");
     65 
     66      exception = false;
     67      try {
     68        worker.terminate();
     69      }
     70      catch (e) {
     71        exception = true;
     72      }
     73      is(exception, false, "terminate didn't throw after terminate");
     74 
     75      ok(worker.onmessage === messageListener,
     76         "Correct listener after terminate");
     77 
     78      worker.onmessage = function(msg) { }
     79 
     80      interval = setInterval(testCount, 1000);
     81    }
     82  }
     83 
     84  function testCount() {
     85    is(messageCount, 20, "Received another message after terminated!");
     86    if (intervalCount++ == 5) {
     87      clearInterval(interval);
     88      SimpleTest.finish();
     89    }
     90  }
     91 
     92  worker = new Worker("terminate_worker.js");
     93  worker.onmessage = messageListener;
     94 
     95  SimpleTest.waitForExplicitFinish();
     96 
     97 </script>
     98 </pre>
     99 </body>
    100 </html>