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 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 Components.utils.import("resource://gre/modules/Services.jsm");
7 this.EXPORTED_SYMBOLS = [
8 "CrashReports"
9 ];
11 this.CrashReports = {
12 pendingDir: null,
13 reportsDir: null,
14 submittedDir: null,
15 getReports: function CrashReports_getReports()
16 {
17 let reports = [];
19 try {
20 // Ignore any non http/https urls
21 if (!/^https?:/i.test(Services.prefs.getCharPref("breakpad.reportURL")))
22 return reports;
23 }
24 catch (e) { }
26 if (this.submittedDir.exists() && this.submittedDir.isDirectory()) {
27 let entries = this.submittedDir.directoryEntries;
28 while (entries.hasMoreElements()) {
29 let file = entries.getNext().QueryInterface(Components.interfaces.nsIFile);
30 let leaf = file.leafName;
31 if (leaf.startsWith("bp-") &&
32 leaf.endsWith(".txt")) {
33 let entry = {
34 id: leaf.slice(0, -4),
35 date: file.lastModifiedTime,
36 pending: false
37 };
38 reports.push(entry);
39 }
40 }
41 }
43 if (this.pendingDir.exists() && this.pendingDir.isDirectory()) {
44 let uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
45 let entries = this.pendingDir.directoryEntries;
46 while (entries.hasMoreElements()) {
47 let file = entries.getNext().QueryInterface(Components.interfaces.nsIFile);
48 let leaf = file.leafName;
49 let id = leaf.slice(0, -4);
50 if (leaf.endsWith(".dmp") && uuidRegex.test(id)) {
51 let entry = {
52 id: id,
53 date: file.lastModifiedTime,
54 pending: true
55 };
56 reports.push(entry);
57 }
58 }
59 }
61 // Sort reports descending by date
62 return reports.sort( (a, b) => b.date - a.date);
63 }
64 }
66 function CrashReports_pendingDir()
67 {
68 let pendingDir = Services.dirsvc.get("UAppData", Components.interfaces.nsIFile);
69 pendingDir.append("Crash Reports");
70 pendingDir.append("pending");
71 return pendingDir;
72 }
74 function CrashReports_reportsDir()
75 {
76 let reportsDir = Services.dirsvc.get("UAppData", Components.interfaces.nsIFile);
77 reportsDir.append("Crash Reports");
78 return reportsDir;
79 }
81 function CrashReports_submittedDir()
82 {
83 let submittedDir = Services.dirsvc.get("UAppData", Components.interfaces.nsIFile);
84 submittedDir.append("Crash Reports");
85 submittedDir.append("submitted");
86 return submittedDir;
87 }
89 this.CrashReports.pendingDir = CrashReports_pendingDir();
90 this.CrashReports.reportsDir = CrashReports_reportsDir();
91 this.CrashReports.submittedDir = CrashReports_submittedDir();