38 lines
1.1 KiB
JavaScript
38 lines
1.1 KiB
JavaScript
/* eslint-disable strict */
|
|
function run_test() {
|
|
Services.prefs.setBoolPref("security.allow_eval_with_system_principal", true);
|
|
registerCleanupFunction(() => {
|
|
Services.prefs.clearUserPref("security.allow_eval_with_system_principal");
|
|
});
|
|
const { addDebuggerToGlobal } = ChromeUtils.importESModule(
|
|
"resource://gre/modules/jsdebugger.sys.mjs"
|
|
);
|
|
addDebuggerToGlobal(globalThis);
|
|
const xpcInspector = Cc["@mozilla.org/jsinspector;1"].getService(
|
|
Ci.nsIJSInspector
|
|
);
|
|
const g = createTestGlobal("test1");
|
|
|
|
const dbg = makeDebugger();
|
|
dbg.uncaughtExceptionHook = testExceptionHook;
|
|
|
|
dbg.addDebuggee(g);
|
|
dbg.onDebuggerStatement = function (frame) {
|
|
Assert.ok(frame === dbg.getNewestFrame());
|
|
// Execute from the nested event loop, dbg.getNewestFrame() won't
|
|
// be working anymore.
|
|
|
|
executeSoon(function () {
|
|
try {
|
|
Assert.ok(frame === dbg.getNewestFrame());
|
|
} finally {
|
|
xpcInspector.exitNestedEventLoop("test");
|
|
}
|
|
});
|
|
xpcInspector.enterNestedEventLoop("test");
|
|
};
|
|
|
|
g.eval("function debuggerStatement() { debugger; }; debuggerStatement();");
|
|
|
|
dbg.disable();
|
|
}
|