tor-browser

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

Debugger-onNewGlobalObject-01.js (2128B)


      1 // Debugger.prototype.onNewGlobalObject surfaces.
      2 
      3 load(libdir + 'asserts.js');
      4 
      5 var dbg = new Debugger;
      6 
      7 function f() { }
      8 function g() { }
      9 
     10 assertEq(Object.getOwnPropertyDescriptor(dbg, 'onNewGlobalObject'), undefined);
     11 
     12 var d = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(dbg), 'onNewGlobalObject');
     13 assertEq(d.enumerable, false);
     14 assertEq(d.configurable, true);
     15 assertEq(typeof d.get, "function");
     16 assertEq(typeof d.set, "function");
     17 
     18 assertEq(dbg.onNewGlobalObject, undefined);
     19 
     20 assertThrowsInstanceOf(function () { dbg.onNewGlobalObject = ''; }, TypeError);
     21 assertEq(dbg.onNewGlobalObject, undefined);
     22 
     23 assertThrowsInstanceOf(function () { dbg.onNewGlobalObject = false; }, TypeError);
     24 assertEq(dbg.onNewGlobalObject, undefined);
     25 
     26 assertThrowsInstanceOf(function () { dbg.onNewGlobalObject = 0; }, TypeError);
     27 assertEq(dbg.onNewGlobalObject, undefined);
     28 
     29 assertThrowsInstanceOf(function () { dbg.onNewGlobalObject = Math.PI; }, TypeError);
     30 assertEq(dbg.onNewGlobalObject, undefined);
     31 
     32 assertThrowsInstanceOf(function () { dbg.onNewGlobalObject = null; }, TypeError);
     33 assertEq(dbg.onNewGlobalObject, undefined);
     34 
     35 assertThrowsInstanceOf(function () { dbg.onNewGlobalObject = {}; }, TypeError);
     36 assertEq(dbg.onNewGlobalObject, undefined);
     37 
     38 // But any function, even a useless one, is okay. How fair is that?
     39 dbg.onNewGlobalObject = f;
     40 assertEq(dbg.onNewGlobalObject, f);
     41 
     42 dbg.onNewGlobalObject = undefined;
     43 assertEq(dbg.onNewGlobalObject, undefined);
     44 
     45 var dbg2 = new Debugger;
     46 assertEq(dbg.onNewGlobalObject, undefined);
     47 assertEq(dbg2.onNewGlobalObject, undefined);
     48 
     49 dbg.onNewGlobalObject = f;
     50 assertEq(dbg.onNewGlobalObject, f);
     51 assertEq(dbg2.onNewGlobalObject, undefined);
     52 
     53 dbg2.onNewGlobalObject = g;
     54 assertEq(dbg.onNewGlobalObject, f);
     55 assertEq(dbg2.onNewGlobalObject, g);
     56 
     57 dbg.onNewGlobalObject = undefined;
     58 assertEq(dbg.onNewGlobalObject, undefined);
     59 assertEq(dbg2.onNewGlobalObject, g);
     60 
     61 // You shouldn't be able to apply the accessor to the prototype.
     62 assertThrowsInstanceOf(function () {
     63                         Debugger.prototype.onNewGlobalObject = function () { };
     64                       }, TypeError);