tor-browser

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

Frame-olderSavedFrame-01.js (1112B)


      1 // An explicit async stack should be available via olderSavedFrame.
      2 // This test makes sure that "main" shows up as an async saved frame
      3 // instead of "older", even though "drainJobQueue()" is running inside of
      4 // "main()" directly.
      5 
      6 var g = newGlobal({ newCompartment: true });
      7 var dbg = new Debugger(g);
      8 let done = false;
      9 dbg.onDebuggerStatement = function (frame) {
     10  // This frame has an "olderSavedFrame" because "run()" is an async function
     11  // and those have explicit async stacks attached to them.
     12  const parent = frame.olderSavedFrame;
     13  assertEq(typeof parent.source, "string");
     14  assertEq(parent.line, 12);
     15  assertEq(parent.column, 3);
     16  assertEq(parent.asyncCause, "async");
     17  assertEq(parent.functionDisplayName, "main");
     18  done = true;
     19 };
     20 
     21 g.eval(`
     22 let draining = false;
     23 async function run() {
     24  await Promise.resolve();
     25 
     26  // Make sure that the test is running within "drainJobQueue()".
     27  assertEq(draining, true);
     28  debugger;
     29 }
     30 
     31 (function main() {
     32  run();
     33 
     34  // Force resumption of the "run" function.
     35  draining = true;
     36  drainJobQueue();
     37  draining = false;
     38 })();
     39 `);
     40 assertEq(done, true);