Bug 1356816: Don't load Extension.jsm on startup just to set the browserUpdated flag. r?rhelmer
MozReview-Commit-ID: C0mtHeZ2cJ
--- a/toolkit/components/extensions/Extension.jsm
+++ b/toolkit/components/extensions/Extension.jsm
@@ -662,18 +662,16 @@ this.ExtensionData = class {
let results = yield Promise.all(promises);
this.localeData.selectedLocale = locale;
return results[0];
}.bind(this));
}
};
-let _browserUpdated = false;
-
const PROXIED_EVENTS = new Set(["test-harness-message", "add-permissions", "remove-permissions"]);
// We create one instance of this class per extension. |addonData|
// comes directly from bootstrap.js when initializing.
this.Extension = class extends ExtensionData {
constructor(addonData, startupReason) {
super(addonData.resourceURI);
@@ -740,24 +738,16 @@ this.Extension = class extends Extension
for (let origin of permissions.origins) {
this.whiteListedHosts.removeOne(origin);
}
});
/* eslint-enable mozilla/balanced-listeners */
}
- static set browserUpdated(updated) {
- _browserUpdated = updated;
- }
-
- static get browserUpdated() {
- return _browserUpdated;
- }
-
static generateXPI(data) {
return ExtensionTestCommon.generateXPI(data);
}
static generateZipFile(files, baseName = "generated-extension.xpi") {
return ExtensionTestCommon.generateZipFile(files, baseName);
}
--- a/toolkit/components/extensions/ext-runtime.js
+++ b/toolkit/components/extensions/ext-runtime.js
@@ -1,12 +1,14 @@
"use strict";
XPCOMUtils.defineLazyModuleGetter(this, "AddonManager",
"resource://gre/modules/AddonManager.jsm");
+XPCOMUtils.defineLazyModuleGetter(this, "AddonManagerPrivate",
+ "resource://gre/modules/AddonManager.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "Extension",
"resource://gre/modules/Extension.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "ExtensionManagement",
"resource://gre/modules/ExtensionManagement.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "NetUtil",
"resource://gre/modules/NetUtil.jsm");
this.runtime = class extends ExtensionAPI {
@@ -29,17 +31,17 @@ this.runtime = class extends ExtensionAP
extension.off("startup", listener);
};
}).api(),
onInstalled: new SingletonEventManager(context, "runtime.onInstalled", fire => {
let listener = () => {
switch (extension.startupReason) {
case "APP_STARTUP":
- if (Extension.browserUpdated) {
+ if (AddonManagerPrivate.browserUpdated) {
fire.sync({reason: "browser_update"});
}
break;
case "ADDON_INSTALL":
fire.sync({reason: "install"});
break;
case "ADDON_UPGRADE":
fire.sync({reason: "update", previousVersion: extension.addonData.oldVersion});
--- a/toolkit/mozapps/extensions/AddonManager.jsm
+++ b/toolkit/mozapps/extensions/AddonManager.jsm
@@ -638,16 +638,17 @@ var gCheckUpdateSecurity = gCheckUpdateS
var gUpdateEnabled = true;
var gAutoUpdateDefault = true;
var gHotfixID = "";
var gWebExtensionsMinPlatformVersion = "";
var gShutdownBarrier = null;
var gRepoShutdownState = "";
var gShutdownInProgress = false;
var gPluginPageListener = null;
+var gBrowserUpdated = null;
/**
* This is the real manager, kept here rather than in AddonManager to keep its
* contents hidden from API users.
*/
var AddonManagerInternal = {
managerListeners: [],
installListeners: [],
@@ -810,17 +811,17 @@ var AddonManagerInternal = {
let appChanged = undefined;
let oldAppVersion = null;
try {
oldAppVersion = Services.prefs.getCharPref(PREF_EM_LAST_APP_VERSION);
appChanged = Services.appinfo.version != oldAppVersion;
} catch (e) { }
- Extension.browserUpdated = appChanged;
+ gBrowserUpdated = appChanged;
let oldPlatformVersion = Services.prefs.getCharPref(PREF_EM_LAST_PLATFORM_VERSION, "");
if (appChanged !== false) {
logger.debug("Application has been upgraded");
Services.prefs.setCharPref(PREF_EM_LAST_APP_VERSION,
Services.appinfo.version);
Services.prefs.setCharPref(PREF_EM_LAST_PLATFORM_VERSION,
@@ -3093,16 +3094,20 @@ var AddonManagerInternal = {
* AddonManagerInternal for documentation however note that these methods are
* subject to change at any time.
*/
this.AddonManagerPrivate = {
startup() {
AddonManagerInternal.startup();
},
+ get browserUpdated() {
+ return gBrowserUpdated;
+ },
+
registerProvider(aProvider, aTypes) {
AddonManagerInternal.registerProvider(aProvider, aTypes);
},
unregisterProvider(aProvider) {
AddonManagerInternal.unregisterProvider(aProvider);
},