From 9ecfc31fd435bba759b3f77fb3adc1ecf53fe1a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adomas=20Ven=C4=8Dkauskas?= Date: Thu, 2 Feb 2017 16:16:20 -0300 Subject: [PATCH] Fix translation error reporting in connectors Closes zotero/zotero-connectors#101 --- .../zotero/xpcom/translation/translate.js | 49 +++++++++++-------- .../zotero/xpcom/translation/translator.js | 2 +- 2 files changed, 30 insertions(+), 21 deletions(-) diff --git a/chrome/content/zotero/xpcom/translation/translate.js b/chrome/content/zotero/xpcom/translation/translate.js index 8285670bd..cf38c6add 100644 --- a/chrome/content/zotero/xpcom/translation/translate.js +++ b/chrome/content/zotero/xpcom/translation/translate.js @@ -2119,27 +2119,36 @@ Zotero.Translate.Web.prototype.complete = function(returnValue, error) { var oldState = this._currentState; var errorString = Zotero.Translate.Base.prototype.complete.apply(this, [returnValue, error]); - // Report translation failure if we failed - if(oldState == "translate" && errorString && !this._parentTranslator && this.translator.length - && this.translator[0].inRepository && Zotero.Prefs.get("reportTranslationFailure")) { - // Don't report failure if in private browsing mode - if(Zotero.isFx && !Zotero.isBookmarklet && !Zotero.isStandalone && Components.classes["@mozilla.org/privatebrowsing;1"]) { - var pbs = Components.classes["@mozilla.org/privatebrowsing;1"] - .getService(Components.interfaces.nsIPrivateBrowsingService); - if (pbs.privateBrowsingEnabled) { - return; - } - } - - var translator = this.translator[0]; - Zotero.getSystemInfo().then(function(info) { - var postBody = "id=" + encodeURIComponent(translator.translatorID) + - "&lastUpdated=" + encodeURIComponent(translator.lastUpdated) + - "&diagnostic=" + encodeURIComponent(info) + - "&errorData=" + encodeURIComponent(errorString); - return Zotero.HTTP.doPost(ZOTERO_CONFIG.REPOSITORY_URL + "report", postBody); - }); + var promise; + if (Zotero.isConnector) { + promise = Zotero.Prefs.getAsync('reportTranslationFailure'); + } else { + promise = Zotero.Promise.resolve(Zotero.Prefs.get("reportTranslationFailure")); } + + return promise.then(function(reportTranslationFailure) { + // Report translation failure if we failed + if(oldState == "translate" && errorString && !this._parentTranslator && this.translator.length + && this.translator[0].inRepository && reportTranslationFailure) { + // Don't report failure if in private browsing mode + if(Zotero.isFx && !Zotero.isBookmarklet && !Zotero.isStandalone && Components.classes["@mozilla.org/privatebrowsing;1"]) { + var pbs = Components.classes["@mozilla.org/privatebrowsing;1"] + .getService(Components.interfaces.nsIPrivateBrowsingService); + if (pbs.privateBrowsingEnabled) { + return; + } + } + + var translator = this.translator[0]; + return Zotero.getSystemInfo().then(function(info) { + var postBody = "id=" + encodeURIComponent(translator.translatorID) + + "&lastUpdated=" + encodeURIComponent(translator.lastUpdated) + + "&diagnostic=" + encodeURIComponent(info) + + "&errorData=" + encodeURIComponent(errorString); + return Zotero.HTTP.doPost(ZOTERO_CONFIG.REPOSITORY_URL + "report", postBody); + }); + } + }.bind(this)); } /** diff --git a/chrome/content/zotero/xpcom/translation/translator.js b/chrome/content/zotero/xpcom/translation/translator.js index d3c4232cf..a2d4cd127 100644 --- a/chrome/content/zotero/xpcom/translation/translator.js +++ b/chrome/content/zotero/xpcom/translation/translator.js @@ -35,7 +35,7 @@ var TRANSLATOR_OPTIONAL_PROPERTIES = ["targetAll", "browserSupport", "minVersion "hiddenPrefs", "itemType"]; // Properties that are passed from background to inject page in connector var TRANSLATOR_PASSING_PROPERTIES = TRANSLATOR_REQUIRED_PROPERTIES. - concat(["targetAll", "browserSupport", "code", "runMode", "itemType"]); + concat(["targetAll", "browserSupport", "code", "runMode", "itemType", "inRepository"]); /** * @class Represents an individual translator