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 const Ci = Components.interfaces;
2 const Cc = Components.classes;
4 var nameArray = [
5 "ascii", // ASCII
6 "fran\u00E7ais", // Latin-1
7 "\u0420\u0443\u0441\u0441\u043A\u0438\u0439", // Cyrillic
8 "\u65E5\u672C\u8A9E", // Japanese
9 "\u4E2D\u6587", // Chinese
10 "\uD55C\uAD6D\uC5B4", // Korean
11 "\uD801\uDC0F\uD801\uDC2D\uD801\uDC3B\uD801\uDC2B" // Deseret
12 ];
14 function getTempDir()
15 {
16 var dirService = Cc["@mozilla.org/file/directory_service;1"]
17 .getService(Ci.nsIProperties);
18 return dirService.get("TmpD", Ci.nsILocalFile);
19 }
21 function create_file(fileName)
22 {
23 var outFile = getTempDir();
24 outFile.append(fileName);
25 outFile.createUnique(outFile.NORMAL_FILE_TYPE, 0600);
27 var stream = Cc["@mozilla.org/network/file-output-stream;1"]
28 .createInstance(Ci.nsIFileOutputStream);
29 stream.init(outFile, 0x02 | 0x08 | 0x20, 0600, 0);
30 stream.write("foo", 3);
31 stream.close();
33 do_check_eq(outFile.leafName.substr(0, fileName.length), fileName);
35 return outFile;
36 }
38 function test_create(fileName)
39 {
40 var file1 = create_file(fileName);
41 var file2 = create_file(fileName);
42 file1.remove(false);
43 file2.remove(false);
44 }
46 function run_test()
47 {
48 for (var i = 0; i < nameArray.length; ++i) {
49 test_create(nameArray[i]);
50 }
51 }