Sat, 03 Jan 2015 20:18:00 +0100
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 = 'add-property-non-extensible.js';
9 //-----------------------------------------------------------------------------
10 var BUGNUMBER = 602144;
11 var summary =
12 'Properly method-compile attempted addition of properties to ' +
13 'non-extensible objects';
15 print(BUGNUMBER + ": " + summary);
17 /**************
18 * BEGIN TEST *
19 **************/
21 // No property
23 var o1 = {};
24 for (var i = 0; i < 5; i++)
25 o1.a = 3;
26 assertEq(o1.a, 3);
28 var o2 = Object.preventExtensions({});
29 for (var i = 0; i < 5; i++)
30 o2.a = 3;
31 assertEq(Object.getOwnPropertyDescriptor(o2, "a"), undefined);
33 var o3 = Object.seal({});
34 for (var i = 0; i < 5; i++)
35 o3.a = 3;
36 assertEq(Object.getOwnPropertyDescriptor(o3, "a"), undefined);
38 var o4 = Object.freeze({});
39 for (var i = 0; i < 5; i++)
40 o4.a = 3;
41 assertEq(Object.getOwnPropertyDescriptor(o4, "a"), undefined);
44 // Has property
46 var o5 = { a: 2 };
47 for (var i = 0; i < 5; i++)
48 o5.a = 3;
49 assertEq(o5.a, 3);
51 var o6 = Object.preventExtensions({ a: 2 });
52 for (var i = 0; i < 5; i++)
53 o6.a = 3;
54 assertEq(o6.a, 3);
56 var o7 = Object.seal({ a: 2 });
57 for (var i = 0; i < 5; i++)
58 o7.a = 3;
59 assertEq(o7.a, 3);
61 var o8 = Object.freeze({ a: 2 });
62 for (var i = 0; i < 5; i++)
63 o8.a = 3;
64 assertEq(o8.a, 2);
67 // Extensible, hit up the prototype chain
69 var o9 = Object.create({ a: 2 });
70 for (var i = 0; i < 5; i++)
71 o9.a = 3;
72 assertEq(o9.a, 3);
74 var o10 = Object.create(Object.preventExtensions({ a: 2 }));
75 for (var i = 0; i < 5; i++)
76 o10.a = 3;
77 assertEq(o10.a, 3);
79 var o11 = Object.create(Object.seal({ a: 2 }));
80 for (var i = 0; i < 5; i++)
81 o11.a = 3;
82 assertEq(o11.a, 3);
84 var o12 = Object.create(Object.freeze({ a: 2 }));
85 for (var i = 0; i < 5; i++)
86 o12.a = 3;
87 assertEq(Object.getOwnPropertyDescriptor(o12, "a"), undefined);
90 // Not extensible, hit up the prototype chain
92 var o13 = Object.preventExtensions(Object.create({ a: 2 }));
93 for (var i = 0; i < 5; i++)
94 o13.a = 3;
95 assertEq(Object.getOwnPropertyDescriptor(o13, "a"), undefined);
97 var o14 =
98 Object.preventExtensions(Object.create(Object.preventExtensions({ a: 2 })));
99 for (var i = 0; i < 5; i++)
100 o14.a = 3;
101 assertEq(Object.getOwnPropertyDescriptor(o14, "a"), undefined);
103 var o15 = Object.preventExtensions(Object.create(Object.seal({ a: 2 })));
104 for (var i = 0; i < 5; i++)
105 o15.a = 3;
106 assertEq(Object.getOwnPropertyDescriptor(o15, "a"), undefined);
108 var o16 = Object.preventExtensions(Object.create(Object.freeze({ a: 2 })));
109 for (var i = 0; i < 5; i++)
110 o16.a = 3;
111 assertEq(Object.getOwnPropertyDescriptor(o16, "a"), undefined);
114 /******************************************************************************/
116 reportCompare(true, true);
118 print("All tests passed!");