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 gTestcases = new Array();
2 function TestCase(n, d, e, a) {
3 this.name = n;
4 this.description = d;
5 this.expect = e;
6 this.actual = a;
7 this.passed = getTestCaseResult(e, a);
8 options.stackvalues = [];
9 function getTestCaseResult(expected, actual) { }
10 }
11 var lfcode = new Array();
12 lfcode.push("3");
13 lfcode.push("var statusitems = [];\
14 var actualvalues = [];\
15 var expectedvalues = [];\
16 actual = '$a$^'.replace(/\\$\\^/, '--');\
17 actual = 'ababc'.replace(/abc/, '--');\
18 actual = 'ababc'.replace(/abc/g, '--');\
19 ");
20 lfcode.push("\
21 var SECTION = \"15.4.4.3-1\";\
22 new TestCase( SECTION, \"Array.prototype.join.length\", 1, Array.prototype.join.length );\
23 new TestCase( SECTION, \"delete Array.prototype.join.length\", false, delete Array.prototype.join.length );\
24 new TestCase( SECTION, \"delete Array.prototype.join.length; Array.prototype.join.length\", 1, eval(\"delete Array.prototype.join.length; Array.prototype.join.length\") );\
25 new TestCase( SECTION, eval(\"var TEST_ARRAY = new Array(); TEST_ARRAY.join()\") );\
26 new TestCase( SECTION, eval(\"var TEST_ARRAY = new Array(); TEST_ARRAY.join(' ')\") );\
27 new TestCase( SECTION, eval(\"var TEST_ARRAY = new Array(null, void 0, true, false, 123, new Object(), new Boolean(true) ); TEST_ARRAY.join('&')\") );\
28 new TestCase( SECTION, eval(\"var TEST_ARRAY = new Array(null, void 0, true, false, 123, new Object(), new Boolean(true) ); TEST_ARRAY.join('')\") );\
29 new TestCase( SECTION, eval(\"var TEST_ARRAY = new Array(null, void 0, true, false, 123, new Object(), new Boolean(true) ); TEST_ARRAY.join(void 0)\") );\
30 new TestCase( SECTION, eval(\"var TEST_ARRAY = new Array(null, void 0, true, false, 123, new Object(), new Boolean(true) ); TEST_ARRAY.join()\") );\
31 new TestCase( SECTION, eval(\"var TEST_ARRAY = new Array(true); TEST_ARRAY.join('\\v')\") );\
32 SEPARATOR = \"\\t\";\
33 new TestCase( SECTION,TEST_ARRAY.join( SEPARATOR ) );\
34 ");
35 lfcode.push("new TestCase( assertEq, \"String.prototype.toString()\", \"\", String.prototype.toString() );\
36 new TestCase( SECTION, \"(new String()).toString()\", \"\", (new String()).toString() );\
37 new TestCase( SECTION, \"(new String(\\\"\\\")).toString()\", \"\", (new String(\"\")).toString() );\
38 new TestCase( SECTION, \"(new String( String() )).toString()\",\"\", (new String(String())).toString() );\
39 gczeal(4);\
40 new TestCase( SECTION, \"(new String( 0 )).toString()\", \"0\", (new String((1))).toString() );\
41 ");
42 while (true) {
43 var file = lfcode.shift(); if (file == undefined) { break; }
44 loadFile(file);
45 }
46 function loadFile(lfVarx) {
47 try {
48 if (lfVarx.substr(-3) == ".js") {
49 } else if (!isNaN(lfVarx)) {
50 lfRunTypeId = lfVarx;
51 } else {
52 switch (lfRunTypeId) {
53 default: evaluate(lfVarx);
54 }
55 }
56 } catch (lfVare) {}
57 }