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

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

Issue 10119003: Pull shell window stuff out of ExtensionHost and put in ShellWindow (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Comments Created 8 years, 7 months 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/bind.h" 10 #include "base/bind.h"
(...skipping 1241 matching lines...) Expand 10 before | Expand all | Expand 10 after
1252 if (process_manager) { 1252 if (process_manager) {
1253 const ExtensionProcessManager::ViewSet all_views = 1253 const ExtensionProcessManager::ViewSet all_views =
1254 process_manager->GetAllViews(); 1254 process_manager->GetAllViews();
1255 ExtensionProcessManager::ViewSet::const_iterator jt = all_views.begin(); 1255 ExtensionProcessManager::ViewSet::const_iterator jt = all_views.begin();
1256 for (; jt != all_views.end(); ++jt) { 1256 for (; jt != all_views.end(); ++jt) {
1257 content::RenderViewHost* rvh = *jt; 1257 content::RenderViewHost* rvh = *jt;
1258 // Don't add dead extension processes. 1258 // Don't add dead extension processes.
1259 if (!rvh->IsRenderViewLive()) 1259 if (!rvh->IsRenderViewLive())
1260 continue; 1260 continue;
1261 1261
1262 // Don't add WebContents (those are handled by
1263 // TaskManagerTabContentsResourceProvider) or background contents
1264 // (handled by TaskManagerBackgroundResourceProvider).
1265 // TODO(benwells): create specific chrome::VIEW_TYPE_TAB_CONTENTS for
1266 // tab contents, as VIEW_TYPE_WEB_CONTENTS is the default.
1267 content::ViewType view_type = rvh->GetDelegate()->GetRenderViewType();
1268 if (view_type == content::VIEW_TYPE_WEB_CONTENTS ||
1269 view_type == chrome::VIEW_TYPE_BACKGROUND_CONTENTS) {
1270 continue;
1271 }
1272
1273 AddToTaskManager(rvh); 1262 AddToTaskManager(rvh);
1274 } 1263 }
1275 } 1264 }
1276 } 1265 }
1277 1266
1278 // Register for notifications about extension process changes. 1267 // Register for notifications about extension process changes.
1279 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_HOST_CREATED, 1268 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_VIEW_REGISTERED,
1280 content::NotificationService::AllBrowserContextsAndSources()); 1269 content::NotificationService::AllBrowserContextsAndSources());
1281 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_PROCESS_TERMINATED, 1270 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_PROCESS_TERMINATED,
1282 content::NotificationService::AllBrowserContextsAndSources()); 1271 content::NotificationService::AllBrowserContextsAndSources());
1283 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_HOST_DESTROYED, 1272 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_VIEW_UNREGISTERED,
1284 content::NotificationService::AllBrowserContextsAndSources()); 1273 content::NotificationService::AllBrowserContextsAndSources());
1285 } 1274 }
1286 1275
1287 void TaskManagerExtensionProcessResourceProvider::StopUpdating() { 1276 void TaskManagerExtensionProcessResourceProvider::StopUpdating() {
1288 DCHECK(updating_); 1277 DCHECK(updating_);
1289 updating_ = false; 1278 updating_ = false;
1290 1279
1291 // Unregister for notifications about extension process changes. 1280 // Unregister for notifications about extension process changes.
1292 registrar_.Remove( 1281 registrar_.Remove(
1293 this, chrome::NOTIFICATION_EXTENSION_HOST_CREATED, 1282 this, chrome::NOTIFICATION_EXTENSION_VIEW_REGISTERED,
1294 content::NotificationService::AllBrowserContextsAndSources()); 1283 content::NotificationService::AllBrowserContextsAndSources());
1295 registrar_.Remove( 1284 registrar_.Remove(
1296 this, chrome::NOTIFICATION_EXTENSION_PROCESS_TERMINATED, 1285 this, chrome::NOTIFICATION_EXTENSION_PROCESS_TERMINATED,
1297 content::NotificationService::AllBrowserContextsAndSources()); 1286 content::NotificationService::AllBrowserContextsAndSources());
1298 registrar_.Remove( 1287 registrar_.Remove(
1299 this, chrome::NOTIFICATION_EXTENSION_HOST_DESTROYED, 1288 this, chrome::NOTIFICATION_EXTENSION_VIEW_UNREGISTERED,
1300 content::NotificationService::AllBrowserContextsAndSources()); 1289 content::NotificationService::AllBrowserContextsAndSources());
1301 1290
1302 // Delete all the resources. 1291 // Delete all the resources.
1303 STLDeleteContainerPairSecondPointers(resources_.begin(), resources_.end()); 1292 STLDeleteContainerPairSecondPointers(resources_.begin(), resources_.end());
1304 1293
1305 resources_.clear(); 1294 resources_.clear();
1306 pid_to_resources_.clear(); 1295 pid_to_resources_.clear();
1307 } 1296 }
1308 1297
1309 void TaskManagerExtensionProcessResourceProvider::Observe( 1298 void TaskManagerExtensionProcessResourceProvider::Observe(
1310 int type, 1299 int type,
1311 const content::NotificationSource& source, 1300 const content::NotificationSource& source,
1312 const content::NotificationDetails& details) { 1301 const content::NotificationDetails& details) {
1313 switch (type) { 1302 switch (type) {
1314 case chrome::NOTIFICATION_EXTENSION_HOST_CREATED: 1303 case chrome::NOTIFICATION_EXTENSION_VIEW_REGISTERED:
1315 AddToTaskManager( 1304 AddToTaskManager(
1305 content::Details<content::RenderViewHost>(details).ptr());
1306 break;
1307 case chrome::NOTIFICATION_EXTENSION_PROCESS_TERMINATED:
1308 RemoveFromTaskManager(
1316 content::Details<ExtensionHost>(details).ptr()->render_view_host()); 1309 content::Details<ExtensionHost>(details).ptr()->render_view_host());
1317 break; 1310 break;
1318 case chrome::NOTIFICATION_EXTENSION_PROCESS_TERMINATED: 1311 case chrome::NOTIFICATION_EXTENSION_VIEW_UNREGISTERED:
1319 case chrome::NOTIFICATION_EXTENSION_HOST_DESTROYED:
1320 RemoveFromTaskManager( 1312 RemoveFromTaskManager(
1321 content::Details<ExtensionHost>(details).ptr()->render_view_host()); 1313 content::Details<content::RenderViewHost>(details).ptr());
1322 break; 1314 break;
1323 default: 1315 default:
1324 NOTREACHED() << "Unexpected notification."; 1316 NOTREACHED() << "Unexpected notification.";
1325 return; 1317 return;
1326 } 1318 }
1327 } 1319 }
1328 1320
1321 bool TaskManagerExtensionProcessResourceProvider::
1322 IsHandledByThisProvider(content::RenderViewHost* render_view_host) {
1323 // Don't add WebContents (those are handled by
1324 // TaskManagerTabContentsResourceProvider) or background contents (handled
1325 // by TaskManagerBackgroundResourceProvider).
1326 // TODO(benwells): create specific chrome::VIEW_TYPE_TAB_CONTENTS for
1327 // tab contents, as VIEW_TYPE_WEB_CONTENTS is the default.
1328 content::ViewType view_type =
1329 render_view_host->GetDelegate()->GetRenderViewType();
1330 return (view_type != content::VIEW_TYPE_WEB_CONTENTS &&
1331 view_type != chrome::VIEW_TYPE_BACKGROUND_CONTENTS);
1332 }
1333
1329 void TaskManagerExtensionProcessResourceProvider::AddToTaskManager( 1334 void TaskManagerExtensionProcessResourceProvider::AddToTaskManager(
1330 content::RenderViewHost* render_view_host) { 1335 content::RenderViewHost* render_view_host) {
1336 if (!IsHandledByThisProvider(render_view_host))
1337 return;
1338
1331 TaskManagerExtensionProcessResource* resource = 1339 TaskManagerExtensionProcessResource* resource =
1332 new TaskManagerExtensionProcessResource(render_view_host); 1340 new TaskManagerExtensionProcessResource(render_view_host);
1333 DCHECK(resources_.find(render_view_host) == resources_.end()); 1341 DCHECK(resources_.find(render_view_host) == resources_.end());
1334 resources_[render_view_host] = resource; 1342 resources_[render_view_host] = resource;
1335 pid_to_resources_[resource->process_id()] = resource; 1343 pid_to_resources_[resource->process_id()] = resource;
1336 task_manager_->AddResource(resource); 1344 task_manager_->AddResource(resource);
1337 } 1345 }
1338 1346
1339 void TaskManagerExtensionProcessResourceProvider::RemoveFromTaskManager( 1347 void TaskManagerExtensionProcessResourceProvider::RemoveFromTaskManager(
1340 content::RenderViewHost* render_view_host) { 1348 content::RenderViewHost* render_view_host) {
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
1492 1500
1493 return &resource_; 1501 return &resource_;
1494 } 1502 }
1495 1503
1496 void TaskManagerBrowserProcessResourceProvider::StartUpdating() { 1504 void TaskManagerBrowserProcessResourceProvider::StartUpdating() {
1497 task_manager_->AddResource(&resource_); 1505 task_manager_->AddResource(&resource_);
1498 } 1506 }
1499 1507
1500 void TaskManagerBrowserProcessResourceProvider::StopUpdating() { 1508 void TaskManagerBrowserProcessResourceProvider::StopUpdating() {
1501 } 1509 }
OLDNEW
« no previous file with comments | « chrome/browser/task_manager/task_manager_resource_providers.h ('k') | chrome/browser/ui/cocoa/extensions/shell_window_cocoa.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698