mirror of
				https://github.com/mozilla/gecko-dev.git
				synced 2025-11-04 02:09:05 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			81 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/* 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/. */
 | 
						|
 | 
						|
export 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();
 |