tor-browser

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

Environment-nondebuggee.js (1073B)


      1 // Using an environment that is not a debuggee should throw.
      2 
      3 load(libdir + 'asserts.js');
      4 
      5 var g = newGlobal({newCompartment: true});
      6 var dbg = new Debugger;
      7 let gw = dbg.addDebuggee(g);
      8 var log;
      9 
     10 function check(env) {
     11  assertEq(env.inspectable, false);
     12  assertThrowsInstanceOf(() => env.type, Error);
     13  assertThrowsInstanceOf(() => env.object, Error);
     14  assertThrowsInstanceOf(() => env.parent, Error);
     15  assertThrowsInstanceOf(() => env.calleeScript, Error);
     16 
     17  assertThrowsInstanceOf(() => env.names(), Error);
     18  assertThrowsInstanceOf(() => env.find('x'), Error);
     19  assertThrowsInstanceOf(() => env.getVariable('x'), Error);
     20  assertThrowsInstanceOf(() => env.setVariable('x'), Error);
     21 }
     22 
     23 dbg.onDebuggerStatement = function (frame) {
     24  log += 'd';
     25 
     26  let env = frame.environment;
     27  dbg.removeDebuggee(g);
     28  check(env);
     29 }
     30 
     31 log = '';
     32 g.eval('let x = 42; debugger;');
     33 assertEq(log, 'd');
     34 
     35 dbg.addDebuggee(g);
     36 g.eval('function f() { }');
     37 let env = gw.getOwnPropertyDescriptor('f').value.environment;
     38 assertEq(env.type, 'declarative');
     39 dbg.removeDebuggee(g);
     40 check(env);