Mercurial > nightly_tester_tools
diff chrome/content/crashreports/crashreports.js @ 2:472a16863ecc
expanded nightly.jar
| author | Yoshiki Yazawa <yaz@honeyplanet.jp> |
|---|---|
| date | Tue, 02 Dec 2008 20:38:20 +0900 |
| parents | |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/chrome/content/crashreports/crashreports.js Tue Dec 02 20:38:20 2008 +0900 @@ -0,0 +1,107 @@ +Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); + +var crashreports = { + +init: function(event) +{ + window.removeEventListener("load", crashreports.init, false); + if (Components.interfaces.nsICrashReporter) + { + var service = Components.classes["@blueprintit.co.uk/breakpad;1"] + .getService(Components.interfaces.nttIBreakpadService); + + if (nightly.preferences.getBoolPref("crashreports.recentlist.display")) + { + service.loadDatabase(); + service.addProgressListener(crashreports); + } + else + { + document.getElementById("nightly-crashreports-incidents").parentNode.hidden=true; + } + } + else + { + document.getElementById("nightly-crashreports-separator").hidden = true; + document.getElementById("nightly-crashreports-recent").hidden = true; + document.getElementById("nightly-crashreports-sidebar").hidden = true; + } +}, + +copy: function(event) +{ + var node = document.popupNode; + if (node.id.substring(0,12)=="breakpad-id-") + { + var id = node.id.substring(12); + var clipboard = Components.classes["@mozilla.org/widget/clipboardhelper;1"] + .getService(Components.interfaces.nsIClipboardHelper); + clipboard.copyString(id); + closeMenus(node); + } +}, + +onDatabaseLoaded: function() +{ + var service = Components.classes["@blueprintit.co.uk/breakpad;1"] + .getService(Components.interfaces.nttIBreakpadService); + + var incidents = null; + + incidents = service.getPreviousIncidents(10); + + var parent = document.getElementById("nightly-crashreports-incidents"); + if ((incidents) && (incidents.length > 0)) + { + while (parent.firstChild) + parent.removeChild(parent.firstChild); + + var en = incidents.enumerate(); + while (en.hasMoreElements()) + { + var incident = en.getNext().QueryInterface(Components.interfaces.nttIBreakpadIncident); + + var item = document.createElementNS("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul", "menuitem"); + item.setAttribute("id", "breakpad-id-"+incident.id); + item.setAttribute("tooltip", "nightly-crashreport-tooltip"); + item.setAttribute("context", "nightly-crashreport-context"); + item.setAttribute("label", incident.id+" ("+(new Date(incident.date)).toLocaleDateString()+")"); + parent.appendChild(item); + } + } + else + { + parent.parentNode.disabled=true; + } +}, + +popupTooltip: function(event) +{ + var node = document.tooltipNode; + if (node.id.substring(0,12)=="breakpad-id-") + { + var id = node.id.substring(12); + var service = Components.classes["@blueprintit.co.uk/breakpad;1"] + .getService(Components.interfaces.nttIBreakpadService); + var incident = service.getIncident(id); + var label = document.getElementById("nightly-crashreport-tooltip").firstChild; + label.value=(new Date(incident.date)).toLocaleString(); + return true; + } + return false; +}, + +viewIncident: function(event) +{ + if (event.target.id.substring(0,12)=="breakpad-id-") + { + var url = nightly.preferences.getCharPref("breakpad.searchurl"); + var id = event.target.id.substring(15); + nightlyApp.openURL(url+id, event); + } +}, + +QueryInterface: XPCOMUtils.generateQI([Components.interfaces.nttIBreakpadProgressListener]) +} + +window.addEventListener("load", crashreports.init, false);
