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 function test(name, fn, val) {
2 gc();
3 var ok = {}, bad = {};
4 bad.__defineSetter__(name, fn);
5 var arr = [ok, ok, ok, ok, ok, bad];
7 var log = '';
8 try {
9 for (var i = 0; i < arr.length; i++) {
10 arr[i][name] = val;
11 log += '.';
12 }
13 } catch (exc) {
14 log += 'E';
15 }
16 assertEq(log, '.....E');
17 }
19 test("x", Function.prototype.call, null); // TypeError: Function.prototype.call called on incompatible [object Object]
20 test("y", Array, 0.1); // RangeError: invalid array length
21 test(1, Function.prototype.call, null); // TypeError: Function.prototype.call called on incompatible [object Object]
22 test(1, Array, 0.1); // RangeError: invalid array length