tor-browser

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

test_WorkerDebugger_console.xhtml (3167B)


      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 WorkerDebuggerGlobalScope.console methods"
      7        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
      8        onload="test();">
      9 
     10  <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
     11  <script src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"/>
     12  <script type="application/javascript" src="dom_worker_helper.js"/>
     13 
     14  <script type="application/javascript">
     15  <![CDATA[
     16 
     17    const WORKER_URL = "WorkerDebugger.console_worker.js";
     18    const CHILD_WORKER_URL = "WorkerDebugger.console_childWorker.js";
     19    const DEBUGGER_URL = BASE_URL + "WorkerDebugger.console_debugger.js";
     20 
     21    consoleMessagesReceived = 0;
     22    function test() {
     23      const ConsoleAPIStorage = SpecialPowers.Cc[
     24        "@mozilla.org/consoleAPI-storage;1"
     25      ].getService(SpecialPowers.Ci.nsIConsoleAPIStorage);
     26 
     27      function consoleListener() {
     28        this.observe = this.observe.bind(this);
     29        ConsoleAPIStorage.addLogEventListener(this.observe, SpecialPowers.wrap(document).nodePrincipal);
     30      }
     31 
     32      consoleListener.prototype  = {
     33        observe(aSubject) {
     34          var obj = aSubject.wrappedJSObject;
     35          if (obj.arguments[0] == "Hello from the debugger script!" &&
     36              !consoleMessagesReceived) {
     37            consoleMessagesReceived++;
     38            ok(true, "Something has been received");
     39            ConsoleAPIStorage.removeLogEventListener(this.observe);
     40          }
     41        }
     42      }
     43 
     44      var cl = new consoleListener();
     45 
     46      (async function() {
     47        SimpleTest.waitForExplicitFinish();
     48 
     49        info("Create a worker that creates a child worker, wait for their " +
     50             "debuggers to be registered, and initialize them.");
     51        let promise = waitForMultiple([
     52          waitForRegister(WORKER_URL, DEBUGGER_URL),
     53          waitForRegister(CHILD_WORKER_URL, DEBUGGER_URL)
     54        ]);
     55        let worker = new Worker(WORKER_URL);
     56        let [dbg, childDbg] = await promise;
     57 
     58        info("Send a request to the worker debugger. This should cause the " +
     59             "the worker debugger to send a response.");
     60        dbg.addListener({
     61          onMessage(msg) {
     62            try {
     63              msg = JSON.parse(msg);
     64            } catch(e) {
     65              ok(false, "Something went wrong");
     66              return;
     67            }
     68 
     69            if (msg.type == 'finish') {
     70              ok(consoleMessagesReceived, "We received something via debugger console!");
     71              dbg.removeListener(this);
     72              SimpleTest.finish();
     73              return;
     74            }
     75 
     76            if (msg.type == 'status') {
     77              ok(msg.what, msg.msg);
     78              return;
     79            }
     80 
     81            ok(false, "Something went wrong");
     82          }
     83        });
     84 
     85        dbg.postMessage("do magic");
     86      })();
     87    }
     88 
     89  ]]>
     90  </script>
     91 
     92  <body xmlns="http://www.w3.org/1999/xhtml">
     93    <p id="display"></p>
     94    <div id="content" style="display:none;"></div>
     95    <pre id="test"></pre>
     96  </body>
     97  <label id="test-result"/>
     98 </window>