tor-browser

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

Frame-onPop-15.js (835B)


      1 // Each resumption of a generator gets the same Frame; its onPop handler
      2 // fires each time the generator yields.
      3 
      4 var g = newGlobal({newCompartment: true});
      5 var dbg = new Debugger(g);
      6 var log;
      7 
      8 var seenFrame = null;
      9 dbg.onDebuggerStatement = function handleDebugger(frame) {
     10    log += 'd';
     11    assertEq(frame.type, "call");
     12 
     13    if (seenFrame === null) {
     14        seenFrame = frame;
     15    } else {
     16        assertEq(seenFrame, frame);
     17    }
     18 
     19    let i = frame.eval('i').return;
     20    if (i % 3 == 0) {
     21        frame.onPop = function handlePop(c) {
     22            assertEq(this, seenFrame);
     23            log += ')' + i;
     24        };
     25    }
     26 };
     27 
     28 g.eval("function* g() { for (var i = 0; i < 10; i++) { debugger; yield i; } }");
     29 log ='';
     30 assertEq(g.eval("var t = 0; for (j of g()) t += j; t;"), 45);
     31 assertEq(log, "d)0d)0d)0d)3d)3d)3d)6d)6d)6d)9)9");