tor-browser

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

test_WorkerDebugger_frozen.xhtml (2433B)


      1 <?xml version="1.0"?>
      2 <!--
      3  Any copyright is dedicated to the Public Domain.
      4  http://creativecommons.org/publicdomain/zero/1.0/
      5 -->
      6 <window title="Test for WorkerDebugger with frozen workers"
      7        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
      8 
      9  <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
     10  <script src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"/>
     11  <script type="application/javascript" src="dom_worker_helper.js"/>
     12 
     13  <script type="application/javascript">
     14  <![CDATA[
     15 
     16    const WINDOW1_URL = "WorkerDebugger_frozen_window1.html";
     17    const WINDOW2_URL = "WorkerDebugger_frozen_window2.html";
     18 
     19    const WORKER1_URL = "WorkerDebugger_frozen_worker1.js";
     20    const WORKER2_URL = "WorkerDebugger_frozen_worker2.js";
     21 
     22    add_task(
     23      async function runTest() {
     24        await SpecialPowers.pushPrefEnv({set:
     25          [["browser.sessionhistory.max_total_viewers", 10]]});
     26 
     27        let promise = waitForMultiple([
     28          waitForRegister(WORKER1_URL),
     29          waitForWindowMessage(window, "ready"),
     30        ]);
     31        let testWin = window.open(WINDOW1_URL, "testWin");;
     32        let [dbg1] = await promise;
     33        is(dbg1.isClosed, false,
     34           "debugger for worker on page 1 should not be closed");
     35 
     36        promise = waitForMultiple([
     37          waitForUnregister(WORKER1_URL),
     38          waitForDebuggerClose(dbg1),
     39          waitForRegister(WORKER2_URL),
     40          waitForWindowMessage(window, "ready"),
     41        ]);
     42        testWin.location = WINDOW2_URL;
     43        let [,, dbg2] = await promise;
     44        is(dbg1.isClosed, true,
     45           "debugger for worker on page 1 should be closed");
     46        is(dbg2.isClosed, false,
     47           "debugger for worker on page 2 should not be closed");
     48 
     49        promise = Promise.all([
     50          waitForUnregister(WORKER2_URL),
     51          waitForDebuggerClose(dbg2),
     52          waitForRegister(WORKER1_URL)
     53        ]);
     54        testWin.history.back();
     55        [,, dbg1] = await promise;
     56        is(dbg1.isClosed, false,
     57           "debugger for worker on page 1 should not be closed");
     58        is(dbg2.isClosed, true,
     59           "debugger for worker on page 2 should be closed");
     60      }
     61    );
     62 
     63  ]]>
     64  </script>
     65 
     66  <body xmlns="http://www.w3.org/1999/xhtml">
     67    <p id="display"></p>
     68    <div id="content" style="display:none;"></div>
     69    <pre id="test"></pre>
     70  </body>
     71  <label id="test-result"/>
     72 </window>