tor-browser

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

Frame-onStack-04.js (861B)


      1 // frame.onStack is false for frames discarded during uncatchable error unwinding.
      2 
      3 load(libdir + 'asserts.js');
      4 
      5 var g = newGlobal({newCompartment: true});
      6 var dbg = Debugger(g);
      7 var hits = 0;
      8 var snapshot;
      9 dbg.onDebuggerStatement = function (frame) {
     10    var stack = [];
     11    for (var f = frame; f; f = f.older) {
     12        if (f.type === "call" && f.script !== null)
     13            stack.push(f);
     14    }
     15    snapshot = stack;
     16    if (hits++ === 0)
     17        assertEq(frame.eval("x();"), null);
     18    else
     19        return null;
     20 };
     21 
     22 g.eval("function z() { debugger; }");
     23 g.eval("function y() { z(); }");
     24 g.eval("function x() { y(); }");
     25 assertEq(g.eval("debugger; 'ok';"), "ok");
     26 assertEq(hits, 2);
     27 assertEq(snapshot.length, 3);
     28 for (var i = 0; i < snapshot.length; i++) {
     29    assertEq(snapshot[i].onStack, false);
     30    assertThrowsInstanceOf(() => frame.script, Error);
     31 }