Index: chrome/browser/task_manager/task_manager_resource_providers.cc |
diff --git a/chrome/browser/task_manager/task_manager_resource_providers.cc b/chrome/browser/task_manager/task_manager_resource_providers.cc |
index 327ea9a265b8c75771baac224f8a3b9b0e90cf7c..b252812887f1e054721a385f7c2b8722e8b5b906 100644 |
--- a/chrome/browser/task_manager/task_manager_resource_providers.cc |
+++ b/chrome/browser/task_manager/task_manager_resource_providers.cc |
@@ -1259,28 +1259,17 @@ void TaskManagerExtensionProcessResourceProvider::StartUpdating() { |
if (!rvh->IsRenderViewLive()) |
continue; |
- // Don't add WebContents (those are handled by |
- // TaskManagerTabContentsResourceProvider) or background contents |
- // (handled by TaskManagerBackgroundResourceProvider). |
- // TODO(benwells): create specific chrome::VIEW_TYPE_TAB_CONTENTS for |
- // tab contents, as VIEW_TYPE_WEB_CONTENTS is the default. |
- content::ViewType view_type = rvh->GetDelegate()->GetRenderViewType(); |
- if (view_type == content::VIEW_TYPE_WEB_CONTENTS || |
- view_type == chrome::VIEW_TYPE_BACKGROUND_CONTENTS) { |
- continue; |
- } |
- |
AddToTaskManager(rvh); |
} |
} |
} |
// Register for notifications about extension process changes. |
- registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_HOST_CREATED, |
+ registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_VIEW_REGISTERED, |
content::NotificationService::AllBrowserContextsAndSources()); |
registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_PROCESS_TERMINATED, |
content::NotificationService::AllBrowserContextsAndSources()); |
- registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_HOST_DESTROYED, |
+ registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_VIEW_UNREGISTERED, |
content::NotificationService::AllBrowserContextsAndSources()); |
} |
@@ -1290,13 +1279,13 @@ void TaskManagerExtensionProcessResourceProvider::StopUpdating() { |
// Unregister for notifications about extension process changes. |
registrar_.Remove( |
- this, chrome::NOTIFICATION_EXTENSION_HOST_CREATED, |
+ this, chrome::NOTIFICATION_EXTENSION_VIEW_REGISTERED, |
content::NotificationService::AllBrowserContextsAndSources()); |
registrar_.Remove( |
this, chrome::NOTIFICATION_EXTENSION_PROCESS_TERMINATED, |
content::NotificationService::AllBrowserContextsAndSources()); |
registrar_.Remove( |
- this, chrome::NOTIFICATION_EXTENSION_HOST_DESTROYED, |
+ this, chrome::NOTIFICATION_EXTENSION_VIEW_UNREGISTERED, |
content::NotificationService::AllBrowserContextsAndSources()); |
// Delete all the resources. |
@@ -1311,23 +1300,42 @@ void TaskManagerExtensionProcessResourceProvider::Observe( |
const content::NotificationSource& source, |
const content::NotificationDetails& details) { |
switch (type) { |
- case chrome::NOTIFICATION_EXTENSION_HOST_CREATED: |
+ case chrome::NOTIFICATION_EXTENSION_VIEW_REGISTERED: |
AddToTaskManager( |
- content::Details<ExtensionHost>(details).ptr()->render_view_host()); |
+ content::Details<content::RenderViewHost>(details).ptr()); |
break; |
case chrome::NOTIFICATION_EXTENSION_PROCESS_TERMINATED: |
- case chrome::NOTIFICATION_EXTENSION_HOST_DESTROYED: |
RemoveFromTaskManager( |
content::Details<ExtensionHost>(details).ptr()->render_view_host()); |
break; |
+ case chrome::NOTIFICATION_EXTENSION_VIEW_UNREGISTERED: |
+ RemoveFromTaskManager( |
+ content::Details<content::RenderViewHost>(details).ptr()); |
+ break; |
default: |
NOTREACHED() << "Unexpected notification."; |
return; |
} |
} |
+bool TaskManagerExtensionProcessResourceProvider:: |
+ IsHandledByThisProvider(content::RenderViewHost* render_view_host) { |
+ // Don't add WebContents (those are handled by |
+ // TaskManagerTabContentsResourceProvider) or background contents (handled |
+ // by TaskManagerBackgroundResourceProvider). |
+ // TODO(benwells): create specific chrome::VIEW_TYPE_TAB_CONTENTS for |
+ // tab contents, as VIEW_TYPE_WEB_CONTENTS is the default. |
+ content::ViewType view_type = |
+ render_view_host->GetDelegate()->GetRenderViewType(); |
+ return (view_type != content::VIEW_TYPE_WEB_CONTENTS && |
+ view_type != chrome::VIEW_TYPE_BACKGROUND_CONTENTS); |
+} |
+ |
void TaskManagerExtensionProcessResourceProvider::AddToTaskManager( |
content::RenderViewHost* render_view_host) { |
+ if (!IsHandledByThisProvider(render_view_host)) |
+ return; |
+ |
TaskManagerExtensionProcessResource* resource = |
new TaskManagerExtensionProcessResource(render_view_host); |
DCHECK(resources_.find(render_view_host) == resources_.end()); |