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 */
6 //-----------------------------------------------------------------------------
7 var BUGNUMBER = 307791;
8 var summary = 'ES5 Object.keys(O)';
9 var actual = '';
10 var expect = '';
12 printBugNumber(BUGNUMBER);
13 printStatus(summary);
15 function arraysEqual(a1, a2)
16 {
17 return a1.length === a2.length &&
18 a1.every(function(v, i) { return v === a2[i]; });
19 }
21 /**************
22 * BEGIN TEST *
23 **************/
25 assertEq(Object.keys.length, 1);
27 var o, keys;
29 o = { a: 3, b: 2 };
30 keys = Object.keys(o);
31 assertEq(arraysEqual(keys, ["a", "b"]), true,
32 "" + keys);
34 o = { get a() { return 17; }, b: 2 };
35 keys = Object.keys(o),
36 assertEq(arraysEqual(keys, ["a", "b"]), true,
37 "" + keys);
39 o = { __iterator__: function() { return Iterator({a: 2, b: 3}); } };
40 keys = Object.keys(o);
41 assertEq(arraysEqual(keys, ["__iterator__"]), true,
42 "" + keys);
44 o = { a: 1, b: 2 };
45 delete o.a;
46 o.a = 3;
47 keys = Object.keys(o);
48 assertEq(arraysEqual(keys, ["b", "a"]), true,
49 "" + keys);
51 o = [0, 1, 2];
52 keys = Object.keys(o);
53 assertEq(arraysEqual(keys, ["0", "1", "2"]), true,
54 "" + keys);
56 o = /./.exec("abc");
57 keys = Object.keys(o);
58 assertEq(arraysEqual(keys, ["0", "index", "input"]), true,
59 "" + keys);
61 o = { a: 1, b: 2, c: 3 };
62 delete o.b;
63 o.b = 5;
64 keys = Object.keys(o);
65 assertEq(arraysEqual(keys, ["a", "c", "b"]), true,
66 "" + keys);
68 function f() { }
69 f.prototype.p = 1;
70 o = new f();
71 o.g = 1;
72 keys = Object.keys(o);
73 assertEq(arraysEqual(keys, ["g"]), true,
74 "" + keys);
76 if (typeof Namespace !== "undefined" && typeof QName !== "undefined")
77 {
78 var o2 = {};
79 var qn = new QName(new Namespace("foo"), "v");
80 o2.f = 1;
81 o2[qn] = 3;
82 o2.baz = 4;
83 var keys2 = Object.keys(o2);
84 assertEq(arraysEqual(keys2, ["f", "foo::v", "baz"]), true,
85 "" + keys2);
86 }
88 /******************************************************************************/
90 reportCompare(expect, actual, "Object.keys");
92 printStatus("All tests passed!");