mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-28 13:21:28 +00:00
Bug 1325158: Part 4 - Fix cases where extension startup listener is not removed. r=aswan
MozReview-Commit-ID: FIhGYSDoOhW --HG-- extra : rebase_source : baa8c9f409da54c06cea5fac4dfa6462e2a06697
This commit is contained in:
parent
9822075cb5
commit
b4d3f79ec3
@ -544,17 +544,13 @@ SpecialPowersObserverAPI.prototype = {
|
||||
}
|
||||
|
||||
case "SPStartupExtension": {
|
||||
let {ExtensionData, Management} = Components.utils.import("resource://gre/modules/Extension.jsm", {});
|
||||
let {ExtensionData} = Components.utils.import("resource://gre/modules/Extension.jsm", {});
|
||||
|
||||
let id = aMessage.data.id;
|
||||
let extension = this._extensions.get(id);
|
||||
let startupListener = (msg, ext) => {
|
||||
if (ext == extension) {
|
||||
this._sendReply(aMessage, "SPExtensionMessage", {id, type: "extensionSetId", args: [extension.id]});
|
||||
Management.off("startup", startupListener);
|
||||
}
|
||||
};
|
||||
Management.on("startup", startupListener);
|
||||
extension.on("startup", () => {
|
||||
this._sendReply(aMessage, "SPExtensionMessage", {id, type: "extensionSetId", args: [extension.id]});
|
||||
});
|
||||
|
||||
// Make sure the extension passes the packaging checks when
|
||||
// they're run on a bare archive rather than a running instance,
|
||||
@ -579,7 +575,6 @@ SpecialPowersObserverAPI.prototype = {
|
||||
this._sendReply(aMessage, "SPExtensionMessage", {id, type: "extensionStarted", args: []});
|
||||
}).catch(e => {
|
||||
dump(`Extension startup failed: ${e}\n${e.stack}`);
|
||||
Management.off("startup", startupListener);
|
||||
this._sendReply(aMessage, "SPExtensionMessage", {id, type: "extensionFailed", args: []});
|
||||
});
|
||||
return undefined;
|
||||
|
Loading…
x
Reference in New Issue
Block a user