test_getyoungestframe.js (1237B)
1 /* eslint-disable strict */ 2 function run_test() { 3 Services.prefs.setBoolPref("security.allow_eval_with_system_principal", true); 4 registerCleanupFunction(() => { 5 Services.prefs.clearUserPref("security.allow_eval_with_system_principal"); 6 }); 7 const { addDebuggerToGlobal } = ChromeUtils.importESModule( 8 "resource://gre/modules/jsdebugger.sys.mjs" 9 ); 10 addDebuggerToGlobal(globalThis); 11 const xpcInspector = Cc["@mozilla.org/jsinspector;1"].getService( 12 Ci.nsIJSInspector 13 ); 14 const g = createTestGlobal("test1"); 15 16 const dbg = makeDebugger({ 17 shouldAddNewGlobalAsDebuggee() { 18 return true; 19 }, 20 }); 21 dbg.uncaughtExceptionHook = testExceptionHook; 22 23 dbg.addDebuggee(g); 24 dbg.onDebuggerStatement = function (frame) { 25 Assert.strictEqual(frame, dbg.getNewestFrame()); 26 // Execute from the nested event loop, dbg.getNewestFrame() won't 27 // be working anymore. 28 29 executeSoon(function () { 30 try { 31 Assert.strictEqual(frame, dbg.getNewestFrame()); 32 } finally { 33 xpcInspector.exitNestedEventLoop("test"); 34 } 35 }); 36 xpcInspector.enterNestedEventLoop("test"); 37 }; 38 39 g.eval("function debuggerStatement() { debugger; }; debuggerStatement();"); 40 41 dbg.disable(); 42 }