Index: chrome/browser/lifetime/browser_close_manager.cc |
diff --git a/chrome/browser/lifetime/browser_close_manager.cc b/chrome/browser/lifetime/browser_close_manager.cc |
index e26b73f7ebbc59a2d6096f28553989dc1353d817..fed7d849fda0f1219e8f28817c670da7f6891066 100644 |
--- a/chrome/browser/lifetime/browser_close_manager.cc |
+++ b/chrome/browser/lifetime/browser_close_manager.cc |
@@ -5,6 +5,7 @@ |
#include "chrome/browser/lifetime/browser_close_manager.h" |
#include "base/command_line.h" |
+#include "chrome/browser/background/background_mode_manager.h" |
#include "chrome/browser/browser_process.h" |
#include "chrome/browser/browser_shutdown.h" |
#include "chrome/browser/download/download_service.h" |
@@ -32,6 +33,8 @@ void BrowserCloseManager::StartClosingBrowsers() { |
if (browser_shutdown::GetShutdownType() == browser_shutdown::END_SESSION || |
CommandLine::ForCurrentProcess()->HasSwitch( |
switches::kDisableBatchedShutdown)) { |
+ // Tell everyone that we are shutting down. |
+ browser_shutdown::SetTryingToQuit(true); |
CloseBrowsers(); |
return; |
} |
@@ -123,14 +126,17 @@ void BrowserCloseManager::OnReportDownloadsCancellable(bool proceed) { |
} |
void BrowserCloseManager::CloseBrowsers() { |
- // Tell everyone that we are shutting down. |
- browser_shutdown::SetTryingToQuit(true); |
- |
#if defined(ENABLE_SESSION_SERVICE) |
// Before we close the browsers shutdown all session services. That way an |
// exit can restore all browsers open before exiting. |
ProfileManager::ShutdownSessionServices(); |
#endif |
+ if (!browser_shutdown::IsTryingToQuit()) { |
+ BackgroundModeManager* background_mode_manager = |
+ g_browser_process->background_mode_manager(); |
+ if (background_mode_manager) |
+ background_mode_manager->SuspendBackgroundMode(); |
+ } |
bool session_ending = |
browser_shutdown::GetShutdownType() == browser_shutdown::END_SESSION; |