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 var calls = 0;
2 function g() {
3 calls++;
4 };
5 function test1() {
6 for (var i=0; i<20; i++) {
7 if (i > 18)
8 g() = 2;
9 }
10 }
11 try {
12 test1();
13 assertEq(0, 1);
14 } catch(e) {
15 assertEq(e instanceof ReferenceError, true);
16 }
18 assertEq(calls, 1);
20 function test2() {
21 for (var i=0; i<20; i++) {
22 if (i > 18)
23 g()++;
24 }
25 }
26 try {
27 test2();
28 assertEq(0, 1);
29 } catch(e) {
30 assertEq(e instanceof ReferenceError, true);
31 }
32 assertEq(calls, 2);
34 function test3() {
35 var v1, v2, v3;
36 var z = [1, 2, 3];
37 for (var i=0; i<15; i++) {
38 if (i > 12)
39 [v1, v2, g(), v3] = z
40 }
41 }
42 try {
43 test3();
44 assertEq(0, 1);
45 } catch(e) {
46 assertEq(e instanceof ReferenceError, true);
47 }
48 assertEq(calls, 3);
50 function test4() {
51 for (var i=0; i<20; i++) {
52 if (i > 18)
53 g() >>= 2;
54 }
55 }
56 try {
57 test4();
58 assertEq(0, 1);
59 } catch(e) {
60 assertEq(e instanceof ReferenceError, true);
61 }
63 assertEq(calls, 4);