Index: chrome/browser/background/background_mode_manager.cc |
diff --git a/chrome/browser/background/background_mode_manager.cc b/chrome/browser/background/background_mode_manager.cc |
index daf22d28894c0dfb35777c083284576b4abc0204..04f49b9513da8bc5bf9ea2b4f3d96b338b86ff49 100644 |
--- a/chrome/browser/background/background_mode_manager.cc |
+++ b/chrome/browser/background/background_mode_manager.cc |
@@ -23,6 +23,7 @@ |
#include "build/build_config.h" |
#include "chrome/app/chrome_command_ids.h" |
#include "chrome/browser/background/background_application_list_model.h" |
+#include "chrome/browser/background/background_mode_optimizer.h" |
#include "chrome/browser/background/background_trigger.h" |
#include "chrome/browser/browser_process.h" |
#include "chrome/browser/browser_shutdown.h" |
@@ -92,6 +93,8 @@ void RecordMenuItemClick(MenuItem item) { |
} |
} // namespace |
+bool BackgroundModeManager::should_restart_in_background_ = false; |
+ |
BackgroundModeManager::BackgroundModeData::BackgroundModeData( |
Profile* profile, |
CommandIdHandlerVector* command_id_handler_vector) |
@@ -287,6 +290,8 @@ BackgroundModeManager::BackgroundModeManager( |
CHECK(g_browser_process != NULL); |
CHECK(!browser_shutdown::IsTryingToQuit()); |
+ BackgroundModeManager::should_restart_in_background_ = false; |
+ |
// Add self as an observer for the ProfileAttributesStorage so we know when |
// profiles are deleted and their names change. |
profile_storage_->AddObserver(this); |
@@ -318,6 +323,7 @@ BackgroundModeManager::BackgroundModeManager( |
// in a mode that doesn't open a browser window. It will be resumed when the |
// first browser window is opened. |
SuspendBackgroundMode(); |
+ optimizer_ = BackgroundModeOptimizer::Create(); |
} |
// If the -keep-alive-for-test flag is passed, then always keep chrome running |
@@ -404,6 +410,16 @@ Browser* BackgroundModeManager::GetBrowserWindowForProfile(Profile* profile) { |
return browser ? browser : chrome::OpenEmptyWindow(profile); |
} |
+// static |
+bool BackgroundModeManager::ShouldRestartInBackground() { |
+ return BackgroundModeManager::should_restart_in_background_; |
+} |
+ |
+// static |
+void BackgroundModeManager::SetShouldRestartInBackground(bool enable) { |
+ BackgroundModeManager::should_restart_in_background_ = enable; |
+} |
+ |
bool BackgroundModeManager::IsBackgroundModeActive() { |
return in_background_mode_; |
} |
@@ -671,6 +687,7 @@ void BackgroundModeManager::ExecuteCommand(int command_id, int event_flags) { |
// BackgroundModeManager, private |
void BackgroundModeManager::ReleaseStartupKeepAliveCallback() { |
keep_alive_for_startup_.reset(); |
+ optimizer_ = BackgroundModeOptimizer::Create(); |
} |
void BackgroundModeManager::ReleaseStartupKeepAlive() { |