tor-browser

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

non-extensible-elements1.js (1860B)


      1 function testTestIntegrityLevel(a, hasElems) {
      2    assertEq(Object.isExtensible(a), true);
      3    assertEq(Object.isSealed(a), false);
      4    assertEq(Object.isFrozen(a), false);
      5 
      6    Object.preventExtensions(a);
      7    assertEq(Object.isExtensible(a), false);
      8    assertEq(Object.isSealed(a), !hasElems);
      9    assertEq(Object.isFrozen(a), false);
     10 
     11    Object.seal(a);
     12    assertEq(Object.isExtensible(a), false);
     13    assertEq(Object.isSealed(a), true);
     14    assertEq(Object.isFrozen(a), false);
     15 
     16    Object.freeze(a);
     17    assertEq(Object.isExtensible(a), false);
     18    assertEq(Object.isSealed(a), true);
     19    assertEq(Object.isFrozen(a), true);
     20 }
     21 testTestIntegrityLevel([1, 2, 3], true);
     22 testTestIntegrityLevel([1, , , 2], true);
     23 testTestIntegrityLevel([1, , , ], true);
     24 testTestIntegrityLevel([, , , ], false);
     25 testTestIntegrityLevel([], false);
     26 testTestIntegrityLevel({0: 0}, true);
     27 var a = [,,,,,,, 1];
     28 a.pop();
     29 testTestIntegrityLevel(a, false);
     30 
     31 function testDescriptor() {
     32    var a = [1];
     33    Object.preventExtensions(a);
     34    assertEq(JSON.stringify(Object.getOwnPropertyDescriptors(a)),
     35             `{"0":{"value":1,"writable":true,"enumerable":true,"configurable":true},` +
     36             `"length":{"value":1,"writable":true,"enumerable":false,"configurable":false}}`);
     37 
     38    a = [1];
     39    Object.seal(a);
     40    assertEq(JSON.stringify(Object.getOwnPropertyDescriptors(a)),
     41             `{"0":{"value":1,"writable":true,"enumerable":true,"configurable":false},` +
     42             `"length":{"value":1,"writable":true,"enumerable":false,"configurable":false}}`);
     43 
     44    a = [1];
     45    Object.freeze(a);
     46    assertEq(JSON.stringify(Object.getOwnPropertyDescriptors(a)),
     47             `{"0":{"value":1,"writable":false,"enumerable":true,"configurable":false},` +
     48             `"length":{"value":1,"writable":false,"enumerable":false,"configurable":false}}`);
     49 }
     50 testDescriptor();