tor-browser

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

global-getter.js (1169B)


      1 // Tests for |this| value passed to getters defined on the global.
      2 
      3 function test(useWindowProxy) {
      4    var g = newGlobal({useWindowProxy});
      5    g.useWindowProxy = useWindowProxy;
      6    g.evaluate(`
      7        var x = 123;
      8        Object.defineProperty(this, "getX", {get: function() { return this.x; }});
      9        Object.defineProperty(Object.prototype, "protoGetX", {get: function() { return this.x * 2; }});
     10        Object.defineProperty(this, "thisIsProxy", {get: function() { return isProxy(this); }});
     11 
     12        function f() {
     13            for (var i = 0; i < 100; i++) {
     14                // GetGName
     15                assertEq(getX, 123);
     16                assertEq(protoGetX, 246);
     17                assertEq(thisIsProxy, useWindowProxy);
     18                // GetProp
     19                assertEq(globalThis.getX, 123);
     20                assertEq(globalThis.protoGetX, 246);
     21                assertEq(globalThis.thisIsProxy, useWindowProxy);
     22            }
     23        }
     24        f();
     25    `);
     26 }
     27 
     28 for (let useWindowProxy of [true, false]) {
     29    test(useWindowProxy);
     30 }
     31 
     32 setJitCompilerOption("ic.force-megamorphic", 1);
     33 
     34 for (let useWindowProxy of [true, false]) {
     35    test(useWindowProxy);
     36 }