From b4d3f79ec3dcbd1c8d487103413383bed3f3f345 Mon Sep 17 00:00:00 2001 From: Kris Maglione Date: Sat, 24 Dec 2016 18:48:56 -0800 Subject: [PATCH] Bug 1325158: Part 4 - Fix cases where extension startup listener is not removed. r=aswan MozReview-Commit-ID: FIhGYSDoOhW --HG-- extra : rebase_source : baa8c9f409da54c06cea5fac4dfa6462e2a06697 --- .../content/SpecialPowersObserverAPI.js | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/testing/specialpowers/content/SpecialPowersObserverAPI.js b/testing/specialpowers/content/SpecialPowersObserverAPI.js index d3137a42d45c..9d2f194a19f7 100644 --- a/testing/specialpowers/content/SpecialPowersObserverAPI.js +++ b/testing/specialpowers/content/SpecialPowersObserverAPI.js @@ -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;