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 // |reftest| skip-if(!xulRuntime.shell||!("normalize"in(String.prototype))) -- uses shell load() function, String.prototype.normalize is not enabled in all builds
2 var BUGNUMBER = 918987;
3 var summary = 'String.prototype.normalize';
5 print(BUGNUMBER + ": " + summary);
7 /**************
8 * BEGIN TEST *
9 **************/
11 load('ecma_6/String/normalize-generateddata-input.js');
13 function codePointsToString(points) {
14 return points.map(x => String.fromCodePoint(x)).join("");
15 }
16 function stringify(points) {
17 return points.map(x => x.toString(16)).join();
18 }
20 function runTest(test) {
21 var source = codePointsToString(test.source);
22 var NFC = codePointsToString(test.NFC);
23 var NFD = codePointsToString(test.NFD);
24 var NFKC = codePointsToString(test.NFKC);
25 var NFKD = codePointsToString(test.NFKD);
26 var sourceStr = stringify(test.source);
27 var nfcStr = stringify(test.NFC);
28 var nfdStr = stringify(test.NFD);
29 var nfkcStr = stringify(test.NFKC);
30 var nfkdStr = stringify(test.NFKD);
32 /* NFC */
33 assertEq(source.normalize(), NFC, "NFC of " + sourceStr);
34 assertEq(NFC.normalize(), NFC, "NFC of " + nfcStr);
35 assertEq(NFD.normalize(), NFC, "NFC of " + nfdStr);
36 assertEq(NFKC.normalize(), NFKC, "NFC of " + nfkcStr);
37 assertEq(NFKD.normalize(), NFKC, "NFC of " + nfkdStr);
39 assertEq(source.normalize(undefined), NFC, "NFC of " + sourceStr);
40 assertEq(NFC.normalize(undefined), NFC, "NFC of " + nfcStr);
41 assertEq(NFD.normalize(undefined), NFC, "NFC of " + nfdStr);
42 assertEq(NFKC.normalize(undefined), NFKC, "NFC of " + nfkcStr);
43 assertEq(NFKD.normalize(undefined), NFKC, "NFC of " + nfkdStr);
45 assertEq(source.normalize("NFC"), NFC, "NFC of " + sourceStr);
46 assertEq(NFC.normalize("NFC"), NFC, "NFC of " + nfcStr);
47 assertEq(NFD.normalize("NFC"), NFC, "NFC of " + nfdStr);
48 assertEq(NFKC.normalize("NFC"), NFKC, "NFC of " + nfkcStr);
49 assertEq(NFKD.normalize("NFC"), NFKC, "NFC of " + nfkdStr);
51 /* NFD */
52 assertEq(source.normalize("NFD"), NFD, "NFD of " + sourceStr);
53 assertEq(NFC.normalize("NFD"), NFD, "NFD of " + nfcStr);
54 assertEq(NFD.normalize("NFD"), NFD, "NFD of " + nfdStr);
55 assertEq(NFKC.normalize("NFD"), NFKD, "NFD of " + nfkcStr);
56 assertEq(NFKD.normalize("NFD"), NFKD, "NFD of " + nfkdStr);
58 /* NFKC */
59 assertEq(source.normalize("NFKC"), NFKC, "NFKC of " + sourceStr);
60 assertEq(NFC.normalize("NFKC"), NFKC, "NFKC of " + nfcStr);
61 assertEq(NFD.normalize("NFKC"), NFKC, "NFKC of " + nfdStr);
62 assertEq(NFKC.normalize("NFKC"), NFKC, "NFKC of " + nfkcStr);
63 assertEq(NFKD.normalize("NFKC"), NFKC, "NFKC of " + nfkdStr);
65 /* NFKD */
66 assertEq(source.normalize("NFKD"), NFKD, "NFKD of " + sourceStr);
67 assertEq(NFC.normalize("NFKD"), NFKD, "NFKD of " + nfcStr);
68 assertEq(NFD.normalize("NFKD"), NFKD, "NFKD of " + nfdStr);
69 assertEq(NFKC.normalize("NFKD"), NFKD, "NFKD of " + nfkcStr);
70 assertEq(NFKD.normalize("NFKD"), NFKD, "NFKD of " + nfkdStr);
71 }
73 for (var test0 of tests_part0) {
74 runTest(test0);
75 }
76 var part1 = new Set();
77 for (var test1 of tests_part1) {
78 part1.add(test1.source[0]);
79 runTest(test1);
80 }
81 for (var test2 of tests_part2) {
82 runTest(test2);
83 }
84 for (var test3 of tests_part3) {
85 runTest(test3);
86 }
88 /* not listed in Part 1 */
89 for (var x = 0; x <= 0x2FFFF; x++) {
90 if (part1.has(x)) {
91 continue;
92 }
93 var xstr = x.toString(16);
94 var c = String.fromCodePoint(x);
95 assertEq(c.normalize(), c, "NFC of " + xstr);
96 assertEq(c.normalize(undefined), c, "NFC of " + xstr);
97 assertEq(c.normalize("NFC"), c, "NFC of " + xstr);
98 assertEq(c.normalize("NFD"), c, "NFD of " + xstr);
99 assertEq(c.normalize("NFKC"), c, "NFKC of " + xstr);
100 assertEq(c.normalize("NFKD"), c, "NFKD of " + xstr);
101 }
103 var myobj = {toString : (function () "a\u0301"), normalize : String.prototype.normalize};
104 assertEq(myobj.normalize(), "\u00E1");
106 assertThrowsInstanceOf(function() {
107 "abc".normalize("NFE");
108 }, RangeError,
109 "String.prototype.normalize should raise RangeError on invalid form");
111 assertEq("".normalize(), "");
113 /* JSRope test */
114 var a = "";
115 var b = "";
116 for (var i = 0; i < 100; i++) {
117 a += "\u0100";
118 b += "\u0041\u0304";
119 }
120 assertEq(a.normalize("NFD"), b);
122 /******************************************************************************/
124 if (typeof reportCompare === "function")
125 reportCompare(true, true);
126 print("Tests complete");