tor-browser

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

test_framebindings-06.js (1244B)


      1 /* Any copyright is dedicated to the Public Domain.
      2   http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 "use strict";
      5 
      6 add_task(
      7  threadFrontTest(async ({ threadFront, debuggee }) => {
      8    const packet = await executeOnNextTickAndWaitForPause(
      9      () => evalCode(debuggee),
     10      threadFront
     11    );
     12 
     13    const env = await packet.frame.getEnvironment();
     14    equal(env.type, "function");
     15    equal(env.function.displayName, "banana3");
     16    let parent = env.parent;
     17    equal(parent.type, "block");
     18    ok("banana3" in parent.bindings.variables);
     19    parent = parent.parent;
     20    equal(parent.type, "function");
     21    equal(parent.function.displayName, "banana2");
     22    parent = parent.parent;
     23    equal(parent.type, "block");
     24    ok("banana2" in parent.bindings.variables);
     25    parent = parent.parent;
     26    equal(parent.type, "function");
     27    equal(parent.function.displayName, "banana");
     28 
     29    await threadFront.resume();
     30  })
     31 );
     32 
     33 function evalCode(debuggee) {
     34  debuggee.eval(
     35    "function banana(x) {\n" +
     36      "  return function banana2(y) {\n" +
     37      "    return function banana3(z) {\n" +
     38      '      eval("");\n' +
     39      "      debugger;\n" +
     40      "    };\n" +
     41      "  };\n" +
     42      "}\n" +
     43      "banana('x')('y')('z');\n"
     44  );
     45 }