tor-browser

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

resumption-09.js (870B)


      1 // Test exception stack behavior when reusing completion values as resumption
      2 // values.
      3 
      4 load(libdir + "asserts.js");
      5 
      6 var g = newGlobal({newCompartment: true});
      7 g.eval(`
      8  function foo() {
      9    bar();
     10  }
     11  function bar() {
     12    debugger;
     13  }
     14  function baz() {
     15    throw new Error();
     16  }
     17 `);
     18 
     19 var dbg = Debugger(g);
     20 dbg.onDebuggerStatement = frame => {
     21  return frame.eval("baz()");
     22 };
     23 
     24 let popHits = 0;
     25 dbg.onEnterFrame = frame => {
     26  frame.onPop = completion => {
     27    popHits++;
     28    // Resumption values ignore any 'stack' property, and the script location of
     29    // the place where the hook was called will be used when throwing.
     30    if (popHits <= 2) {
     31      assertEq(completion.stack.functionDisplayName, "baz");
     32    } else {
     33      assertEq(completion.stack.functionDisplayName, "bar");
     34    }
     35  };
     36 };
     37 
     38 try {
     39  g.eval("foo()");
     40 } catch (e) {}
     41 assertEq(popHits, 5);