diff options
Diffstat (limited to 'chrome/browser/extensions/extension_process_manager.cc')
-rw-r--r-- | chrome/browser/extensions/extension_process_manager.cc | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/chrome/browser/extensions/extension_process_manager.cc b/chrome/browser/extensions/extension_process_manager.cc index 08764e1..1db0def 100644 --- a/chrome/browser/extensions/extension_process_manager.cc +++ b/chrome/browser/extensions/extension_process_manager.cc @@ -104,6 +104,9 @@ ExtensionProcessManager::ExtensionProcessManager(Profile* profile) // |site_instance_id| in UnregisterExtensionSiteInstance. registrar_.Add(this, content::NOTIFICATION_SITE_INSTANCE_DELETED, NotificationService::AllBrowserContextsAndSources()); + // Same for NOTIFICATION_RENDERER_PROCESS_CLOSED. + registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_CLOSED, + NotificationService::AllBrowserContextsAndSources()); registrar_.Add(this, content::NOTIFICATION_APP_TERMINATING, NotificationService::AllSources()); } @@ -246,6 +249,18 @@ void ExtensionProcessManager::UnregisterExtensionSiteInstance( extension_ids_.erase(it++); } +void ExtensionProcessManager::RegisterProcessHost(int host_id) { + process_ids_.insert(host_id); +} + +void ExtensionProcessManager::UnregisterProcessHost(int host_id) { + process_ids_.erase(host_id); +} + +bool ExtensionProcessManager::IsExtensionProcessHost(int host_id) const { + return process_ids_.find(host_id) != process_ids_.end(); +} + RenderProcessHost* ExtensionProcessManager::GetExtensionProcess( const GURL& url) { if (!browsing_instance_->HasSiteInstance(url)) @@ -335,6 +350,13 @@ void ExtensionProcessManager::Observe(int type, break; } + case content::NOTIFICATION_RENDERER_PROCESS_CLOSED: { + RenderProcessHost* process_host = + Source<RenderProcessHost>(source).ptr(); + UnregisterProcessHost(process_host->id()); + break; + } + case chrome::NOTIFICATION_EXTENSION_HOST_VIEW_SHOULD_CLOSE: { ExtensionHost* host = Details<ExtensionHost>(details).ptr(); if (host->extension_host_type() == ViewType::EXTENSION_BACKGROUND_PAGE) { |