js/src/tests/ecma_5/Object/mutation-prevention-methods.js

Sat, 03 Jan 2015 20:18:00 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sat, 03 Jan 2015 20:18:00 +0100
branch
TOR_BUG_3246
changeset 7
129ffea94266
permissions
-rw-r--r--

Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.

     1 /*
     2  * Any copyright is dedicated to the Public Domain.
     3  * http://creativecommons.org/licenses/publicdomain/
     4  * Contributor:
     5  *   Jeff Walden <jwalden+code@mit.edu>
     6  */
     8 var gTestfile = 'mutation-prevention-methods.js';
     9 //-----------------------------------------------------------------------------
    10 var BUGNUMBER = 492849;
    11 var summary = 'Object.is{Sealed,Frozen}, Object.{seal,freeze}';
    13 print(BUGNUMBER + ": " + summary);
    15 /**************
    16  * BEGIN TEST *
    17  **************/
    19 // Empty object
    21 var o1 = {};
    23 assertEq(Object.isExtensible(o1), true);
    24 assertEq(Object.isSealed(o1), false);
    25 assertEq(Object.isFrozen(o1), false);
    27 Object.preventExtensions(o1);
    29 // An non-extensible empty object has no properties, so it is vacuously sealed
    30 // and frozen.
    31 assertEq(Object.isExtensible(o1), false);
    32 assertEq(Object.isSealed(o1), true);
    33 assertEq(Object.isFrozen(o1), true);
    36 // Object with a data property
    38 var o2 = { 1: 2 };
    40 assertEq(Object.isExtensible(o2), true);
    41 assertEq(Object.isSealed(o2), false);
    42 assertEq(Object.isFrozen(o2), false);
    44 Object.preventExtensions(o2);
    46 assertEq(Object.isExtensible(o2), false);
    47 assertEq(Object.isSealed(o2), false);
    48 assertEq(Object.isFrozen(o2), false);
    50 Object.seal(o2);
    52 assertEq(Object.isExtensible(o2), false);
    53 assertEq(Object.isSealed(o2), true);
    54 assertEq(Object.isFrozen(o2), false);
    56 assertEq(o2[1], 2);
    58 var desc;
    60 desc = Object.getOwnPropertyDescriptor(o2, "1");
    61 assertEq(typeof desc, "object");
    62 assertEq(desc.enumerable, true);
    63 assertEq(desc.configurable, false);
    64 assertEq(desc.value, 2);
    65 assertEq(desc.writable, true);
    67 o2[1] = 17;
    69 assertEq(o2[1], 17);
    71 desc = Object.getOwnPropertyDescriptor(o2, "1");
    72 assertEq(typeof desc, "object");
    73 assertEq(desc.enumerable, true);
    74 assertEq(desc.configurable, false);
    75 assertEq(desc.value, 17);
    76 assertEq(desc.writable, true);
    78 Object.freeze(o2);
    80 assertEq(o2[1], 17);
    82 desc = Object.getOwnPropertyDescriptor(o2, "1");
    83 assertEq(typeof desc, "object");
    84 assertEq(desc.enumerable, true);
    85 assertEq(desc.configurable, false);
    86 assertEq(desc.value, 17);
    87 assertEq(desc.writable, false);
    90 // Object with an accessor property
    92 var o3 = { get foo() { return 17; } };
    94 assertEq(Object.isExtensible(o3), true);
    95 assertEq(Object.isSealed(o3), false);
    96 assertEq(Object.isFrozen(o3), false);
    98 Object.preventExtensions(o3);
   100 assertEq(Object.isExtensible(o3), false);
   101 assertEq(Object.isSealed(o3), false);
   102 assertEq(Object.isFrozen(o3), false);
   104 Object.seal(o3);
   106 // An accessor property in a sealed object is unchanged if that object is
   107 // frozen, so a sealed object containing only accessor properties is also
   108 // vacuously frozen.
   109 assertEq(Object.isExtensible(o3), false);
   110 assertEq(Object.isSealed(o3), true);
   111 assertEq(Object.isFrozen(o3), true);
   113 Object.freeze(o3);
   115 assertEq(Object.isExtensible(o3), false);
   116 assertEq(Object.isSealed(o3), true);
   117 assertEq(Object.isFrozen(o3), true);
   120 /******************************************************************************/
   122 reportCompare(true, true);
   124 print("All tests passed!");

mercurial