tor-browser

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

testDirectProxyGet10.js (939B)


      1 load(libdir + "asserts.js");
      2 
      3 var target = {x:5};
      4 var magic = false;
      5 var returnValue = 42;
      6 var handler = {
      7  get(t, p, a, b) {
      8    assertEq(a, proxy);
      9    assertEq(b, undefined);
     10    assertEq(arguments.length, 3);
     11    if (magic) {
     12      Object.defineProperty(target, 'x', {
     13          value: 42,
     14          writable: false,
     15          configurable: false
     16      });
     17      if (returnValue != 42) {
     18        gc(testGet, "shrinking");
     19      }
     20    }
     21    return returnValue;
     22  }
     23 };
     24 var proxy = new Proxy(target, handler);
     25 
     26 // Use an array that sometimes has a proxy and sometimes not, to get to
     27 // the Ion IC path.
     28 var maybeProxies = [
     29  {x: returnValue},
     30  proxy,
     31 ];
     32 
     33 function testGet(p) {
     34  return p.x;
     35 }
     36 
     37 for (i = 0; i < 200; i++) {
     38  assertEq(testGet(maybeProxies[i % maybeProxies.length]), returnValue);
     39 }
     40 magic = true;
     41 assertEq(testGet(proxy), returnValue);
     42 returnValue = 41;
     43 assertThrowsInstanceOf(function () { testGet(proxy) }, TypeError);