tor-browser

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

shape-snapshots.js (1083B)


      1 function test1() {
      2    var o = {x: 1, y: 2};
      3    var snapshot = createShapeSnapshot(o);
      4    checkShapeSnapshot(snapshot);
      5    Object.defineProperty(o, "z", {get: function() {}});
      6    checkShapeSnapshot(snapshot);
      7 
      8    snapshot = createShapeSnapshot(o);
      9    checkShapeSnapshot(snapshot);
     10    o[12345678] = 1;
     11    checkShapeSnapshot(snapshot);
     12 
     13    snapshot = createShapeSnapshot(o);
     14    Object.defineProperty(o, "a", {configurable: true, set: function(){}});
     15    checkShapeSnapshot(snapshot);
     16 
     17    snapshot = createShapeSnapshot(o);
     18    checkShapeSnapshot(snapshot);
     19    delete o.a;
     20    checkShapeSnapshot(snapshot);
     21 }
     22 test1();
     23 
     24 function test2() {
     25    var dictObject = {x: 1, y: 2, z: 3};
     26    delete dictObject.x;
     27    var objects = [this, {}, {x: 1}, {x: 2}, dictObject, function() {}, [1, 2],
     28                   Object.prototype, new Proxy({}, {})];
     29    var snapshots = objects.map(o => createShapeSnapshot(o));
     30    gc();
     31    snapshots.forEach(function(snapshot) {
     32        objects.forEach(function(obj) {
     33            checkShapeSnapshot(snapshot, obj);
     34        });
     35    });
     36 }
     37 test2();