tor-browser

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

Object-proxy.js (1650B)


      1 // Debugger.Object.prototype.isProxy recognizes (scripted) proxies.
      2 // Debugger.Object.prototype.proxyTarget exposes the [[Proxytarget]] of a proxy.
      3 // Debugger.Object.prototype.proxyHandler exposes the [[ProxyHandler]] of a proxy.
      4 
      5 var g = newGlobal({newCompartment: true});
      6 var dbg = new Debugger;
      7 var gDO = dbg.addDebuggee(g);
      8 
      9 g.eval('var target = [1,2,3];');
     10 g.eval('var handler = {has: ()=>false};');
     11 g.eval('var proxy = new Proxy(target, handler);');
     12 g.eval('var proxyProxy = new Proxy(proxy, proxy);');
     13 g.eval('var revoker = Proxy.revocable(target, handler);');
     14 g.eval('var revocable = revoker.proxy;');
     15 
     16 var target = gDO.getOwnPropertyDescriptor('target').value;
     17 var handler = gDO.getOwnPropertyDescriptor('handler').value;
     18 var proxy = gDO.getOwnPropertyDescriptor('proxy').value;
     19 var proxyProxy = gDO.getOwnPropertyDescriptor('proxyProxy').value;
     20 var revocable = gDO.getOwnPropertyDescriptor('revocable').value;
     21 
     22 assertEq(target.isProxy, false);
     23 assertEq(target.proxyTarget, undefined);
     24 assertEq(target.proxyHandler, undefined);
     25 
     26 assertEq(handler.isProxy, false);
     27 assertEq(handler.proxyTarget, undefined);
     28 assertEq(handler.proxyHandler, undefined);
     29 
     30 assertEq(proxy.isProxy, true);
     31 assertEq(proxy.proxyTarget, target);
     32 assertEq(proxy.proxyHandler, handler);
     33 
     34 assertEq(proxyProxy.isProxy, true);
     35 assertEq(proxyProxy.proxyTarget, proxy);
     36 assertEq(proxyProxy.proxyHandler, proxy);
     37 
     38 assertEq(revocable.isProxy, true);
     39 assertEq(revocable.proxyTarget, target);
     40 assertEq(revocable.proxyHandler, handler);
     41 g.eval('revoker.revoke();');
     42 assertEq(revocable.isProxy, true);
     43 assertEq(revocable.proxyTarget, null);
     44 assertEq(revocable.proxyHandler, null);