tor-browser

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

test_shutdownCheck.xhtml (1557B)


      1 <?xml version="1.0"?>
      2 <?xml-stylesheet type="text/css" href="chrome://global/skin"?>
      3 <?xml-stylesheet type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"?>
      4 
      5 <window title="Worker shutdown check"
      6        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
      7  <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
      8 
      9  <!-- test results are displayed in the html:body -->
     10  <body xmlns="http://www.w3.org/1999/xhtml">
     11  </body>
     12 
     13  <!-- test code goes here -->
     14  <script type="application/javascript">
     15  <![CDATA[
     16 
     17 SimpleTest.waitForExplicitFinish()
     18 
     19 const URL = "worker_shutdownCheck.js";
     20 
     21 function checkWorker() {
     22  const wdm = Cc["@mozilla.org/dom/workers/workerdebuggermanager;1"].
     23              getService(Ci.nsIWorkerDebuggerManager);
     24 
     25  let e = wdm.getWorkerDebuggerEnumerator();
     26  while (e.hasMoreElements()) {
     27    let dbg = e.getNext().QueryInterface(Ci.nsIWorkerDebugger);
     28    if (dbg.url == URL) {
     29      return true;
     30    }
     31  }
     32 
     33  return false;
     34 }
     35 
     36 new Promise(resolve => {
     37  var w = new Worker(URL);
     38  ok(checkWorker(), "We have the worker");
     39  w.onmessage = () => { resolve(); }
     40 }).then(() => {
     41  info("Waiting...");
     42 
     43  // We don't know if the worker thread is able to shutdown when calling
     44  // CC/GC. Better to check again in case.
     45  function checkGC() {
     46    Cu.forceCC();
     47    Cu.forceGC();
     48    if (!checkWorker()) {
     49      ok(true, "We don't have the worker");
     50      SimpleTest.finish();
     51      return;
     52    }
     53    setTimeout(checkGC, 200);
     54  }
     55 
     56  checkGC();
     57 });
     58 
     59  ]]>
     60  </script>
     61 </window>