39 lines
1 KiB
JavaScript
39 lines
1 KiB
JavaScript
"use strict";
|
|
|
|
/* global global */
|
|
|
|
try {
|
|
// For some reason WorkerDebuggerGlobalScope.global doesn't expose JS variables
|
|
// and we can't call via global.foo(). Instead we have to go throught the Debugger API.
|
|
const dbg = new Debugger(global);
|
|
const [debuggee] = dbg.getDebuggees();
|
|
|
|
const { JSTracer } = ChromeUtils.importESModule(
|
|
"resource://devtools/server/tracer/tracer.sys.mjs",
|
|
{ global: "contextual" }
|
|
);
|
|
|
|
const frames = [];
|
|
const listener = {
|
|
onTracingFrame(args) {
|
|
frames.push(args);
|
|
|
|
// Return true, to also log the trace to stdout
|
|
return true;
|
|
},
|
|
};
|
|
JSTracer.addTracingListener(listener);
|
|
JSTracer.startTracing({ global, prefix: "testWorkerPrefix" });
|
|
|
|
debuggee.executeInGlobal("foo()");
|
|
|
|
JSTracer.stopTracing();
|
|
JSTracer.removeTracingListener(listener);
|
|
|
|
// Send the frames to the main thread to do the assertions there.
|
|
postMessage(JSON.stringify(frames));
|
|
} catch (e) {
|
|
dump(
|
|
"Exception while running debugger test script: " + e + "\n" + e.stack + "\n"
|
|
);
|
|
}
|