Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1556)

Side by Side Diff: chrome/browser/task_manager/task_manager_resource_providers.cc

Issue 8480007: Change EXTENSION_PROCESS_CREATED observers to use EXTENSION_HOST_CREATED. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/task_manager/task_manager_resource_providers.h" 5 #include "chrome/browser/task_manager/task_manager_resource_providers.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/file_version_info.h" 10 #include "base/file_version_info.h"
(...skipping 1143 matching lines...) Expand 10 before | Expand all | Expand 10 after
1154 if (iter != pid_to_resources_.end()) 1154 if (iter != pid_to_resources_.end())
1155 return iter->second; 1155 return iter->second;
1156 else 1156 else
1157 return NULL; 1157 return NULL;
1158 } 1158 }
1159 1159
1160 void TaskManagerExtensionProcessResourceProvider::StartUpdating() { 1160 void TaskManagerExtensionProcessResourceProvider::StartUpdating() {
1161 DCHECK(!updating_); 1161 DCHECK(!updating_);
1162 updating_ = true; 1162 updating_ = true;
1163 1163
1164 // Add all the existing ExtensionHosts. 1164 // Add all the existing ExtensionHosts from all Profiles, including those from
1165 // incognito split mode.
1165 ProfileManager* profile_manager = g_browser_process->profile_manager(); 1166 ProfileManager* profile_manager = g_browser_process->profile_manager();
1166 std::vector<Profile*> profiles(profile_manager->GetLoadedProfiles()); 1167 std::vector<Profile*> profiles(profile_manager->GetLoadedProfiles());
1168 size_t num_default_profiles = profiles.size();
1169 for (size_t i = 0; i < num_default_profiles; ++i) {
1170 if (profiles[i]->HasOffTheRecordProfile()) {
1171 profiles.push_back(profiles[i]->GetOffTheRecordProfile());
1172 }
1173 }
1167 for (size_t i = 0; i < profiles.size(); ++i) { 1174 for (size_t i = 0; i < profiles.size(); ++i) {
1168 ExtensionProcessManager* process_manager = 1175 ExtensionProcessManager* process_manager =
1169 profiles[i]->GetExtensionProcessManager(); 1176 profiles[i]->GetExtensionProcessManager();
1170 if (process_manager) { 1177 if (process_manager) {
1171 ExtensionProcessManager::const_iterator jt; 1178 ExtensionProcessManager::const_iterator jt;
1172 for (jt = process_manager->begin(); jt != process_manager->end(); ++jt) 1179 for (jt = process_manager->begin(); jt != process_manager->end(); ++jt) {
1173 AddToTaskManager(*jt); 1180 // Don't add dead extension processes.
1174 } 1181 if ((*jt)->IsRenderViewLive())
1175 1182 AddToTaskManager(*jt);
1176 // If we have an incognito profile active, include the split-mode incognito
1177 // extensions.
1178 if (BrowserList::IsOffTheRecordSessionActiveForProfile(profiles[i])) {
1179 ExtensionProcessManager* process_manager =
1180 profiles[i]->GetOffTheRecordProfile()->GetExtensionProcessManager();
1181 if (process_manager) {
1182 ExtensionProcessManager::const_iterator jt;
1183 for (jt = process_manager->begin(); jt != process_manager->end(); ++jt)
1184 AddToTaskManager(*jt);
1185 } 1183 }
1186 } 1184 }
1187 } 1185 }
1188 1186
1189 // Register for notifications about extension process changes. 1187 // Register for notifications about extension process changes.
1190 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_PROCESS_CREATED, 1188 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_HOST_CREATED,
1191 content::NotificationService::AllBrowserContextsAndSources()); 1189 content::NotificationService::AllBrowserContextsAndSources());
1192 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_PROCESS_TERMINATED, 1190 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_PROCESS_TERMINATED,
1193 content::NotificationService::AllBrowserContextsAndSources()); 1191 content::NotificationService::AllBrowserContextsAndSources());
1194 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_HOST_DESTROYED, 1192 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_HOST_DESTROYED,
1195 content::NotificationService::AllBrowserContextsAndSources()); 1193 content::NotificationService::AllBrowserContextsAndSources());
1196 } 1194 }
1197 1195
1198 void TaskManagerExtensionProcessResourceProvider::StopUpdating() { 1196 void TaskManagerExtensionProcessResourceProvider::StopUpdating() {
1199 DCHECK(updating_); 1197 DCHECK(updating_);
1200 updating_ = false; 1198 updating_ = false;
1201 1199
1202 // Unregister for notifications about extension process changes. 1200 // Unregister for notifications about extension process changes.
1203 registrar_.Remove( 1201 registrar_.Remove(
1204 this, chrome::NOTIFICATION_EXTENSION_PROCESS_CREATED, 1202 this, chrome::NOTIFICATION_EXTENSION_HOST_CREATED,
1205 content::NotificationService::AllBrowserContextsAndSources()); 1203 content::NotificationService::AllBrowserContextsAndSources());
1206 registrar_.Remove( 1204 registrar_.Remove(
1207 this, chrome::NOTIFICATION_EXTENSION_PROCESS_TERMINATED, 1205 this, chrome::NOTIFICATION_EXTENSION_PROCESS_TERMINATED,
1208 content::NotificationService::AllBrowserContextsAndSources()); 1206 content::NotificationService::AllBrowserContextsAndSources());
1209 registrar_.Remove( 1207 registrar_.Remove(
1210 this, chrome::NOTIFICATION_EXTENSION_HOST_DESTROYED, 1208 this, chrome::NOTIFICATION_EXTENSION_HOST_DESTROYED,
1211 content::NotificationService::AllBrowserContextsAndSources()); 1209 content::NotificationService::AllBrowserContextsAndSources());
1212 1210
1213 // Delete all the resources. 1211 // Delete all the resources.
1214 STLDeleteContainerPairSecondPointers(resources_.begin(), resources_.end()); 1212 STLDeleteContainerPairSecondPointers(resources_.begin(), resources_.end());
1215 1213
1216 resources_.clear(); 1214 resources_.clear();
1217 pid_to_resources_.clear(); 1215 pid_to_resources_.clear();
1218 } 1216 }
1219 1217
1220 void TaskManagerExtensionProcessResourceProvider::Observe( 1218 void TaskManagerExtensionProcessResourceProvider::Observe(
1221 int type, 1219 int type,
1222 const content::NotificationSource& source, 1220 const content::NotificationSource& source,
1223 const content::NotificationDetails& details) { 1221 const content::NotificationDetails& details) {
1224 switch (type) { 1222 switch (type) {
1225 case chrome::NOTIFICATION_EXTENSION_PROCESS_CREATED: 1223 case chrome::NOTIFICATION_EXTENSION_HOST_CREATED:
1226 AddToTaskManager(content::Details<ExtensionHost>(details).ptr()); 1224 AddToTaskManager(content::Details<ExtensionHost>(details).ptr());
1227 break; 1225 break;
1228 case chrome::NOTIFICATION_EXTENSION_PROCESS_TERMINATED: 1226 case chrome::NOTIFICATION_EXTENSION_PROCESS_TERMINATED:
1229 case chrome::NOTIFICATION_EXTENSION_HOST_DESTROYED: 1227 case chrome::NOTIFICATION_EXTENSION_HOST_DESTROYED:
1230 RemoveFromTaskManager(content::Details<ExtensionHost>(details).ptr()); 1228 RemoveFromTaskManager(content::Details<ExtensionHost>(details).ptr());
1231 break; 1229 break;
1232 default: 1230 default:
1233 NOTREACHED() << "Unexpected notification."; 1231 NOTREACHED() << "Unexpected notification.";
1234 return; 1232 return;
1235 } 1233 }
1236 } 1234 }
1237 1235
1238 void TaskManagerExtensionProcessResourceProvider::AddToTaskManager( 1236 void TaskManagerExtensionProcessResourceProvider::AddToTaskManager(
1239 ExtensionHost* extension_host) { 1237 ExtensionHost* extension_host) {
1240 // Don't add dead extension processes.
1241 if (!extension_host->IsRenderViewLive())
1242 return;
1243
1244 TaskManagerExtensionProcessResource* resource = 1238 TaskManagerExtensionProcessResource* resource =
1245 new TaskManagerExtensionProcessResource(extension_host); 1239 new TaskManagerExtensionProcessResource(extension_host);
1246 DCHECK(resources_.find(extension_host) == resources_.end()); 1240 DCHECK(resources_.find(extension_host) == resources_.end());
1247 resources_[extension_host] = resource; 1241 resources_[extension_host] = resource;
1248 pid_to_resources_[resource->process_id()] = resource; 1242 pid_to_resources_[resource->process_id()] = resource;
1249 task_manager_->AddResource(resource); 1243 task_manager_->AddResource(resource);
1250 } 1244 }
1251 1245
1252 void TaskManagerExtensionProcessResourceProvider::RemoveFromTaskManager( 1246 void TaskManagerExtensionProcessResourceProvider::RemoveFromTaskManager(
1253 ExtensionHost* extension_host) { 1247 ExtensionHost* extension_host) {
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
1401 1395
1402 return &resource_; 1396 return &resource_;
1403 } 1397 }
1404 1398
1405 void TaskManagerBrowserProcessResourceProvider::StartUpdating() { 1399 void TaskManagerBrowserProcessResourceProvider::StartUpdating() {
1406 task_manager_->AddResource(&resource_); 1400 task_manager_->AddResource(&resource_);
1407 } 1401 }
1408 1402
1409 void TaskManagerBrowserProcessResourceProvider::StopUpdating() { 1403 void TaskManagerBrowserProcessResourceProvider::StopUpdating() {
1410 } 1404 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_process_manager.cc ('k') | chrome/browser/ui/webui/options/extension_settings_handler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698