| 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());
|
|
|