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 // Any copyright is dedicated to the Public Domain.
2 // http://creativecommons.org/licenses/publicdomain/
4 //-----------------------------------------------------------------------------
5 var BUGNUMBER = 430133;
6 var summary = 'ES5 Object.defineProperty(O, P, Attributes)';
8 print(BUGNUMBER + ": " + summary);
10 /**************
11 * BEGIN TEST *
12 **************/
14 var o = [];
15 Object.defineProperty(o, 0, { value: 17 });
16 var desc = Object.getOwnPropertyDescriptor(o, 0);
17 assertEq(desc !== undefined, true);
18 assertEq(desc.value, 17);
19 assertEq(desc.enumerable, false);
20 assertEq(desc.configurable, false);
21 assertEq(desc.writable, false);
23 desc = Object.getOwnPropertyDescriptor(o, "length");
24 assertEq(desc !== undefined, true);
25 assertEq(desc.enumerable, false);
26 assertEq(desc.configurable, false);
27 assertEq(desc.writable, true);
28 assertEq(desc.value, 1);
29 assertEq(o.length, 1);
31 Object.defineProperty(o, "foobar",
32 { value: 42, enumerable: false, configurable: true });
33 assertEq(o.foobar, 42);
34 desc = Object.getOwnPropertyDescriptor(o, "foobar");
35 assertEq(desc !== undefined, true);
36 assertEq(desc.value, 42);
37 assertEq(desc.configurable, true);
38 assertEq(desc.enumerable, false);
39 assertEq(desc.writable, false);
41 var called = false;
42 o = { set x(a) { called = true; } };
43 Object.defineProperty(o, "x", { get: function() { return "get"; } });
44 desc = Object.getOwnPropertyDescriptor(o, "x");
45 assertEq("set" in desc, true);
46 assertEq("get" in desc, true);
47 assertEq(called, false);
48 o.x = 13;
49 assertEq(called, true);
51 var toSource = Object.prototype.toSource || function() { };
52 toSource.call(o); // a test for this not crashing
54 var called = false;
55 var o =
56 Object.defineProperty({}, "foo",
57 { get: function() { return 17; },
58 set: function(v) { called = true; } });
60 assertEq(o.foo, 17);
61 o.foo = 42;
62 assertEq(called, true);
64 /*
65 * XXX need tests for Object.defineProperty(array, "length", { ... }) when we
66 * support it!
67 */
69 /******************************************************************************/
71 if (typeof reportCompare === "function")
72 reportCompare(true, true);
74 print("All tests passed!");