summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/extension_process_manager.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/extensions/extension_process_manager.cc')
-rw-r--r--chrome/browser/extensions/extension_process_manager.cc22
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) {