Bug 1303288 - Force unloading all JSM when reloading devtools via the addon. r=pbro draft
authorAlexandre Poirot <poirot.alex@gmail.com>
Wed, 21 Sep 2016 08:06:01 -0700
changeset 416145 1301bb67e2f961732e6272e2aa519d77ba50e501
parent 415495 62f79d676e0e11b3ad59a5425b3ebb3ec5bbefb5
child 416146 a63773c9493cbb6b61198394adb23d5b4a7359d4
child 416162 7ea70b8099f5efebd965f0ec6c0323ee495d58ab
push id30041
push userbmo:poirot.alex@gmail.com
push dateWed, 21 Sep 2016 15:15:35 +0000
reviewerspbro
bugs1303288
milestone52.0a1
Bug 1303288 - Force unloading all JSM when reloading devtools via the addon. r=pbro MozReview-Commit-ID: H6z4c6CXBC1
devtools/bootstrap.js
--- a/devtools/bootstrap.js
+++ b/devtools/bootstrap.js
@@ -119,16 +119,28 @@ function reload(event) {
   }, false);
 
   // As we can't get a reference to existing Loader.jsm instances, we send them
   // an observer service notification to unload them.
   Services.obs.notifyObservers(null, "devtools-unload", "reload");
 
   // Then spawn a brand new Loader.jsm instance and start the main module
   Cu.unload("resource://devtools/shared/Loader.jsm");
+  // Also unload all resources loaded as jsm, hopefully all of them are going
+  // to be converted into regular modules
+  Cu.unload("resource://devtools/client/shared/browser-loader.js");
+  Cu.unload("resource://devtools/client/framework/ToolboxProcess.jsm");
+  Cu.unload("resource://devtools/shared/apps/Devices.jsm");
+  Cu.unload("resource://devtools/client/scratchpad/scratchpad-manager.jsm");
+  Cu.unload("resource://devtools/shared/Parser.jsm");
+  Cu.unload("resource://devtools/client/shared/DOMHelpers.jsm");
+  Cu.unload("resource://devtools/client/shared/widgets/VariablesView.jsm");
+  Cu.unload("resource://devtools/client/responsivedesign/responsivedesign.jsm");
+  Cu.unload("resource://devtools/client/shared/widgets/AbstractTreeItem.jsm");
+  Cu.unload("resource://devtools/shared/deprecated-sync-thenables.js");
   const {devtools} = Cu.import("resource://devtools/shared/Loader.jsm", {});
   devtools.require("devtools/client/framework/devtools-browser");
 
   // Go over all top level windows to reload all devtools related things
   let windowsEnum = Services.wm.getEnumerator(null);
   while (windowsEnum.hasMoreElements()) {
     let window = windowsEnum.getNext();
     let windowtype = window.document.documentElement.getAttribute("windowtype");