Index: chrome/browser/browser_shutdown.cc |
diff --git a/chrome/browser/browser_shutdown.cc b/chrome/browser/browser_shutdown.cc |
index ab8f9d7561797948661f840a633e867733a84666..d20e541135cdc9c59ed1868048e46f5fea280ea0 100644 |
--- a/chrome/browser/browser_shutdown.cc |
+++ b/chrome/browser/browser_shutdown.cc |
@@ -47,6 +47,10 @@ |
#include "chrome/browser/first_run/upgrade_util.h" |
#endif |
+#if BUILDFLAG(ENABLE_BACKGROUND) |
+#include "chrome/browser/background/background_mode_manager.h" |
+#endif |
+ |
#if defined(ENABLE_RLZ) |
#include "components/rlz/rlz_tracker.h" |
#endif |
@@ -194,7 +198,7 @@ bool ShutdownPreThreadsStop() { |
return restart_last_session; |
} |
-void ShutdownPostThreadsStop(bool restart_last_session) { |
+void ShutdownPostThreadsStop(int shutdown_flags) { |
delete g_browser_process; |
g_browser_process = NULL; |
@@ -214,7 +218,7 @@ void ShutdownPostThreadsStop(bool restart_last_session) { |
} |
#endif |
- if (restart_last_session) { |
+ if (shutdown_flags & RESTART_LAST_SESSION) { |
#if !defined(OS_CHROMEOS) |
// Make sure to relaunch the browser with the original command line plus |
// the Restore Last Session flag. Note that Chrome can be launched (ie. |
@@ -239,6 +243,8 @@ void ShutdownPostThreadsStop(bool restart_last_session) { |
else |
new_cl->AppendSwitch(it.first); |
} |
+ if (shutdown_flags & RESTART_IN_BACKGROUND) |
+ new_cl->AppendSwitch(switches::kNoStartupWindow); |
#if defined(OS_POSIX) || defined(OS_WIN) |
upgrade_util::RelaunchChromeBrowser(*new_cl.get()); |
@@ -329,6 +335,22 @@ void ReadLastShutdownInfo() { |
void SetTryingToQuit(bool quitting) { |
g_trying_to_quit = quitting; |
+ |
+ if (quitting) |
+ return; |
+ |
+ // Reset the restart-related preferences. |
sky
2016/07/22 16:57:52
This just documents what the code is doing. Instea
dgn
2016/07/25 17:32:28
Done.
|
+ PrefService* pref_service = g_browser_process->local_state(); |
+ if (pref_service) { |
+#if !defined(OS_ANDROID) |
+ pref_service->ClearPref(prefs::kWasRestarted); |
+#endif // !defined(OS_ANDROID) |
+ pref_service->ClearPref(prefs::kRestartLastSessionOnShutdown); |
+ } |
+ |
+#if BUILDFLAG(ENABLE_BACKGROUND) |
+ BackgroundModeManager::should_restart_in_background(false); |
+#endif // BUILDFLAG(ENABLE_BACKGROUND) |
} |
bool IsTryingToQuit() { |