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 4e4a2e76ec839cfebad839e7a849bc3d18e43efe..db6b3c1bc567fefe938764c333112934d89789bf 100644 |
--- a/chrome/browser/background/background_mode_manager.cc |
+++ b/chrome/browser/background/background_mode_manager.cc |
@@ -50,6 +50,7 @@ |
#include "extensions/common/constants.h" |
#include "extensions/common/extension.h" |
#include "extensions/common/manifest_handlers/options_page_info.h" |
+#include "extensions/common/one_shot_event.h" |
#include "extensions/common/permissions/permission_set.h" |
#include "grit/chrome_unscaled_resources.h" |
#include "ui/base/l10n/l10n_util.h" |
@@ -253,7 +254,8 @@ BackgroundModeManager::BackgroundModeManager( |
keep_alive_for_startup_(false), |
keep_alive_for_test_(false), |
background_mode_suspended_(false), |
- keeping_alive_(false) { |
+ keeping_alive_(false), |
+ weak_factory_(this) { |
// We should never start up if there is no browser process or if we are |
// currently quitting. |
CHECK(g_browser_process != NULL); |
@@ -350,9 +352,10 @@ void BackgroundModeManager::RegisterProfile(Profile* profile) { |
// Check for the presence of background apps after all extensions have been |
// loaded, to handle the case where an extension has been manually removed |
// while Chrome was not running. |
- registrar_.Add(this, |
- extensions::NOTIFICATION_EXTENSIONS_READY_DEPRECATED, |
- content::Source<Profile>(profile)); |
+ extensions::ExtensionSystem::Get(profile)->ready().Post( |
+ FROM_HERE, |
+ base::Bind(&BackgroundModeManager::OnExtensionsReady, |
+ weak_factory_.GetWeakPtr())); |
bmd->applications_->AddObserver(this); |
@@ -385,11 +388,6 @@ void BackgroundModeManager::Observe( |
const content::NotificationSource& source, |
const content::NotificationDetails& details) { |
switch (type) { |
- case extensions::NOTIFICATION_EXTENSIONS_READY_DEPRECATED: |
- // Extensions are loaded, so we don't need to manually keep the browser |
- // process alive any more when running in no-startup-window mode. |
- DecrementKeepAliveCountForStartup(); |
- break; |
case chrome::NOTIFICATION_APP_TERMINATING: |
// Make sure we aren't still keeping the app alive (only happens if we |
// don't receive an EXTENSIONS_READY notification for some reason). |
@@ -413,6 +411,12 @@ void BackgroundModeManager::Observe( |
} |
} |
+void BackgroundModeManager::OnExtensionsReady() { |
+ // Extensions are loaded, so we don't need to manually keep the browser |
+ // process alive any more when running in no-startup-window mode. |
+ DecrementKeepAliveCountForStartup(); |
+} |
+ |
void BackgroundModeManager::OnBackgroundModeEnabledPrefChanged() { |
if (IsBackgroundModePrefEnabled()) |
EnableBackgroundMode(); |