tor-browser

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

Object-getProperty-03.js (1941B)


      1 // tests calling script functions via Debugger.Object.prototype.getProperty
      2 // with different receiver objects.
      3 "use strict";
      4 load(libdir + "/asserts.js");
      5 
      6 var global = newGlobal({newCompartment: true});
      7 var dbg = new Debugger();
      8 var globalDO = dbg.addDebuggee(global);
      9 var windowProxyDO = globalDO.makeDebuggeeValue(global);
     10 dbg.onDebuggerStatement = onDebuggerStatement;
     11 
     12 global.eval(`
     13 const sloppy = {
     14  get getter() { return this; },
     15 };
     16 const strict = {
     17  get getter() { "use strict"; return this; },
     18 };
     19 debugger;
     20 `);
     21 
     22 function onDebuggerStatement(frame) {
     23    const { environment } = frame;
     24    const sloppy = environment.getVariable("sloppy");
     25    const strict = environment.getVariable("strict");
     26 
     27    assertEq(sloppy.getProperty("getter").return, sloppy);
     28    assertEq(sloppy.getProperty("getter", sloppy).return, sloppy);
     29    assertEq(sloppy.getProperty("getter", strict).return, strict);
     30    assertEq(sloppy.getProperty("getter", 1).return.class, "Number");
     31    assertEq(sloppy.getProperty("getter", true).return.class, "Boolean");
     32    assertEq(sloppy.getProperty("getter", null).return, windowProxyDO);
     33    assertEq(sloppy.getProperty("getter", undefined).return, windowProxyDO);
     34    assertErrorMessage(() => sloppy.getProperty("getter", {}), TypeError,
     35                       "Debugger: expected Debugger.Object, got Object");
     36 
     37    assertEq(strict.getProperty("getter").return, strict);
     38    assertEq(strict.getProperty("getter", sloppy).return, sloppy);
     39    assertEq(strict.getProperty("getter", strict).return, strict);
     40    assertEq(strict.getProperty("getter", 1).return, 1);
     41    assertEq(strict.getProperty("getter", true).return, true);
     42    assertEq(strict.getProperty("getter", null).return, null);
     43    assertEq(strict.getProperty("getter", undefined).return, undefined);
     44    assertErrorMessage(() => strict.getProperty("getter", {}), TypeError,
     45                       "Debugger: expected Debugger.Object, got Object");
     46 };