Bug 1382746 - Provide a helper function to remove the preloaded browser draft bug1382746
authork88hudson <khudson@mozilla.com>
Thu, 20 Jul 2017 14:32:39 -0400
changeset 612549 ddccd5c2930dd6287f9ff165f299ffc30b3e049e
parent 612315 d3ebc6448a62d38b134e957eb4fd5c2565ad40b8
child 638437 8f0f7f22615567deb66e0c57feb33def07bd5cdb
push id69527
push userkhudson@mozilla.com
push dateThu, 20 Jul 2017 19:59:45 +0000
bugs1382746
milestone56.0a1
Bug 1382746 - Provide a helper function to remove the preloaded browser MozReview-Commit-ID: 2PSIhwvKTKA
browser/base/content/tabbrowser.xml
browser/components/sessionstore/test/browser_background_tab_crash.js
--- a/browser/base/content/tabbrowser.xml
+++ b/browser/base/content/tabbrowser.xml
@@ -1975,16 +1975,32 @@
               return this.updateBrowserRemoteness(aBrowser, remote, aOptions);
             }
 
             return false;
           ]]>
         </body>
       </method>
 
+      <method name="removePreloadedBrowser">
+        <body>
+          <![CDATA[
+            if (!this._isPreloadingEnabled()) {
+              return;
+            }
+
+            let browser = this._getPreloadedBrowser();
+
+            if (browser) {
+              browser.remove();
+            }
+          ]]>
+        </body>
+      </method>
+
       <field name="_preloadedBrowser">null</field>
       <method name="_getPreloadedBrowser">
         <body>
           <![CDATA[
             if (!this._isPreloadingEnabled()) {
               return null;
             }
 
@@ -5689,19 +5705,17 @@
           if (!event.isTrusted)
             return;
 
           let browser = event.originalTarget;
 
           // Preloaded browsers do not actually have any tabs. If one crashes,
           // it should be released and removed.
           if (browser === this._preloadedBrowser) {
-            // Calling _getPreloadedBrowser is necessary to actually consume the preloaded browser
-            let preloaded = this._getPreloadedBrowser();
-            preloaded.remove();
+            this.removePreloadedBrowser();
             return;
           }
 
           let icon = browser.mIconURL;
           let tab = this.getTabForBrowser(browser);
 
           if (this.selectedBrowser == browser) {
             TabCrashHandler.onSelectedBrowserCrash(browser);
--- a/browser/components/sessionstore/test/browser_background_tab_crash.js
+++ b/browser/components/sessionstore/test/browser_background_tab_crash.js
@@ -229,20 +229,17 @@ add_task(async function test_preload_cra
 
   // Since new tab is only crashable for the activity-stream version,
   // we need to flip the pref
   await SpecialPowers.pushPrefEnv({
     set: [[ "browser.newtabpage.activity-stream.enabled", true ]]
   });
 
   // Release any existing preloaded browser
-  let preloaded = gBrowser._getPreloadedBrowser();
-  if (preloaded) {
-    preloaded.remove();
-  }
+  gBrowser.removePreloadedBrowser();
 
   // Create a fresh preloaded browser
   gBrowser._createPreloadBrowser();
 
   await BrowserTestUtils.crashBrowser(gBrowser._preloadedBrowser, false);
 
   Assert.ok(!gBrowser._preloadedBrowser);
 });