diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:22:09 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:22:09 +0000 |
commit | 43a97878ce14b72f0981164f87f2e35e14151312 (patch) | |
tree | 620249daf56c0258faa40cbdcf9cfba06de2a846 /toolkit/crashreporter/CrashReports.jsm | |
parent | Initial commit. (diff) | |
download | firefox-43a97878ce14b72f0981164f87f2e35e14151312.tar.xz firefox-43a97878ce14b72f0981164f87f2e35e14151312.zip |
Adding upstream version 110.0.1.upstream/110.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'toolkit/crashreporter/CrashReports.jsm')
-rw-r--r-- | toolkit/crashreporter/CrashReports.jsm | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/toolkit/crashreporter/CrashReports.jsm b/toolkit/crashreporter/CrashReports.jsm new file mode 100644 index 0000000000..9cab0419af --- /dev/null +++ b/toolkit/crashreporter/CrashReports.jsm @@ -0,0 +1,82 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +var EXPORTED_SYMBOLS = ["CrashReports"]; + +var CrashReports = { + pendingDir: null, + reportsDir: null, + submittedDir: null, + getReports: function CrashReports_getReports() { + let reports = []; + + try { + // Ignore any non http/https urls + if (!/^https?:/i.test(Services.prefs.getCharPref("breakpad.reportURL"))) { + return reports; + } + } catch (e) {} + + if (this.submittedDir.exists() && this.submittedDir.isDirectory()) { + let entries = this.submittedDir.directoryEntries; + while (entries.hasMoreElements()) { + let file = entries.nextFile; + let leaf = file.leafName; + if (leaf.startsWith("bp-") && leaf.endsWith(".txt")) { + let entry = { + id: leaf.slice(0, -4), + date: file.lastModifiedTime, + pending: false, + }; + reports.push(entry); + } + } + } + + if (this.pendingDir.exists() && this.pendingDir.isDirectory()) { + let uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i; + let entries = this.pendingDir.directoryEntries; + while (entries.hasMoreElements()) { + let file = entries.nextFile; + let leaf = file.leafName; + let id = leaf.slice(0, -4); + if (leaf.endsWith(".dmp") && uuidRegex.test(id)) { + let entry = { + id, + date: file.lastModifiedTime, + pending: true, + }; + reports.push(entry); + } + } + } + + // Sort reports descending by date + return reports.sort((a, b) => b.date - a.date); + }, +}; + +function CrashReports_pendingDir() { + let pendingDir = Services.dirsvc.get("UAppData", Ci.nsIFile); + pendingDir.append("Crash Reports"); + pendingDir.append("pending"); + return pendingDir; +} + +function CrashReports_reportsDir() { + let reportsDir = Services.dirsvc.get("UAppData", Ci.nsIFile); + reportsDir.append("Crash Reports"); + return reportsDir; +} + +function CrashReports_submittedDir() { + let submittedDir = Services.dirsvc.get("UAppData", Ci.nsIFile); + submittedDir.append("Crash Reports"); + submittedDir.append("submitted"); + return submittedDir; +} + +CrashReports.pendingDir = CrashReports_pendingDir(); +CrashReports.reportsDir = CrashReports_reportsDir(); +CrashReports.submittedDir = CrashReports_submittedDir(); |