<!
doctype html>
<
html>
<
head>
<
title>Bug 1150253 - Sanity test for the SpiderMonkey Debugger API
's onGarbageCollection hook
<
script src=
"chrome://mochikit/content/tests/SimpleTest/SimpleTest.js">
</
script>
</
head>
<
body xmlns=
"http://www.w3.org/1999/xhtml">
<a href=
"https://bugzilla.mozilla.org/show_bug.cgi?id=1150253"
target=
"_blank">Mozilla Bug 1150253</a>
<
script type=
"application/javascript">
SimpleTest.waitForExplicitFinish();
const { gc } = Cu.getJSTestingFunctions();
// Instantiate `Debugger` in a sandbox as Debugger requires to be created
// in a compartment different than the debuggee.
let sandbox = Cu.Sandbox(
Components.Constructor(
"@mozilla.org/systemprincipal;1",
"nsIPrincipal")(),
{
freshCompartment: true,
wantGlobalProperties: [
"ChromeUtils"],
}
);
Cu.evalInSandbox(`
const { addDebuggerToGlobal } = ChromeUtils.importESModule(
'resource://gre/modules/jsdebugger.sys.mjs'
);
addDebuggerToGlobal(globalThis);
`, sandbox
);
const dbg = new sandbox.Debugger(this);
dbg.memory.onGarbageCollection = function (data) {
// Don
't keep calling this hook after we finish.
dbg.memory.onGarbageCollection = undefined;
dbg.removeAllDebuggees();
ok(data,
"The onGarbageCollection hook was fired.");
SimpleTest.finish();
};
gc();
</
script>
</
body>
</
html>