tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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);