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 }