Bug 1228593 - dontSaveSession may be undefined, assume false if so r?liuche draft
authorAndrzej Hunt <ahunt@mozilla.com>
Mon, 23 May 2016 11:15:44 -0700
changeset 369812 901caf60479fb84e14be820b634113b53109334c
parent 369811 aefd4753b051a5cb36d5dd73a6f4e206e00c923c
child 521621 e3f084d6640baf5a391098ff83fe716235e52251
push id18918
push userahunt@mozilla.com
push dateMon, 23 May 2016 18:16:07 +0000
reviewersliuche
bugs1228593
milestone49.0a1
Bug 1228593 - dontSaveSession may be undefined, assume false if so r?liuche GeckoApp sometimes passes in an aClear where only sanitize is defined, and dontSaveSession has never been set. We need to be able to handle this, and should assume that this means we should retain the current session (as these are also the default params). Previously this would result in session restore data either not being saved, or not being cleared respectively. MozReview-Commit-ID: 6tu6KuL68LA
mobile/android/chrome/content/browser.js
--- a/mobile/android/chrome/content/browser.js
+++ b/mobile/android/chrome/content/browser.js
@@ -1350,17 +1350,19 @@ var BrowserApp = {
     Services.obs.notifyObservers(cancelQuit, "quit-application-requested", "restart");
 
     // Quit aborted.
     if (cancelQuit.data) {
       return;
     }
 
     // Tell session store to forget about this window
-    if (aClear.dontSaveSession) {
+    // dontSaveSession might not be defined, especially for calls made from java, we should
+    // treat that as equivalent to dontSaveSession being false
+    if ((aClear.dontSaveSession !== undefined) && (aClear.dontSaveSession)) {
       let ss = Cc["@mozilla.org/browser/sessionstore;1"].getService(Ci.nsISessionStore);
       ss.removeWindow(window);
     }
 
     BrowserApp.sanitize(aClear.sanitize, function() {
       let appStartup = Cc["@mozilla.org/toolkit/app-startup;1"].getService(Ci.nsIAppStartup);
       appStartup.quit(Ci.nsIAppStartup.eForceQuit);
     });