| Index: extensions/browser/process_manager.cc
|
| diff --git a/extensions/browser/process_manager.cc b/extensions/browser/process_manager.cc
|
| index 5ba8c13eadf7a7db18e2efcd88c2adaa300c43c7..d379cf76cf4e32f914ea386d17abf81cf1a7f5fe 100644
|
| --- a/extensions/browser/process_manager.cc
|
| +++ b/extensions/browser/process_manager.cc
|
| @@ -245,19 +245,14 @@ ProcessManager::ProcessManager(BrowserContext* context,
|
| devtools_callback_(base::Bind(&ProcessManager::OnDevToolsStateChanged,
|
| base::Unretained(this))),
|
| last_background_close_sequence_id_(0),
|
| - weak_ptr_factory_(this) {
|
| + weak_ptr_factory_(this),
|
| + extension_registry_observer_(this) {
|
| // ExtensionRegistry is shared between incognito and regular contexts.
|
| DCHECK_EQ(original_context, extension_registry_->browser_context());
|
| registrar_.Add(this,
|
| extensions::NOTIFICATION_EXTENSIONS_READY_DEPRECATED,
|
| content::Source<BrowserContext>(original_context));
|
| registrar_.Add(this,
|
| - extensions::NOTIFICATION_EXTENSION_LOADED_DEPRECATED,
|
| - content::Source<BrowserContext>(original_context));
|
| - registrar_.Add(this,
|
| - extensions::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED,
|
| - content::Source<BrowserContext>(original_context));
|
| - registrar_.Add(this,
|
| extensions::NOTIFICATION_EXTENSION_HOST_DESTROYED,
|
| content::Source<BrowserContext>(context));
|
| registrar_.Add(this,
|
| @@ -267,6 +262,7 @@ ProcessManager::ProcessManager(BrowserContext* context,
|
| content::NotificationService::AllSources());
|
| registrar_.Add(this, content::NOTIFICATION_WEB_CONTENTS_CONNECTED,
|
| content::NotificationService::AllSources());
|
| + extension_registry_observer_.Add(extension_registry_);
|
|
|
| // Note: event_page_idle_time_ must be sufficiently larger (e.g. 2x) than
|
| // kKeepaliveThrottleIntervalInSeconds in ppapi/proxy/plugin_globals.
|
| @@ -664,33 +660,6 @@ void ProcessManager::Observe(int type,
|
| break;
|
| }
|
|
|
| - case extensions::NOTIFICATION_EXTENSION_LOADED_DEPRECATED: {
|
| - BrowserContext* context = content::Source<BrowserContext>(source).ptr();
|
| - ExtensionSystem* system = ExtensionSystem::Get(context);
|
| - if (system->ready().is_signaled()) {
|
| - // The extension system is ready, so create the background host.
|
| - const Extension* extension =
|
| - content::Details<const Extension>(details).ptr();
|
| - CreateBackgroundHostForExtensionLoad(this, extension);
|
| - }
|
| - break;
|
| - }
|
| -
|
| - case extensions::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED: {
|
| - const Extension* extension =
|
| - content::Details<UnloadedExtensionInfo>(details)->extension;
|
| - for (ExtensionHostSet::iterator iter = background_hosts_.begin();
|
| - iter != background_hosts_.end(); ++iter) {
|
| - ExtensionHost* host = *iter;
|
| - if (host->extension_id() == extension->id()) {
|
| - CloseBackgroundHost(host);
|
| - break;
|
| - }
|
| - }
|
| - UnregisterExtension(extension->id());
|
| - break;
|
| - }
|
| -
|
| case extensions::NOTIFICATION_EXTENSION_HOST_DESTROYED: {
|
| ExtensionHost* host = content::Details<ExtensionHost>(details).ptr();
|
| if (background_hosts_.erase(host)) {
|
| @@ -756,6 +725,30 @@ void ProcessManager::Observe(int type,
|
| }
|
| }
|
|
|
| +void ProcessManager::OnExtensionLoaded(content::BrowserContext* browser_context,
|
| + const Extension* extension) {
|
| + if (ExtensionSystem::Get(browser_context)->ready().is_signaled()) {
|
| + // The extension system is ready, so create the background host.
|
| + CreateBackgroundHostForExtensionLoad(this, extension);
|
| + }
|
| +}
|
| +
|
| +void ProcessManager::OnExtensionUnloaded(
|
| + content::BrowserContext* browser_context,
|
| + const Extension* extension,
|
| + UnloadedExtensionInfo::Reason reason) {
|
| + for (ExtensionHostSet::iterator iter = background_hosts_.begin();
|
| + iter != background_hosts_.end();
|
| + ++iter) {
|
| + ExtensionHost* host = *iter;
|
| + if (host->extension_id() == extension->id()) {
|
| + CloseBackgroundHost(host);
|
| + break;
|
| + }
|
| + }
|
| + UnregisterExtension(extension->id());
|
| +}
|
| +
|
| void ProcessManager::OnDevToolsStateChanged(
|
| content::DevToolsAgentHost* agent_host,
|
| bool attached) {
|
|
|