Backed out changeset 06f41c22f3a6 (bug 1888460) for causing linux xpcshell failures...
[gecko.git] / dom / workers / test / browser_WorkerDebugger.initialize.js
blobedc20af4e002401294afe91759a79efca78d2265
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/. */
5 const wdm = Cc["@mozilla.org/dom/workers/workerdebuggermanager;1"].getService(
6   Ci.nsIWorkerDebuggerManager
7 );
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";
14 add_task(async function test() {
15   const onDbg = waitForRegister(WORKER_URL);
16   const worker = new Worker(WORKER_URL, { type: "module" });
18   info("Wait for worker message");
19   await new Promise(resolve => (worker.onmessage = resolve));
21   const dbg = await onDbg;
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");
37   info("Waiting for debugger script to be evaluated and dispatching a message");
38   await onDebuggerScriptEvaluated;
39 });
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   });