Bug 1300587 - Fix DevToolsExtensionPageContextParent shutdown method. draft
authorLuca Greco <lgreco@mozilla.com>
Thu, 09 Feb 2017 18:15:38 +0100
changeset 485259 b4cb624bde1a876bade641e1f91e2c8d4df8f3c7
parent 485258 2737f66ad6ac74a688bde788b319122f2001b92b
child 485260 f9ee8c4dc011772b4f5a3cc4eb57bf2d00ee5624
push id45684
push userluca.greco@alcacoop.it
push dateThu, 16 Feb 2017 12:27:56 +0000
bugs1300587
milestone54.0a1
Bug 1300587 - Fix DevToolsExtensionPageContextParent shutdown method. - a DevToolsExtensionPageContextParent instance can be missing a devToolsTarget property when it is destroyed (because the devToolsTarget property is set lazily if the extension page is using any API that actually needs a TabTarget instance) - the DevToolsExtensionPageContextParent's shutdown method should call super.shutdown to complete its cleanup. MozReview-Commit-ID: EnxEZ0rrnTT
toolkit/components/extensions/ExtensionParent.jsm
--- a/toolkit/components/extensions/ExtensionParent.jsm
+++ b/toolkit/components/extensions/ExtensionParent.jsm
@@ -432,23 +432,24 @@ class DevToolsExtensionPageContextParent
     return contextDevToolsTarget;
   }
 
   get devToolsTarget() {
     return this._devToolsTarget;
   }
 
   shutdown() {
-    if (!this._devToolsTarget) {
-      throw new Error("no DevTools target is set during DevTools Context shutdown");
+    if (this._devToolsTarget) {
+      this._devToolsTarget.destroy();
+      this._devToolsTarget = null;
     }
 
-    this._devToolsTarget.destroy();
-    this._devToolsTarget = null;
     this._devToolsToolbox = null;
+
+    super.shutdown();
   }
 }
 
 ParentAPIManager = {
   proxyContexts: new Map(),
 
   init() {
     Services.obs.addObserver(this, "message-manager-close", false);