tor-browser

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

onDebuggerStatement-async-resumption-01.js (895B)


      1 // A Debugger can {return:} from onDebuggerStatement in an async function.
      2 // The async function's promise is resolved with the returned value.
      3 
      4 load(libdir + "asserts.js");
      5 
      6 let g = newGlobal({newCompartment: true});
      7 g.eval(`
      8    async function f(x) {
      9        debugger;  // when==0 to force return here
     10        await x;
     11        debugger;  // when==1 to force return here
     12    }
     13 `);
     14 
     15 let dbg = new Debugger;
     16 let gw = dbg.addDebuggee(g);
     17 function test(when, what, expected) {
     18    let hits = 0;
     19    let result = "FAIL";
     20    dbg.onDebuggerStatement = frame => {
     21        if (hits++ == when)
     22            return {return: gw.makeDebuggeeValue(what)};
     23    };
     24    g.f(0).then(x => { result = x; });
     25    assertEq(hits, 1);
     26    drainJobQueue();
     27    assertEq(hits, when + 1);
     28    assertEq(result, expected);
     29 }
     30 
     31 for (let i = 0; i < 2; i++) {
     32    test(i, "ok", "ok");
     33    test(i, g.Promise.resolve(37), 37);
     34 }