tor-browser

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

Debugger-getNewestFrame-generators-01.js (1099B)


      1 // Generator/async frames can be created and revived by calling Debugger.getNewestFrame().
      2 //
      3 // Modified copy of Frame-older-generators-01.js.
      4 
      5 let g = newGlobal({newCompartment: true});
      6 g.eval(`
      7    function* gen() {
      8        f();
      9        yield 1;
     10        f();
     11    }
     12    function* genDefaults(x=f()) {
     13        f();
     14    }
     15    async function af() {
     16        f();
     17        await 1;
     18        f();
     19    }
     20    async function afDefaults(x=f()) {
     21        await 1;
     22        f();
     23    }
     24 `);
     25 
     26 function test(expected, code) {
     27    let dbg = Debugger(g);
     28    let hits = 0;
     29    let genFrame = null;
     30    g.f = () => {
     31        hits++;
     32        let frame = dbg.getNewestFrame();
     33        if (genFrame === null) {
     34            genFrame = frame;
     35        } else {
     36            assertEq(frame, genFrame);
     37        }
     38        assertEq(genFrame.callee.name, expected);
     39    }
     40 
     41    g.eval(code);
     42    assertEq(hits, 2);
     43    dbg.removeDebuggee(g);
     44 }
     45 
     46 test("gen", "for (var x of gen()) {}");
     47 test("genDefaults", "for (var x of genDefaults()) {}");
     48 test("af", "af(); drainJobQueue();");
     49 test("afDefaults", "afDefaults(); drainJobQueue();")