tor-browser

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

Frame-eval-08.js (693B)


      1 // The arguments can escape from a function via a debugging hook.
      2 
      3 var g = newGlobal({newCompartment: true});
      4 var dbg = new Debugger(g);
      5 
      6 // capture arguments object and test function
      7 var args, testfn;
      8 dbg.onDebuggerStatement = function (frame) {
      9    args = frame.eval("arguments").return;
     10    testfn = frame.eval("test").return;
     11 };
     12 g.eval("function f() { debugger; }");
     13 g.eval("var test = " + function test(args) {
     14        assertEq(args.length, 3);
     15        assertEq(args[0], this);
     16        assertEq(args[1], f);
     17        assertEq(args[2].toString(), "[object Object]");
     18        return 42;
     19    } + ";");
     20 g.eval("f(this, f, {});");
     21 
     22 var cv = testfn.apply(null, [args]);
     23 assertEq(cv.return, 42);