2
|
1 Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
|
|
2
|
|
3 var crashreports = {
|
|
4
|
|
5 init: function(event)
|
|
6 {
|
|
7 window.removeEventListener("load", crashreports.init, false);
|
|
8 if (Components.interfaces.nsICrashReporter)
|
|
9 {
|
|
10 var service = Components.classes["@blueprintit.co.uk/breakpad;1"]
|
|
11 .getService(Components.interfaces.nttIBreakpadService);
|
|
12
|
|
13 if (nightly.preferences.getBoolPref("crashreports.recentlist.display"))
|
|
14 {
|
|
15 service.loadDatabase();
|
|
16 service.addProgressListener(crashreports);
|
|
17 }
|
|
18 else
|
|
19 {
|
|
20 document.getElementById("nightly-crashreports-incidents").parentNode.hidden=true;
|
|
21 }
|
|
22 }
|
|
23 else
|
|
24 {
|
|
25 document.getElementById("nightly-crashreports-separator").hidden = true;
|
|
26 document.getElementById("nightly-crashreports-recent").hidden = true;
|
|
27 document.getElementById("nightly-crashreports-sidebar").hidden = true;
|
|
28 }
|
|
29 },
|
|
30
|
|
31 copy: function(event)
|
|
32 {
|
|
33 var node = document.popupNode;
|
|
34 if (node.id.substring(0,12)=="breakpad-id-")
|
|
35 {
|
|
36 var id = node.id.substring(12);
|
|
37 var clipboard = Components.classes["@mozilla.org/widget/clipboardhelper;1"]
|
|
38 .getService(Components.interfaces.nsIClipboardHelper);
|
|
39 clipboard.copyString(id);
|
|
40 closeMenus(node);
|
|
41 }
|
|
42 },
|
|
43
|
|
44 onDatabaseLoaded: function()
|
|
45 {
|
|
46 var service = Components.classes["@blueprintit.co.uk/breakpad;1"]
|
|
47 .getService(Components.interfaces.nttIBreakpadService);
|
|
48
|
|
49 var incidents = null;
|
|
50
|
|
51 incidents = service.getPreviousIncidents(10);
|
|
52
|
|
53 var parent = document.getElementById("nightly-crashreports-incidents");
|
|
54 if ((incidents) && (incidents.length > 0))
|
|
55 {
|
|
56 while (parent.firstChild)
|
|
57 parent.removeChild(parent.firstChild);
|
|
58
|
|
59 var en = incidents.enumerate();
|
|
60 while (en.hasMoreElements())
|
|
61 {
|
|
62 var incident = en.getNext().QueryInterface(Components.interfaces.nttIBreakpadIncident);
|
|
63
|
|
64 var item = document.createElementNS("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul", "menuitem");
|
|
65 item.setAttribute("id", "breakpad-id-"+incident.id);
|
|
66 item.setAttribute("tooltip", "nightly-crashreport-tooltip");
|
|
67 item.setAttribute("context", "nightly-crashreport-context");
|
|
68 item.setAttribute("label", incident.id+" ("+(new Date(incident.date)).toLocaleDateString()+")");
|
|
69 parent.appendChild(item);
|
|
70 }
|
|
71 }
|
|
72 else
|
|
73 {
|
|
74 parent.parentNode.disabled=true;
|
|
75 }
|
|
76 },
|
|
77
|
|
78 popupTooltip: function(event)
|
|
79 {
|
|
80 var node = document.tooltipNode;
|
|
81 if (node.id.substring(0,12)=="breakpad-id-")
|
|
82 {
|
|
83 var id = node.id.substring(12);
|
|
84 var service = Components.classes["@blueprintit.co.uk/breakpad;1"]
|
|
85 .getService(Components.interfaces.nttIBreakpadService);
|
|
86 var incident = service.getIncident(id);
|
|
87 var label = document.getElementById("nightly-crashreport-tooltip").firstChild;
|
|
88 label.value=(new Date(incident.date)).toLocaleString();
|
|
89 return true;
|
|
90 }
|
|
91 return false;
|
|
92 },
|
|
93
|
|
94 viewIncident: function(event)
|
|
95 {
|
|
96 if (event.target.id.substring(0,12)=="breakpad-id-")
|
|
97 {
|
|
98 var url = nightly.preferences.getCharPref("breakpad.searchurl");
|
|
99 var id = event.target.id.substring(15);
|
|
100 nightlyApp.openURL(url+id, event);
|
|
101 }
|
|
102 },
|
|
103
|
|
104 QueryInterface: XPCOMUtils.generateQI([Components.interfaces.nttIBreakpadProgressListener])
|
|
105 }
|
|
106
|
|
107 window.addEventListener("load", crashreports.init, false);
|