Bug 1393621: Part 1 - Don't load ext-contextualIdentities at startup without permissions. r?zombie
MozReview-Commit-ID: AiIYAXSRrii
--- a/toolkit/components/extensions/ExtensionCommon.jsm
+++ b/toolkit/components/extensions/ExtensionCommon.jsm
@@ -1214,16 +1214,20 @@ class SchemaAPIManager extends EventEmit
* being checked for a particular scope.
*
* @returns {boolean}
* Whether the module may be loaded.
*/
_checkGetAPI(name, extension, scope = null) {
let module = this.modules.get(name);
+ if (module.permissions && !module.permissions.some(perm => extension.hasPermission(perm))) {
+ return false;
+ }
+
if (!scope) {
return true;
}
if (!module.scopes.includes(scope)) {
return false;
}
--- a/toolkit/components/extensions/ExtensionParent.jsm
+++ b/toolkit/components/extensions/ExtensionParent.jsm
@@ -75,17 +75,19 @@ let apiManager = new class extends Schem
constructor() {
super("main");
this.initialized = null;
this.on("startup", (event, extension) => { // eslint-disable-line mozilla/balanced-listeners
let promises = [];
for (let apiName of this.eventModules.get("startup")) {
promises.push(this.asyncGetAPI(apiName, extension).then(api => {
- api.onStartup(extension.startupReason);
+ if (api) {
+ api.onStartup(extension.startupReason);
+ }
}));
}
return Promise.all(promises);
});
}
getModuleJSONURLs() {
--- a/toolkit/components/extensions/ext-toolkit.json
+++ b/toolkit/components/extensions/ext-toolkit.json
@@ -24,16 +24,17 @@
["browserSettings"]
]
},
"contextualIdentities": {
"url": "chrome://extensions/content/ext-contextualIdentities.js",
"schema": "chrome://extensions/content/schemas/contextual_identities.json",
"scopes": ["addon_parent"],
"events": ["startup"],
+ "permissions": ["contextualIdentities"],
"paths": [
["contextualIdentities"]
]
},
"cookies": {
"url": "chrome://extensions/content/ext-cookies.js",
"schema": "chrome://extensions/content/schemas/cookies.json",
"scopes": ["addon_parent"],