www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | Submodules | README | LICENSE

commit 02506966eb8016294793f27124067940449c908e
parent 00b341daf1091c03da30bbc127ea52d34ff2168a
Author: Simon Kornblith <simon@simonster.com>
Date:   Tue, 20 Sep 2011 21:39:48 +0000

Remove processNextEvent() calls (by avoiding AddonManager)


Diffstat:
Mchrome/content/zotero/bindings/styled-textbox.xml | 23++++++++++++-----------
Mchrome/content/zotero/errorReport.xul | 30++++++++++++++++--------------
Mchrome/content/zotero/xpcom/translation/translate.js | 12+++++++-----
Mchrome/content/zotero/xpcom/zotero.js | 114+++++++++++++++++++++++++++++++++----------------------------------------------
4 files changed, 83 insertions(+), 96 deletions(-)

diff --git a/chrome/content/zotero/bindings/styled-textbox.xml b/chrome/content/zotero/bindings/styled-textbox.xml @@ -361,18 +361,19 @@ && (!SJOW._zoteroMatchTo || SJOW._zoteroMatchTo !== matchTo)) return; if (!SJOW.tinyMCE) { - var exts = Zotero.getInstalledExtensions(); - for each(var ext in exts) { - if (ext.indexOf('NoScript') != -1) { - var warning = win.document.getElementById('noScriptWarning'); - var str = "The NoScript extension is preventing Zotero " - + "from displaying notes. To use NoScript and Zotero together, " - + "whitelist the 'file:' scheme in the NoScript preferences " - + "and restart Firefox."; - warning.appendChild(document.createTextNode(str)); - break; + var exts = Zotero.getInstalledExtensions(function(exts) { + for each(var ext in exts) { + if (ext.indexOf('NoScript') != -1) { + var warning = win.document.getElementById('noScriptWarning'); + var str = "The NoScript extension is preventing Zotero " + + "from displaying notes. To use NoScript and Zotero together, " + + "whitelist the 'file:' scheme in the NoScript preferences " + + "and restart Firefox."; + warning.appendChild(document.createTextNode(str)); + break; + } } - } + }); return; } diff --git a/chrome/content/zotero/errorReport.xul b/chrome/content/zotero/errorReport.xul @@ -41,20 +41,22 @@ var wizard = document.getElementById('zotero-error-report'); var continueButtonName = wizard.getButton('next').disabled = true; - var parts = { - error: "true", - errorData: Zotero.getErrors(true).join('\n'), - extraData: extraData, - diagnostic: Zotero.getSystemInfo() - }; - - var body = ''; - for (var key in parts) { - body += key + '=' + encodeURIComponent(parts[key]) + '&'; - } - body = body.substr(0, body.length - 1); - Zotero.HTTP.doPost("https://repo.zotero.org/repo/report", body, - _sendErrorReportCallback); + Zotero.getSystemInfo(function(info) { + var parts = { + error: "true", + errorData: Zotero.getErrors(true).join('\n'), + extraData: extraData, + diagnostic: info + }; + + var body = ''; + for (var key in parts) { + body += key + '=' + encodeURIComponent(parts[key]) + '&'; + } + body = body.substr(0, body.length - 1); + Zotero.HTTP.doPost("https://repo.zotero.org/repo/report", body, + _sendErrorReportCallback); + }); } diff --git a/chrome/content/zotero/xpcom/translation/translate.js b/chrome/content/zotero/xpcom/translation/translate.js @@ -1486,11 +1486,13 @@ Zotero.Translate.Web.prototype.complete = function(returnValue, error) { } } - var postBody = "id=" + encodeURIComponent(this.translator[0].translatorID) + - "&lastUpdated=" + encodeURIComponent(this.translator[0].lastUpdated) + - "&diagnostic=" + encodeURIComponent(Zotero.getSystemInfo()) + - "&errorData=" + encodeURIComponent(errorString); - Zotero.HTTP.doPost("http://www.zotero.org/repo/report", postBody); + Zotero.getSystemInfo(function(info) { + var postBody = "id=" + encodeURIComponent(this.translator[0].translatorID) + + "&lastUpdated=" + encodeURIComponent(this.translator[0].lastUpdated) + + "&diagnostic=" + encodeURIComponent(info) + + "&errorData=" + encodeURIComponent(errorString); + Zotero.HTTP.doPost("http://www.zotero.org/repo/report", postBody); + }); } } diff --git a/chrome/content/zotero/xpcom/zotero.js b/chrome/content/zotero/xpcom/zotero.js @@ -34,7 +34,8 @@ const ZOTERO_CONFIG = { SYNC_URL: 'https://sync.zotero.org/', API_URL: 'https://api.zotero.org/', PREF_BRANCH: 'extensions.zotero.', - BOOKMARKLET_URL: 'https://www.zotero.org/bookmarklet/' + BOOKMARKLET_URL: 'https://www.zotero.org/bookmarklet/', + VERSION: "3.0b3.SVN" }; // Load AddonManager for Firefox 4 @@ -235,17 +236,7 @@ if(appInfo.platformVersion[0] >= 2) { if(this.isStandalone) { this.version = appInfo.version; } else { - // Load in the extension version from the extension manager - if(this.isFx4) { - AddonManager.getAddonByID(ZOTERO_CONFIG['GUID'], - function(addon) { Zotero.version = addon.version; Zotero.addon = addon; }); - } else { - var gExtensionManager = - Components.classes["@mozilla.org/extensions/manager;1"] - .getService(Components.interfaces.nsIExtensionManager); - this.version - = gExtensionManager.getItemForID(ZOTERO_CONFIG['GUID']).version; - } + this.version = ZOTERO_CONFIG['VERSION']; } // OS platform @@ -804,24 +795,14 @@ if(appInfo.platformVersion[0] >= 2) { } - function getInstallDirectory() { - if(this.isStandalone) { - var dir = Components.classes["@mozilla.org/file/directory_service;1"] - .getService(Components.interfaces.nsIProperties) - .get("CurProcD", Components.interfaces.nsILocalFile); - return dir; - } else { - if(this.isFx4) { - while(Zotero.addon === undefined) Zotero.mainThread.processNextEvent(true); - var resourceURI = Zotero.addon.getResourceURI(); - return resourceURI.QueryInterface(Components.interfaces.nsIFileURL).file; - } else { - var id = ZOTERO_CONFIG.GUID; - var em = Components.classes["@mozilla.org/extensions/manager;1"]. - getService(Components.interfaces.nsIExtensionManager); - return em.getInstallLocation(id).getItemLocation(id); - } - } + function getInstallDirectory() { + var cr = Components.classes["@mozilla.org/chrome/chrome-registry;1"] + .getService(Components.interfaces.nsIChromeRegistry); + var ioService = Components.classes["@mozilla.org/network/io-service;1"] + .getService(Components.interfaces.nsIIOService); + var zoteroURI = ioService.newURI("chrome://zotero/content/", "UTF-8", null); + zoteroURI = cr.convertChromeURL(zoteroURI).QueryInterface(Components.interfaces.nsIFileURL); + return zoteroURI.file.parent.parent.parent.parent; } function getDefaultProfile(prefDir) { @@ -1234,59 +1215,60 @@ if(appInfo.platformVersion[0] >= 2) { } - function getSystemInfo() { + function getSystemInfo(callback) { var appInfo = Components.classes["@mozilla.org/xre/app-info;1"]. getService(Components.interfaces.nsIXULAppInfo); - var info = { - version: Zotero.version, - platform: Zotero.platform, - oscpu: Zotero.oscpu, - locale: Zotero.locale, - appName: appInfo.name, - appVersion: appInfo.version, - extensions: this.getInstalledExtensions().join(', ') - }; - - var str = ''; - for (var key in info) { - str += key + ' => ' + info[key] + ', '; - } - str = str.substr(0, str.length - 2); - return str; + Zotero.getInstalledExtensions(function(extensions) { + var info = { + version: Zotero.version, + platform: Zotero.platform, + oscpu: Zotero.oscpu, + locale: Zotero.locale, + appName: appInfo.name, + appVersion: appInfo.version, + extensions: extensions.join(', ') + }; + + var str = ''; + for (var key in info) { + str += key + ' => ' + info[key] + ', '; + } + str = str.substr(0, str.length - 2); + callback(str); + }); } /** * @return {String[]} Array of extension names and versions */ - this.getInstalledExtensions = function () { - if(this.isFx4) { - if(!Zotero.addons) { - AddonManager.getAllAddons(function(addonList) { Zotero.addons = addonList; }); - while(Zotero.addons === undefined) Zotero.mainThread.processNextEvent(true); + this.getInstalledExtensions = function(callback) { + function onHaveInstalledAddons(installed) { + var addons = []; + for each(var addon in installed) { + switch (addon.id) { + case "zotero@chnm.gmu.edu": + case "{972ce4c6-7e08-4474-a285-3208198ce6fd}": // Default theme + continue; + } + + addons.push(addon.name + " (" + addon.version + + (addon.type != 2 ? ", " + addon.type : "") + ")"); } - var installed = Zotero.addons; + callback(addons); + } + + if(this.isFx4) { + AddonManager.getAllAddons(onHaveInstalledAddons); } else { var em = Components.classes["@mozilla.org/extensions/manager;1"]. getService(Components.interfaces.nsIExtensionManager); var installed = em.getItemList( Components.interfaces.nsIUpdateItem.TYPE_ANY, {} ); + onHaveInstalledAddons(installed); } - - var addons = []; - for each(var addon in installed) { - switch (addon.id) { - case "zotero@chnm.gmu.edu": - case "{972ce4c6-7e08-4474-a285-3208198ce6fd}": // Default theme - continue; - } - - addons.push(addon.name + " (" + addon.version - + (addon.type != 2 ? ", " + addon.type : "") + ")"); - } - return addons; }