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 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 /*
7 *
8 * Date: 13 Sep 2002
9 * SUMMARY: Testing F.toString()
10 * See http://bugzilla.mozilla.org/show_bug.cgi?id=168347
11 *
12 */
13 //-----------------------------------------------------------------------------
14 var UBound = 0;
15 var BUGNUMBER = 168347;
16 var summary = "Testing F.toString()";
17 var status = '';
18 var statusitems = [];
19 var actual = '';
20 var actualvalues = [];
21 var expect= '';
22 var expectedvalues = [];
23 var FtoString = '';
24 var sFunc = '';
26 sFunc += 'function F()';
27 sFunc += '{';
28 sFunc += ' var f = arguments.callee;';
29 sFunc += ' f.i = 0;';
30 sFunc += '';
31 sFunc += ' try';
32 sFunc += ' {';
33 sFunc += ' f.i = f.i + 1;';
34 sFunc += ' print("i = i+1 succeeded \ti = " + f.i);';
35 sFunc += ' }';
36 sFunc += ' catch(e)';
37 sFunc += ' {';
38 sFunc += ' print("i = i+1 failed with " + e + "\ti = " + f.i);';
39 sFunc += ' }';
40 sFunc += '';
41 sFunc += ' try';
42 sFunc += ' {';
43 sFunc += ' ++f.i;';
44 sFunc += ' print("++i succeeded \t\ti = " + f.i);';
45 sFunc += ' }';
46 sFunc += ' catch(e)';
47 sFunc += ' {';
48 sFunc += ' print("++i failed with " + e + "\ti = " + f.i);';
49 sFunc += ' }';
50 sFunc += '';
51 sFunc += ' try';
52 sFunc += ' {';
53 sFunc += ' f.i++;';
54 sFunc += ' print("i++ succeeded \t\ti = " + f.i);';
55 sFunc += ' }';
56 sFunc += ' catch(e)';
57 sFunc += ' {';
58 sFunc += ' print("i++ failed with " + e + "\ti = " + f.i);';
59 sFunc += ' }';
60 sFunc += '';
61 sFunc += ' try';
62 sFunc += ' {';
63 sFunc += ' --f.i;';
64 sFunc += ' print("--i succeeded \t\ti = " + f.i);';
65 sFunc += ' }';
66 sFunc += ' catch(e)';
67 sFunc += ' {';
68 sFunc += ' print("--i failed with " + e + "\ti = " + f.i);';
69 sFunc += ' }';
70 sFunc += '';
71 sFunc += ' try';
72 sFunc += ' {';
73 sFunc += ' f.i--;';
74 sFunc += ' print("i-- succeeded \t\ti = " + f.i);';
75 sFunc += ' }';
76 sFunc += ' catch(e)';
77 sFunc += ' {';
78 sFunc += ' print("i-- failed with " + e + "\ti = " + f.i);';
79 sFunc += ' }';
80 sFunc += '}';
83 /*
84 * Use sFunc to define the function F. The test
85 * then rests on comparing F.toString() to sFunc.
86 */
87 eval(sFunc);
90 /*
91 * There are trivial whitespace differences between F.toString()
92 * and sFunc. So strip out whitespace before comparing them -
93 */
94 sFunc = stripWhite(sFunc);
95 FtoString = stripWhite(F.toString());
98 /*
99 * Break comparison into sections to make any failures
100 * easier for the developer to track down -
101 */
102 status = inSection(1);
103 actual = FtoString.substring(0,100);
104 expect = sFunc.substring(0,100);
105 addThis();
107 status = inSection(2);
108 actual = FtoString.substring(100,200);
109 expect = sFunc.substring(100,200);
110 addThis();
112 status = inSection(3);
113 actual = FtoString.substring(200,300);
114 expect = sFunc.substring(200,300);
115 addThis();
117 status = inSection(4);
118 actual = FtoString.substring(300,400);
119 expect = sFunc.substring(300,400);
120 addThis();
122 status = inSection(5);
123 actual = FtoString.substring(400,500);
124 expect = sFunc.substring(400,500);
125 addThis();
127 status = inSection(6);
128 actual = FtoString.substring(500,600);
129 expect = sFunc.substring(500,600);
130 addThis();
132 status = inSection(7);
133 actual = FtoString.substring(600,700);
134 expect = sFunc.substring(600,700);
135 addThis();
137 status = inSection(8);
138 actual = FtoString.substring(700,800);
139 expect = sFunc.substring(700,800);
140 addThis();
142 status = inSection(9);
143 actual = FtoString.substring(800,900);
144 expect = sFunc.substring(800,900);
145 addThis();
149 //-----------------------------------------------------------------------------
150 test();
151 //-----------------------------------------------------------------------------
155 function addThis()
156 {
157 statusitems[UBound] = status;
158 actualvalues[UBound] = actual;
159 expectedvalues[UBound] = expect;
160 UBound++;
161 }
163 /*
164 * Remove any whitespace characters; also
165 * any escaped tabs or escaped newlines.
166 */
167 function stripWhite(str)
168 {
169 var re = /\s|\\t|\\n/g;
170 return str.replace(re, '');
171 }
174 function test()
175 {
176 enterFunc('test');
177 printBugNumber(BUGNUMBER);
178 printStatus(summary);
180 for (var i=0; i<UBound; i++)
181 {
182 reportCompare(expectedvalues[i], actualvalues[i], statusitems[i]);
183 }
185 exitFunc ('test');
186 }