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 }