tor-browser

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

Debugger-findObjects-classObj-userClass.js (1450B)


      1 const g = newGlobal({ newCompartment: true });
      2 
      3 g.eval(`
      4 var c1 = class C1 {
      5 };
      6 var c2 = class C2 extends c1 {
      7 };
      8 
      9 var x1 = new c1();
     10 var x2 = new c2();
     11 `);
     12 
     13 const dbg = new Debugger();
     14 const gDO = dbg.addDebuggee(g);
     15 
     16 const x1DO = gDO.makeDebuggeeValue(g.x1);
     17 const x2DO = gDO.makeDebuggeeValue(g.x2);
     18 
     19 // The direct ctor/proto should match.
     20 const c1DO = gDO.makeDebuggeeValue(g.c1);
     21 assertEq(dbg.findObjects({ class: c1DO }).includes(x1DO), true);
     22 const c1ProtoDO = gDO.makeDebuggeeValue(g.c1.prototype);
     23 assertEq(dbg.findObjects({ class: c1ProtoDO }).includes(x1DO), true);
     24 
     25 const c2DO = gDO.makeDebuggeeValue(g.c2);
     26 assertEq(dbg.findObjects({ class: c2DO }).includes(x2DO), true);
     27 const c2ProtoDO = gDO.makeDebuggeeValue(g.c2.prototype);
     28 assertEq(dbg.findObjects({ class: c2ProtoDO }).includes(x2DO), true);
     29 
     30 // The super ctor/proto should match.
     31 assertEq(dbg.findObjects({ class: c1DO }).includes(x2DO), true);
     32 assertEq(dbg.findObjects({ class: c1ProtoDO }).includes(x2DO), true);
     33 
     34 // Subclass's prototype is instance of superclass's prototype.
     35 assertEq(dbg.findObjects({ class: c1DO }).includes(c2ProtoDO), true);
     36 assertEq(dbg.findObjects({ class: c1ProtoDO }).includes(c2ProtoDO), true);
     37 
     38 // Subclass's ctor is instance of superclass's ctor.
     39 assertEq(dbg.findObjects({ class: c1DO }).includes(c2DO), true);
     40 
     41 // Subclass's ctor has no relation wtih superclass's prototype.
     42 assertEq(dbg.findObjects({ class: c1ProtoDO }).includes(c2DO), false);