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: 08 Jan 2002
9 * SUMMARY: Just testing that we don't crash on this code
10 * See http://bugzilla.mozilla.org/show_bug.cgi?id=118849
11 *
12 * http://developer.netscape.com:80/docs/manuals/js/core/jsref/function.htm
13 * The Function constructor:
14 * Function ([arg1[, arg2[, ... argN]],] functionBody)
15 *
16 * Parameters
17 * arg1, arg2, ... argN
18 * (Optional) Names to be used by the function as formal argument names.
19 * Each must be a string that corresponds to a valid JavaScript identifier.
20 *
21 * functionBody
22 * A string containing JS statements comprising the function definition.
23 */
24 //-----------------------------------------------------------------------------
25 var UBound = 0;
26 var BUGNUMBER = 118849;
27 var summary = 'Should not crash if we provide Function() with bad arguments'
28 var status = '';
29 var statusitems = [];
30 var actual = '';
31 var actualvalues = [];
32 var expect= '';
33 var expectedvalues = [];
34 var cnFAIL_1 = 'LEGAL call to Function() caused an ERROR!!!';
35 var cnFAIL_2 = 'ILLEGAL call to Function() FAILED to cause an error';
36 var cnSTRING = 'ASDF';
37 var cnNUMBER = 123;
40 /***********************************************************/
41 /**** THESE ARE LEGITMATE CALLS AND SHOULD ALL SUCCEED ***/
42 /***********************************************************/
43 status = inSection(1);
44 actual = cnFAIL_1; // initialize to failure
45 try
46 {
47 Function(cnSTRING);
48 Function(cnNUMBER); // cnNUMBER is a valid functionBody
49 Function(cnSTRING,cnSTRING);
50 Function(cnSTRING,cnNUMBER);
51 Function(cnSTRING,cnSTRING,cnNUMBER);
53 new Function(cnSTRING);
54 new Function(cnNUMBER);
55 new Function(cnSTRING,cnSTRING);
56 new Function(cnSTRING,cnNUMBER);
57 new Function(cnSTRING,cnSTRING,cnNUMBER);
59 actual = expect;
60 }
61 catch(e)
62 {
63 }
64 addThis();
68 /**********************************************************/
69 /*** EACH CASE THAT FOLLOWS SHOULD TRIGGER AN ERROR ***/
70 /*** (BUT NOT A CRASH) ***/
71 /*** NOTE WE NOW USE cnFAIL_2 INSTEAD OF cnFAIL_1 ***/
72 /**********************************************************/
73 status = inSection(2);
74 actual = cnFAIL_2;
75 try
76 {
77 Function(cnNUMBER,cnNUMBER); // cnNUMBER is an invalid JS identifier name
78 }
79 catch(e)
80 {
81 actual = expect;
82 }
83 addThis();
86 status = inSection(3);
87 actual = cnFAIL_2;
88 try
89 {
90 Function(cnNUMBER,cnSTRING,cnSTRING);
91 }
92 catch(e)
93 {
94 actual = expect;
95 }
96 addThis();
99 status = inSection(4);
100 actual = cnFAIL_2;
101 try
102 {
103 new Function(cnNUMBER,cnNUMBER);
104 }
105 catch(e)
106 {
107 actual = expect;
108 }
109 addThis();
112 status = inSection(5);
113 actual = cnFAIL_2;
114 try
115 {
116 new Function(cnNUMBER,cnSTRING,cnSTRING);
117 }
118 catch(e)
119 {
120 actual = expect;
121 }
122 addThis();
126 //-----------------------------------------------------------------------------
127 test();
128 //-----------------------------------------------------------------------------
131 function addThis()
132 {
133 statusitems[UBound] = status;
134 actualvalues[UBound] = actual;
135 expectedvalues[UBound] = expect;
136 UBound++;
137 }
140 function test()
141 {
142 enterFunc ('test');
143 printBugNumber(BUGNUMBER);
144 printStatus (summary);
146 for (var i = 0; i < UBound; i++)
147 {
148 reportCompare(expectedvalues[i], actualvalues[i], statusitems[i]);
149 }
151 exitFunc ('test');
152 }