| Index: chrome/browser/task_manager_resource_providers.cc
|
| ===================================================================
|
| --- chrome/browser/task_manager_resource_providers.cc (revision 18701)
|
| +++ chrome/browser/task_manager_resource_providers.cc (working copy)
|
| @@ -540,22 +540,30 @@
|
| AddToTaskManager(*jt);
|
| }
|
|
|
| - // Register for notifications to get new extension processes.
|
| + // Register for notifications about extension process changes.
|
| registrar_.Add(this, NotificationType::EXTENSION_HOST_CREATED,
|
| NotificationService::AllSources());
|
| registrar_.Add(this, NotificationType::EXTENSION_HOST_DESTROYED,
|
| NotificationService::AllSources());
|
| + registrar_.Add(this, NotificationType::EXTENSION_PROCESS_CRASHED,
|
| + NotificationService::AllSources());
|
| + registrar_.Add(this, NotificationType::EXTENSION_PROCESS_RESTORED,
|
| + NotificationService::AllSources());
|
| }
|
|
|
| void TaskManagerExtensionProcessResourceProvider::StopUpdating() {
|
| DCHECK(updating_);
|
| updating_ = false;
|
|
|
| - // Unregister for notifications to get new extension processes.
|
| + // Unregister for notifications about extension process changes.
|
| registrar_.Remove(this, NotificationType::EXTENSION_HOST_CREATED,
|
| NotificationService::AllSources());
|
| registrar_.Remove(this, NotificationType::EXTENSION_HOST_DESTROYED,
|
| NotificationService::AllSources());
|
| + registrar_.Remove(this, NotificationType::EXTENSION_PROCESS_CRASHED,
|
| + NotificationService::AllSources());
|
| + registrar_.Remove(this, NotificationType::EXTENSION_PROCESS_RESTORED,
|
| + NotificationService::AllSources());
|
|
|
| // Delete all the resources.
|
| STLDeleteContainerPairSecondPointers(resources_.begin(), resources_.end());
|
| @@ -570,9 +578,11 @@
|
| const NotificationDetails& details) {
|
| switch (type.value) {
|
| case NotificationType::EXTENSION_HOST_CREATED:
|
| + case NotificationType::EXTENSION_PROCESS_RESTORED:
|
| AddToTaskManager(Details<ExtensionHost>(details).ptr());
|
| break;
|
| case NotificationType::EXTENSION_HOST_DESTROYED:
|
| + case NotificationType::EXTENSION_PROCESS_CRASHED:
|
| RemoveFromTaskManager(Details<ExtensionHost>(details).ptr());
|
| break;
|
| default:
|
| @@ -583,6 +593,10 @@
|
|
|
| void TaskManagerExtensionProcessResourceProvider::AddToTaskManager(
|
| ExtensionHost* extension_host) {
|
| + // Don't add dead extension processes.
|
| + if (!extension_host->IsViewLive())
|
| + return;
|
| +
|
| TaskManagerExtensionProcessResource* resource =
|
| new TaskManagerExtensionProcessResource(extension_host);
|
| DCHECK(resources_.find(extension_host) == resources_.end());
|
|
|