diff --git a/README.md b/README.md index 3479f2b75..e2a28ae02 100644 --- a/README.md +++ b/README.md @@ -33,9 +33,9 @@ PDF.js is built into version 19+ of Firefox, however, one extension is still ava + [Development Version](http://mozilla.github.io/pdf.js/extensions/firefox/pdf.js.xpi) - This extension is mainly intended for developers/testers, and it is updated every time new code is merged into the PDF.js codebase. It should be quite stable but might break from time to time. - + Please note that the extension is *not* guaranteed to be compatible with Firefox versions that are *older* than the current ESR version, see the [Release Calendar](https://wiki.mozilla.org/RapidRelease/Calendar#Past_branch_dates). + + Please note that the extension is *not* guaranteed to be compatible with Firefox versions that are *older* than the current Nightly version, see the [Release Calendar](https://wiki.mozilla.org/RapidRelease/Calendar#Past_branch_dates). - + The extension should also work in Seamonkey, provided that it is based on a Firefox version as above (see [Which version of Firefox does SeaMonkey 2.x correspond with?](https://wiki.mozilla.org/SeaMonkey/FAQ#General)), but we do *not* guarantee compatibility. + + The extension *may* also work in Seamonkey, provided that it is based on a Firefox version as above (see [Which version of Firefox does SeaMonkey 2.x correspond with?](https://wiki.mozilla.org/SeaMonkey/FAQ#General)), but we do *not* guarantee compatibility. #### Chrome diff --git a/extensions/firefox/.eslintrc b/extensions/firefox/.eslintrc index 87d9db7b7..ac538caa5 100644 --- a/extensions/firefox/.eslintrc +++ b/extensions/firefox/.eslintrc @@ -7,17 +7,6 @@ ], "parserOptions": { - // Note: Remove the ecmaVersion line when Gecko 52 is no longer supported - // to pick up the eslint-plugin-mozilla version (or at least update to - // ecmaVersion 8). - "ecmaVersion": 6, - "ecmaFeatures": { - // Note: We turn this off as it was only added in Gecko 55 (Bug 1339395) - // and we still need to support older versions (eslint-plugin-mozilla turns - // it on). - "experimentalObjectRestSpread": false - }, - "sourceType": "script", }, @@ -28,9 +17,6 @@ "rules": { // Items different from the mozilla/recommended configuration. - // Being enabled soon. - "mozilla/use-services": "error", - // Other rules mozilla/recommended hasn't enabled yet. "no-shadow": "error", "arrow-body-style": ["error", "as-needed"], diff --git a/extensions/firefox/bootstrap.js b/extensions/firefox/bootstrap.js index 6ab7db653..34af30605 100644 --- a/extensions/firefox/bootstrap.js +++ b/extensions/firefox/bootstrap.js @@ -26,8 +26,8 @@ const Cm = Components.manager; const Cu = Components.utils; const Cr = Components.results; -Cu.import("resource://gre/modules/XPCOMUtils.jsm"); -Cu.import("resource://gre/modules/Services.jsm"); +ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); +ChromeUtils.import("resource://gre/modules/Services.jsm"); function initializeDefaultPreferences() { /* eslint-disable semi */ @@ -120,14 +120,14 @@ function startup(aData, aReason) { pdfBaseUrl = aData.resourceURI.spec; - Cu.import(pdfBaseUrl + "content/PdfjsChromeUtils.jsm"); + ChromeUtils.import(pdfBaseUrl + "content/PdfjsChromeUtils.jsm"); PdfjsChromeUtils.init(); - Cu.import(pdfBaseUrl + "content/PdfjsContentUtils.jsm"); + ChromeUtils.import(pdfBaseUrl + "content/PdfjsContentUtils.jsm"); PdfjsContentUtils.init(); // Load the component and register it. var pdfStreamConverterUrl = pdfBaseUrl + "content/PdfStreamConverter.jsm"; - Cu.import(pdfStreamConverterUrl); + ChromeUtils.import(pdfStreamConverterUrl); pdfStreamConverterFactory.register(PdfStreamConverter); try { diff --git a/extensions/firefox/chrome/content.js b/extensions/firefox/chrome/content.js index 50b9600ef..f2cf00a67 100644 --- a/extensions/firefox/chrome/content.js +++ b/extensions/firefox/chrome/content.js @@ -25,8 +25,8 @@ const Cu = Components.utils; const Cr = Components.results; - Cu.import("resource://gre/modules/XPCOMUtils.jsm"); - Cu.import("resource://gre/modules/Services.jsm"); + ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); + ChromeUtils.import("resource://gre/modules/Services.jsm"); var isRemote = Services.appinfo.processType === Services.appinfo.PROCESS_TYPE_CONTENT; @@ -72,10 +72,10 @@ var pdfStreamConverterFactory = new Factory(); function startup() { - Cu.import("resource://pdf.js/PdfjsContentUtils.jsm"); + ChromeUtils.import("resource://pdf.js/PdfjsContentUtils.jsm"); PdfjsContentUtils.init(); - Cu.import("resource://pdf.js/PdfStreamConverter.jsm"); + ChromeUtils.import("resource://pdf.js/PdfStreamConverter.jsm"); pdfStreamConverterFactory.register(PdfStreamConverter); } diff --git a/extensions/firefox/content/PdfJs.jsm b/extensions/firefox/content/PdfJs.jsm index 071003327..91ba106d1 100644 --- a/extensions/firefox/content/PdfJs.jsm +++ b/extensions/firefox/content/PdfJs.jsm @@ -39,8 +39,8 @@ const TOPIC_PLUGINS_LIST_UPDATED = "plugins-list-updated"; const TOPIC_PLUGIN_INFO_UPDATED = "plugin-info-updated"; const PDF_CONTENT_TYPE = "application/pdf"; -Cu.import("resource://gre/modules/XPCOMUtils.jsm"); -Cu.import("resource://gre/modules/Services.jsm"); +ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); +ChromeUtils.import("resource://gre/modules/Services.jsm"); var Svc = {}; XPCOMUtils.defineLazyServiceGetter(Svc, "mime", @@ -49,9 +49,9 @@ XPCOMUtils.defineLazyServiceGetter(Svc, "mime", XPCOMUtils.defineLazyServiceGetter(Svc, "pluginHost", "@mozilla.org/plugin/host;1", "nsIPluginHost"); -XPCOMUtils.defineLazyModuleGetter(this, "PdfjsChromeUtils", +ChromeUtils.defineModuleGetter(this, "PdfjsChromeUtils", "resource://pdf.js/PdfjsChromeUtils.jsm"); -XPCOMUtils.defineLazyModuleGetter(this, "PdfjsContentUtils", +ChromeUtils.defineModuleGetter(this, "PdfjsContentUtils", "resource://pdf.js/PdfjsContentUtils.jsm"); function getBoolPref(aPref, aDefaultValue) { @@ -314,7 +314,7 @@ var PdfJs = { this.updateRegistration(); let jsm = "resource://pdf.js/PdfjsChromeUtils.jsm"; - let PdfjsChromeUtils = Components.utils.import(jsm, {}).PdfjsChromeUtils; + let PdfjsChromeUtils = ChromeUtils.import(jsm, {}).PdfjsChromeUtils; PdfjsChromeUtils.notifyChildOfSettingsChange(this.enabled); }, @@ -342,7 +342,7 @@ var PdfJs = { return; } this._pdfStreamConverterFactory = new Factory(); - Cu.import("resource://pdf.js/PdfStreamConverter.jsm"); + ChromeUtils.import("resource://pdf.js/PdfStreamConverter.jsm"); this._pdfStreamConverterFactory.register(PdfStreamConverter); this._registered = true; diff --git a/extensions/firefox/content/PdfJsNetwork.jsm b/extensions/firefox/content/PdfJsNetwork.jsm index 4c939a8ea..64523aeb1 100644 --- a/extensions/firefox/content/PdfJsNetwork.jsm +++ b/extensions/firefox/content/PdfJsNetwork.jsm @@ -15,11 +15,11 @@ "use strict"; -Components.utils.import("resource://gre/modules/Services.jsm"); +ChromeUtils.import("resource://gre/modules/Services.jsm"); var EXPORTED_SYMBOLS = ["NetworkManager"]; -function log(aMsg) { +function log(aMsg) { // eslint-disable-line no-unused-vars var msg = "PdfJsNetwork.jsm: " + (aMsg.join ? aMsg.join("") : aMsg); Services.console.logStringMessage(msg); } diff --git a/extensions/firefox/content/PdfJsTelemetry.jsm b/extensions/firefox/content/PdfJsTelemetry.jsm index 6c676e43a..f322177f5 100644 --- a/extensions/firefox/content/PdfJsTelemetry.jsm +++ b/extensions/firefox/content/PdfJsTelemetry.jsm @@ -19,7 +19,7 @@ this.EXPORTED_SYMBOLS = ["PdfJsTelemetry"]; const Cu = Components.utils; -Cu.import("resource://gre/modules/Services.jsm"); +ChromeUtils.import("resource://gre/modules/Services.jsm"); this.PdfJsTelemetry = { onViewerIsUsed() { diff --git a/extensions/firefox/content/PdfStreamConverter.jsm b/extensions/firefox/content/PdfStreamConverter.jsm index e873472f5..c1e77245b 100644 --- a/extensions/firefox/content/PdfStreamConverter.jsm +++ b/extensions/firefox/content/PdfStreamConverter.jsm @@ -23,28 +23,27 @@ const Cr = Components.results; const Cu = Components.utils; const PDFJS_EVENT_ID = "pdf.js.message"; -const PDF_CONTENT_TYPE = "application/pdf"; const PREF_PREFIX = "PDFJSSCRIPT_PREF_PREFIX"; const PDF_VIEWER_WEB_PAGE = "resource://pdf.js/web/viewer.html"; const MAX_NUMBER_OF_PREFS = 50; const MAX_STRING_PREF_LENGTH = 128; -Cu.import("resource://gre/modules/XPCOMUtils.jsm"); -Cu.import("resource://gre/modules/Services.jsm"); +ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); +ChromeUtils.import("resource://gre/modules/Services.jsm"); -XPCOMUtils.defineLazyModuleGetter(this, "NetUtil", +ChromeUtils.defineModuleGetter(this, "NetUtil", "resource://gre/modules/NetUtil.jsm"); -XPCOMUtils.defineLazyModuleGetter(this, "NetworkManager", +ChromeUtils.defineModuleGetter(this, "NetworkManager", "resource://pdf.js/PdfJsNetwork.jsm"); -XPCOMUtils.defineLazyModuleGetter(this, "PrivateBrowsingUtils", +ChromeUtils.defineModuleGetter(this, "PrivateBrowsingUtils", "resource://gre/modules/PrivateBrowsingUtils.jsm"); -XPCOMUtils.defineLazyModuleGetter(this, "PdfJsTelemetry", +ChromeUtils.defineModuleGetter(this, "PdfJsTelemetry", "resource://pdf.js/PdfJsTelemetry.jsm"); -XPCOMUtils.defineLazyModuleGetter(this, "PdfjsContentUtils", +ChromeUtils.defineModuleGetter(this, "PdfjsContentUtils", "resource://pdf.js/PdfjsContentUtils.jsm"); var Svc = {}; @@ -93,11 +92,6 @@ function getIntPref(pref, def) { function getStringPref(pref, def) { try { -//#if !MOZCENTRAL - if (!Services.prefs.getStringPref) { - return Services.prefs.getComplexValue(pref, Ci.nsISupportsString).data; - } -//#endif return Services.prefs.getStringPref(pref); } catch (ex) { return def; @@ -325,11 +319,6 @@ class ChromeActions { } getLocale() { -//#if !MOZCENTRAL - if (!Services.locale.getRequestedLocale) { - return getStringPref("general.useragent.locale", "en-US"); - } -//#endif return Services.locale.getRequestedLocale() || "en-US"; } diff --git a/extensions/firefox/content/PdfjsChromeUtils.jsm b/extensions/firefox/content/PdfjsChromeUtils.jsm index 27ca7b170..c4428e0f4 100644 --- a/extensions/firefox/content/PdfjsChromeUtils.jsm +++ b/extensions/firefox/content/PdfjsChromeUtils.jsm @@ -25,8 +25,8 @@ const Cu = Components.utils; const PREF_PREFIX = "PDFJSSCRIPT_PREF_PREFIX"; const PDF_CONTENT_TYPE = "application/pdf"; -Cu.import("resource://gre/modules/XPCOMUtils.jsm"); -Cu.import("resource://gre/modules/Services.jsm"); +ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); +ChromeUtils.import("resource://gre/modules/Services.jsm"); var Svc = {}; XPCOMUtils.defineLazyServiceGetter(Svc, "mime", @@ -74,18 +74,6 @@ var PdfjsChromeUtils = { this._mmg.addMessageListener("PDFJS:Parent:removeEventListener", this); this._mmg.addMessageListener("PDFJS:Parent:updateControlState", this); -//#if !MOZCENTRAL - // The signature of `Services.obs.addObserver` changed in Firefox 55, - // see https://bugzilla.mozilla.org/show_bug.cgi?id=1355216. - // PLEASE NOTE: While the third parameter is now optional, - // omitting it in prior Firefox versions breaks the addon. - var ffVersion = parseInt(Services.appinfo.platformVersion); - if (ffVersion <= 55) { - // eslint-disable-next-line mozilla/no-useless-parameters - Services.obs.addObserver(this, "quit-application", false); - return; - } -//#endif // Observer to handle shutdown. Services.obs.addObserver(this, "quit-application"); } @@ -287,15 +275,6 @@ var PdfjsChromeUtils = { _setStringPref(aPrefName, aPrefValue) { this._ensurePreferenceAllowed(aPrefName); -//#if !MOZCENTRAL - if (!Services.prefs.setStringPref) { - let str = Cc["@mozilla.org/supports-string;1"] - .createInstance(Ci.nsISupportsString); - str.data = aPrefValue; - Services.prefs.setComplexValue(aPrefName, Ci.nsISupportsString, str); - return; - } -//#endif Services.prefs.setStringPref(aPrefName, aPrefValue); }, diff --git a/extensions/firefox/content/PdfjsContentUtils.jsm b/extensions/firefox/content/PdfjsContentUtils.jsm index 0a51b5fd4..1c39cc9d7 100644 --- a/extensions/firefox/content/PdfjsContentUtils.jsm +++ b/extensions/firefox/content/PdfjsContentUtils.jsm @@ -22,8 +22,8 @@ const Ci = Components.interfaces; const Cr = Components.results; const Cu = Components.utils; -Cu.import("resource://gre/modules/XPCOMUtils.jsm"); -Cu.import("resource://gre/modules/Services.jsm"); +ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); +ChromeUtils.import("resource://gre/modules/Services.jsm"); var PdfjsContentUtils = { _mm: null, @@ -45,18 +45,6 @@ var PdfjsContentUtils = { getService(Ci.nsISyncMessageSender); this._mm.addMessageListener("PDFJS:Child:updateSettings", this); -//#if !MOZCENTRAL - // The signature of `Services.obs.addObserver` changed in Firefox 55, - // see https://bugzilla.mozilla.org/show_bug.cgi?id=1355216. - // PLEASE NOTE: While the third parameter is now optional, - // omitting it in prior Firefox versions breaks the addon. - var ffVersion = parseInt(Services.appinfo.platformVersion); - if (ffVersion <= 55) { - // eslint-disable-next-line mozilla/no-useless-parameters - Services.obs.addObserver(this, "quit-application", false); - return; - } -//#endif Services.obs.addObserver(this, "quit-application"); } }, @@ -143,7 +131,7 @@ var PdfjsContentUtils = { if (Services.appinfo.processType === Services.appinfo.PROCESS_TYPE_CONTENT) { let jsm = "resource://pdf.js/PdfJs.jsm"; - let pdfjs = Components.utils.import(jsm, {}).PdfJs; + let pdfjs = ChromeUtils.import(jsm, {}).PdfJs; if (aMsg.data.enabled) { pdfjs.ensureRegistered(); } else { diff --git a/extensions/firefox/content/pdfjschildbootstrap-enabled.js b/extensions/firefox/content/pdfjschildbootstrap-enabled.js index dda7a7c11..3e554ac4c 100644 --- a/extensions/firefox/content/pdfjschildbootstrap-enabled.js +++ b/extensions/firefox/content/pdfjschildbootstrap-enabled.js @@ -21,8 +21,8 @@ * running remote. It will only be run when PdfJs.enable is true. */ -Components.utils.import("resource://gre/modules/Services.jsm"); -Components.utils.import("resource://pdf.js/PdfJs.jsm"); +ChromeUtils.import("resource://gre/modules/Services.jsm"); +ChromeUtils.import("resource://pdf.js/PdfJs.jsm"); if (Services.appinfo.processType === Services.appinfo.PROCESS_TYPE_CONTENT) { // register various pdfjs factories that hook us into content loading. diff --git a/extensions/firefox/content/pdfjschildbootstrap.js b/extensions/firefox/content/pdfjschildbootstrap.js index 1d30acdd1..dce514831 100644 --- a/extensions/firefox/content/pdfjschildbootstrap.js +++ b/extensions/firefox/content/pdfjschildbootstrap.js @@ -20,7 +20,7 @@ * initializing our built-in version of pdfjs when running remote. */ -Components.utils.import("resource://pdf.js/PdfjsContentUtils.jsm"); +ChromeUtils.import("resource://pdf.js/PdfjsContentUtils.jsm"); // init content utils shim pdfjs will use to access privileged apis. PdfjsContentUtils.init(); diff --git a/extensions/firefox/install.rdf b/extensions/firefox/install.rdf index ad00cab3a..5d010b003 100644 --- a/extensions/firefox/install.rdf +++ b/extensions/firefox/install.rdf @@ -13,8 +13,8 @@ {ec8030f7-c20a-464f-9b0e-13a3a9e97384} - 45.0 - 54.0a1 + 59.* + 61.0a1 @@ -31,8 +31,8 @@ {aa3c5121-dab2-40e2-81ca-7ea25febc110} - 45.0 - 54.0a1 + 59.* + 61.0a1 diff --git a/extensions/firefox/update.rdf b/extensions/firefox/update.rdf index 260a1f33f..b74b618c7 100644 --- a/extensions/firefox/update.rdf +++ b/extensions/firefox/update.rdf @@ -14,8 +14,8 @@ {ec8030f7-c20a-464f-9b0e-13a3a9e97384} - 45.0 - 54.0a1 + 59.* + 61.0a1 https://raw.githubusercontent.com/mozilla/pdf.js/gh-pages/extensions/firefox/pdf.js.xpi @@ -25,8 +25,8 @@ {aa3c5121-dab2-40e2-81ca-7ea25febc110} - 45.0 - 54.0a1 + 59.* + 61.0a1 https://raw.githubusercontent.com/mozilla/pdf.js/gh-pages/extensions/firefox/pdf.js.xpi diff --git a/package.json b/package.json index 69ed0bdcf..f808c4a57 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "core-js": "^2.5.3", "escodegen": "^1.9.0", "eslint": "^4.16.0", - "eslint-plugin-mozilla": "^0.5.0", + "eslint-plugin-mozilla": "^0.7.0", "eslint-plugin-no-unsanitized": "^2.0.2", "fancy-log": "^1.3.2", "gulp": "^3.9.1",