Index: extensions/browser/process_manager.cc |
diff --git a/extensions/browser/process_manager.cc b/extensions/browser/process_manager.cc |
index c3bcd50ae425ff35c102616c72f73461c18ace31..38c476e016dcb3bdc5d988b5c4f8b879f8e38de0 100644 |
--- a/extensions/browser/process_manager.cc |
+++ b/extensions/browser/process_manager.cc |
@@ -247,16 +247,11 @@ ProcessManager::ProcessManager(BrowserContext* context, |
weak_ptr_factory_(this) { |
// ExtensionRegistry is shared between incognito and regular contexts. |
DCHECK_EQ(original_context, extension_registry_->browser_context()); |
+ extension_registry_->AddObserver(this); |
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, |
@@ -291,6 +286,7 @@ ProcessManager::ProcessManager(BrowserContext* context, |
} |
ProcessManager::~ProcessManager() { |
+ extension_registry_->RemoveObserver(this); |
CloseBackgroundHosts(); |
DCHECK(background_hosts_.empty()); |
content::DevToolsAgentHost::RemoveAgentStateCallback(devtools_callback_); |
@@ -688,33 +684,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)) { |
@@ -780,6 +749,31 @@ void ProcessManager::Observe(int type, |
} |
} |
+void ProcessManager::OnExtensionLoaded(content::BrowserContext* browser_context, |
+ const extensions::Extension* extension) { |
+ ExtensionSystem* system = ExtensionSystem::Get(browser_context); |
+ if (system->ready().is_signaled()) { |
+ // The extension system is ready, so create the background host. |
+ CreateBackgroundHostForExtensionLoad(this, extension); |
+ } |
+} |
+ |
+void ProcessManager::OnExtensionUnloaded( |
+ content::BrowserContext* browser_context, |
+ const extensions::Extension* extension, |
+ extensions::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) { |