From f403be2fc5da4100b1a64378e23eaeb6336c2759 Mon Sep 17 00:00:00 2001 From: Simon Kornblith Date: Mon, 13 Feb 2012 20:42:32 -0500 Subject: [PATCH] Keep track of startup errors and the last 25 errors on our own (since otherwise errors tend to be crowded out of the buffer by CSS warnings) --- chrome/content/zotero/xpcom/zotero.js | 116 ++++++++++++++++---------- 1 file changed, 74 insertions(+), 42 deletions(-) diff --git a/chrome/content/zotero/xpcom/zotero.js b/chrome/content/zotero/xpcom/zotero.js index 19f29ce1e..1bcc56bd1 100644 --- a/chrome/content/zotero/xpcom/zotero.js +++ b/chrome/content/zotero/xpcom/zotero.js @@ -194,6 +194,13 @@ const ZOTERO_CONFIG = { */ var _runningTimers = []; + // Errors that were in the console at startup + var _startupErrors = []; + // Number of errors to maintain in the recent errors buffer + const ERROR_BUFFER_SIZE = 25; + // A rolling buffer of the last ERROR_BUFFER_SIZE errors + var _recentErrors = []; + /** * Initialize the extension */ @@ -429,6 +436,15 @@ const ZOTERO_CONFIG = { Zotero.IPC.init(); + var cs = Components.classes["@mozilla.org/consoleservice;1"]. + getService(Components.interfaces.nsIConsoleService); + // Get startup errors + var messages = {}; + cs.getMessageArray(messages, {}); + _startupErrors = [msg for each(msg in messages.value) if(_shouldKeepError(msg))]; + // Register error observer + cs.registerListener(ConsoleListener); + // Load additional info for connector or not if(Zotero.isConnector) { Zotero.debug("Loading in connector mode"); @@ -1167,49 +1183,8 @@ const ZOTERO_CONFIG = { function getErrors(asStrings) { var errors = []; - var cs = Components.classes["@mozilla.org/consoleservice;1"]. - getService(Components.interfaces.nsIConsoleService); - var messages = {}; - cs.getMessageArray(messages, {}) - var skip = ['CSS Parser', 'content javascript']; - - msgblock: - for each(var msg in messages.value) { - //Zotero.debug(msg); - try { - msg.QueryInterface(Components.interfaces.nsIScriptError); - //Zotero.debug(msg); - if (skip.indexOf(msg.category) != -1 || msg.flags & msg.warningFlag) { - continue; - } - } - catch (e) { } - - var blacklist = [ - "No chrome package registered for chrome://communicator", - '[JavaScript Error: "Components is not defined" {file: "chrome://nightly/content/talkback/talkback.js', - '[JavaScript Error: "document.getElementById("sanitizeItem")', - 'No chrome package registered for chrome://piggy-bank', - '[JavaScript Error: "[Exception... "\'Component is not available\' when calling method: [nsIHandlerService::getTypeFromExtension', - '[JavaScript Error: "this._uiElement is null', - 'Error: a._updateVisibleText is not a function', - '[JavaScript Error: "Warning: unrecognized command line flag ', - '[JavaScript Error: "Warning: unrecognized command line flag -foreground', - 'LibX:', - 'function skype_', - '[JavaScript Error: "uncaught exception: Permission denied to call method Location.toString"]', - 'CVE-2009-3555', - 'OpenGL LayerManager' - ]; - - for (var i=0; i