tor-browser

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

setter-argc.js (1139B)


      1 // Check that setters throw TypeError when passed no arguments, instead of crashing.
      2 
      3 function check(obj) {
      4  let proto = Object.getPrototypeOf(obj);
      5  let props = Object.getOwnPropertyNames(proto);
      6  for (let prop of props) {
      7    let desc = Object.getOwnPropertyDescriptor(proto, prop);
      8    if (desc.set) {
      9      print("bleah: " + JSON.stringify(prop));
     10      assertEq(typeof desc.set, 'function');
     11      try {
     12        desc.set.call(obj);
     13        assertEq("should have thrown TypeError", false);
     14      } catch (e) {
     15        assertEq(e instanceof TypeError, true);
     16      }
     17    }
     18  }
     19 }
     20 
     21 var dbg = new Debugger;
     22 var g = newGlobal({newCompartment: true});
     23 var gw = dbg.addDebuggee(g);
     24 
     25 // Debugger
     26 check(dbg);
     27 
     28 // Debugger.Memory
     29 check(dbg.memory);
     30 
     31 // Debugger.Object
     32 g.eval('function f() { debugger; }');
     33 var fw = gw.getOwnPropertyDescriptor('f').value;
     34 check(fw);
     35 
     36 // Debugger.Script
     37 check(fw.script);
     38 
     39 // Debugger.Source
     40 check(fw.script.source);
     41 
     42 // Debugger.Environment
     43 check(fw.environment);
     44 
     45 // Debugger.Frame
     46 var log = '';
     47 dbg.onDebuggerStatement = function(frame) {
     48  log += 'd';
     49  check(frame);
     50 }
     51 g.eval('f()');
     52 assertEq(log, 'd');