Bug 1338893 - Don't use the window on application-foreground if it doesn't yet exist. r?sebastian draft
authorJan Henning <jh+bugzilla@buttercookie.de>
Sun, 12 Feb 2017 15:09:32 +0100
changeset 482414 8e627c9d1e9173e1b9d386a100cf3b4c444b98e7
parent 482413 5f838b0bfb40fba4678bdd8ac3c3318cfa277e8c
child 545421 c015397e8703ea8ff46edd4751aa5440e37ec88c
push id45067
push usermozilla@buttercookie.de
push dateSun, 12 Feb 2017 14:13:58 +0000
reviewerssebastian
bugs1338893
milestone54.0a1
Bug 1338893 - Don't use the window on application-foreground if it doesn't yet exist. r?sebastian During a cold startup, depending how this exactly plays out we might receive an application-foreground notification before the browser window is ready. Since the code to restore the selected tab if it has been left zombified while in background is only relevant if Gecko was already running and backgrounded, we can simply add a null check for the window before accessing it. MozReview-Commit-ID: Ahp5NAODKRF
mobile/android/components/SessionStore.js
--- a/mobile/android/components/SessionStore.js
+++ b/mobile/android/components/SessionStore.js
@@ -351,18 +351,20 @@ SessionStore.prototype = {
         // Reset minimum interval between session store writes back to default.
         log("application-foreground");
         this._interval = Services.prefs.getIntPref("browser.sessionstore.interval");
         this._minSaveDelay = MINIMUM_SAVE_DELAY;
 
         // If we skipped restoring a zombified tab before backgrounding,
         // we might have to do it now instead.
         let window = Services.wm.getMostRecentWindow("navigator:browser");
-        let tab = window.BrowserApp.selectedTab;
-        this.restoreZombieTab(tab);
+        if (window) { // Might not yet be ready during a cold startup.
+          let tab = window.BrowserApp.selectedTab;
+          this.restoreZombieTab(tab);
+        }
         break;
       case "ClosedTabs:StartNotifications":
         this._notifyClosedTabs = true;
         log("ClosedTabs:StartNotifications");
         this._sendClosedTabsToJava(Services.wm.getMostRecentWindow("navigator:browser"));
         break;
       case "ClosedTabs:StopNotifications":
         this._notifyClosedTabs = false;