tor-browser

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

browser_WorkerDebugger.initialize.js (1658B)


      1 /* This Source Code Form is subject to the terms of the Mozilla Public
      2 * License, v. 2.0. If a copy of the MPL was not distributed with this
      3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      4 
      5 const wdm = Cc["@mozilla.org/dom/workers/workerdebuggermanager;1"].getService(
      6  Ci.nsIWorkerDebuggerManager
      7 );
      8 
      9 const BASE_URL = "chrome://mochitests/content/browser/dom/workers/test/";
     10 const WORKER_URL = BASE_URL + "WorkerDebugger.initialize_es_worker.js";
     11 const DEBUGGER_URL =
     12  BASE_URL + "WorkerDebugger.initialize_debugger_es_worker.js";
     13 
     14 add_task(async function test() {
     15  const onDbg = waitForRegister(WORKER_URL);
     16  const worker = new Worker(WORKER_URL, { type: "module" });
     17 
     18  info("Wait for worker message");
     19  await new Promise(resolve => (worker.onmessage = resolve));
     20 
     21  const dbg = await onDbg;
     22 
     23  info("Calling WorkerDebugger::Initialize");
     24  const onDebuggerScriptEvaluated = new Promise(resolve => {
     25    const listener = {
     26      onMessage(msg) {
     27        is(msg, "debugger script ran");
     28        dbg.removeListener(listener);
     29        resolve();
     30      },
     31    };
     32    dbg.addListener(listener);
     33  });
     34  dbg.initialize(DEBUGGER_URL);
     35  ok(true, "dbg.initialize didn't throw");
     36 
     37  info("Waiting for debugger script to be evaluated and dispatching a message");
     38  await onDebuggerScriptEvaluated;
     39 });
     40 
     41 function waitForRegister(url, dbgUrl) {
     42  return new Promise(function (resolve) {
     43    wdm.addListener({
     44      onRegister(dbg) {
     45        if (dbg.url !== url) {
     46          return;
     47        }
     48        ok(true, "Debugger with url " + url + " should be registered.");
     49        wdm.removeListener(this);
     50        resolve(dbg);
     51      },
     52    });
     53  });
     54 }