noExecute-04.js (938B)
1 // Tests that NX works through the enabled toggle and adding/removing the 2 // global. 3 4 load(libdir + "asserts.js"); 5 load(libdir + "debuggerNXHelper.js"); 6 7 var g = newGlobal({newCompartment: true}); 8 var dbg = new Debugger(g); 9 10 g.eval(` 11 function f() { } 12 var o = { 13 get p() { }, 14 set p(x) { } 15 }; 16 `); 17 18 var handlers = [() => { g.f(); }, 19 () => { g.o.p } , 20 () => { g.o.p = 42; }]; 21 22 function testHookEnabled(hookName, trigger) { 23 for (var h of handlers) { 24 assertThrowsInstanceOf(h, Debugger.DebuggeeWouldRun); 25 } 26 } 27 28 function testHookRemoval(hookName, trigger) { 29 for (var h of handlers) { 30 assertThrowsInstanceOf(h, Debugger.DebuggeeWouldRun); 31 dbg.removeDebuggee(g); 32 h(); 33 dbg.addDebuggee(g); 34 assertThrowsInstanceOf(h, Debugger.DebuggeeWouldRun); 35 } 36 } 37 38 testDebuggerHooksNX(dbg, g, testHookEnabled); 39 testDebuggerHooksNX(dbg, g, testHookRemoval);