noExecute-02.js (873B)
1 // Tests that invocation functions work. 2 3 load(libdir + "asserts.js"); 4 load(libdir + "debuggerNXHelper.js"); 5 6 var g = newGlobal({newCompartment: true}); 7 var dbg = new Debugger(); 8 var gw = dbg.addDebuggee(g); 9 10 g.eval(` 11 function d() { debugger; } 12 function f() { return 42; } 13 var o = { 14 get p() { return 42; }, 15 set p(x) { } 16 }; 17 `); 18 19 var strs = ["f();", "o.p", "o.p = 42"]; 20 21 var fw; 22 dbg.onDebuggerStatement = (frame) => { 23 fw = frame.arguments[0]; 24 }; 25 gw.executeInGlobal("d(f)"); 26 dbg.onDebuggerStatement = undefined; 27 28 function testHook(hookName) { 29 var newestFrame = dbg.getNewestFrame(); 30 for (var s of strs) { 31 if (newestFrame) { 32 assertEq(newestFrame.eval(s).return, 42); 33 } 34 assertEq(gw.executeInGlobal(s).return, 42); 35 assertEq(fw.apply(null).return, 42); 36 } 37 } 38 39 testDebuggerHooksNX(dbg, g, testHook);