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

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

Issue 10895: Add Terminate() to the Process object, have RenderProcessHost use this to avo... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 12 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
« no previous file with comments | « chrome/browser/task_manager.h ('k') | chrome/browser/task_manager_resource_providers.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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.h" 5 #include "chrome/browser/task_manager.h"
6 6
7 #include "base/process_util.h" 7 #include "base/process_util.h"
8 #include "base/stats_table.h" 8 #include "base/stats_table.h"
9 #include "base/string_util.h" 9 #include "base/string_util.h"
10 #include "chrome/app/theme/theme_resources.h" 10 #include "chrome/app/theme/theme_resources.h"
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 int TaskManagerTableModel::RowCount() { 89 int TaskManagerTableModel::RowCount() {
90 return static_cast<int>(resources_.size()); 90 return static_cast<int>(resources_.size());
91 } 91 }
92 92
93 std::wstring TaskManagerTableModel::GetText(int row, int col_id) { 93 std::wstring TaskManagerTableModel::GetText(int row, int col_id) {
94 // Let's find out if we are the first item in our group. 94 // Let's find out if we are the first item in our group.
95 TaskManager::Resource* resource = resources_[row]; 95 TaskManager::Resource* resource = resources_[row];
96 ResourceList* group = group_map_[resource->GetProcess()]; 96 ResourceList* group = group_map_[resource->GetProcess()];
97 DCHECK(group && !group->empty()); 97 DCHECK(group && !group->empty());
98 bool first_in_group = ((*group)[0] == resource); 98 bool first_in_group = ((*group)[0] == resource);
99 process_util::ProcessMetrics* process_metrics = NULL; 99 base::ProcessMetrics* process_metrics = NULL;
100 if (first_in_group) { 100 if (first_in_group) {
101 MetricsMap::iterator iter = metrics_map_.find(resource->GetProcess()); 101 MetricsMap::iterator iter = metrics_map_.find(resource->GetProcess());
102 DCHECK(iter != metrics_map_.end()); 102 DCHECK(iter != metrics_map_.end());
103 process_metrics = iter->second; 103 process_metrics = iter->second;
104 } 104 }
105 105
106 switch (col_id) { 106 switch (col_id) {
107 case IDS_TASK_MANAGER_PAGE_COLUMN: // Process 107 case IDS_TASK_MANAGER_PAGE_COLUMN: // Process
108 return resource->GetTitle(); 108 return resource->GetTitle();
109 109
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 case IDS_TASK_MANAGER_PHYSICAL_MEM_COLUMN: // Memory 141 case IDS_TASK_MANAGER_PHYSICAL_MEM_COLUMN: // Memory
142 if (!first_in_group) 142 if (!first_in_group)
143 return std::wstring(); 143 return std::wstring();
144 return l10n_util::GetStringF( 144 return l10n_util::GetStringF(
145 IDS_TASK_MANAGER_MEM_CELL_TEXT, 145 IDS_TASK_MANAGER_MEM_CELL_TEXT,
146 FormatNumber(GetPhysicalMemory(process_metrics))); 146 FormatNumber(GetPhysicalMemory(process_metrics)));
147 147
148 case IDS_TASK_MANAGER_PROCESS_ID_COLUMN: 148 case IDS_TASK_MANAGER_PROCESS_ID_COLUMN:
149 if (!first_in_group) 149 if (!first_in_group)
150 return std::wstring(); 150 return std::wstring();
151 return IntToWString(process_util::GetProcId(resource->GetProcess())); 151 return IntToWString(base::GetProcId(resource->GetProcess()));
152 152
153 case kGoatsTeleportedColumn: // Goats Teleported. 153 case kGoatsTeleportedColumn: // Goats Teleported.
154 goats_teleported_ += rand(); 154 goats_teleported_ += rand();
155 return FormatNumber(goats_teleported_); 155 return FormatNumber(goats_teleported_);
156 156
157 default: 157 default:
158 return IntToWString(GetStatsValue(resource, col_id)); 158 return IntToWString(GetStatsValue(resource, col_id));
159 } 159 }
160 } 160 }
161 161
162 int64 TaskManagerTableModel::GetNetworkUsage(TaskManager::Resource* resource) { 162 int64 TaskManagerTableModel::GetNetworkUsage(TaskManager::Resource* resource) {
163 int64 net_usage = GetNetworkUsageForResource(resource); 163 int64 net_usage = GetNetworkUsageForResource(resource);
164 if (net_usage == 0 && !resource->SupportNetworkUsage()) 164 if (net_usage == 0 && !resource->SupportNetworkUsage())
165 return -1; 165 return -1;
166 return net_usage; 166 return net_usage;
167 } 167 }
168 168
169 int TaskManagerTableModel::GetCPUUsage(TaskManager::Resource* resource) { 169 int TaskManagerTableModel::GetCPUUsage(TaskManager::Resource* resource) {
170 CPUUsageMap::const_iterator iter = 170 CPUUsageMap::const_iterator iter =
171 cpu_usage_map_.find(resource->GetProcess()); 171 cpu_usage_map_.find(resource->GetProcess());
172 if (iter == cpu_usage_map_.end()) 172 if (iter == cpu_usage_map_.end())
173 return 0; 173 return 0;
174 return iter->second; 174 return iter->second;
175 } 175 }
176 176
177 size_t TaskManagerTableModel::GetPrivateMemory( 177 size_t TaskManagerTableModel::GetPrivateMemory(
178 process_util::ProcessMetrics* process_metrics) { 178 base::ProcessMetrics* process_metrics) {
179 return process_metrics->GetPrivateBytes() / 1024; 179 return process_metrics->GetPrivateBytes() / 1024;
180 } 180 }
181 181
182 size_t TaskManagerTableModel::GetSharedMemory( 182 size_t TaskManagerTableModel::GetSharedMemory(
183 process_util::ProcessMetrics* process_metrics) { 183 base::ProcessMetrics* process_metrics) {
184 process_util::WorkingSetKBytes ws_usage; 184 base::WorkingSetKBytes ws_usage;
185 process_metrics->GetWorkingSetKBytes(&ws_usage); 185 process_metrics->GetWorkingSetKBytes(&ws_usage);
186 return ws_usage.shared; 186 return ws_usage.shared;
187 } 187 }
188 188
189 size_t TaskManagerTableModel::GetPhysicalMemory( 189 size_t TaskManagerTableModel::GetPhysicalMemory(
190 process_util::ProcessMetrics* process_metrics) { 190 base::ProcessMetrics* process_metrics) {
191 // Memory = working_set.private + working_set.shareable. 191 // Memory = working_set.private + working_set.shareable.
192 // We exclude the shared memory. 192 // We exclude the shared memory.
193 size_t total_kbytes = process_metrics->GetWorkingSetSize() / 1024; 193 size_t total_kbytes = process_metrics->GetWorkingSetSize() / 1024;
194 process_util::WorkingSetKBytes ws_usage; 194 base::WorkingSetKBytes ws_usage;
195 process_metrics->GetWorkingSetKBytes(&ws_usage); 195 process_metrics->GetWorkingSetKBytes(&ws_usage);
196 total_kbytes -= ws_usage.shared; 196 total_kbytes -= ws_usage.shared;
197 return total_kbytes; 197 return total_kbytes;
198 } 198 }
199 199
200 int TaskManagerTableModel::GetStatsValue(TaskManager::Resource* resource, 200 int TaskManagerTableModel::GetStatsValue(TaskManager::Resource* resource,
201 int col_id) { 201 int col_id) {
202 StatsTable* table = StatsTable::current(); 202 StatsTable* table = StatsTable::current();
203 if (table != NULL) { 203 if (table != NULL) {
204 const wchar_t* counter = table->GetRowName(col_id); 204 const wchar_t* counter = table->GetRowName(col_id);
205 if (counter != NULL && counter[0] != '\0') { 205 if (counter != NULL && counter[0] != '\0') {
206 return table->GetCounterValue(counter, 206 return table->GetCounterValue(counter,
207 process_util::GetProcId(resource->GetProcess())); 207 base::GetProcId(resource->GetProcess()));
208 } else { 208 } else {
209 NOTREACHED() << "Invalid column."; 209 NOTREACHED() << "Invalid column.";
210 } 210 }
211 } 211 }
212 return 0; 212 return 0;
213 } 213 }
214 214
215 SkBitmap TaskManagerTableModel::GetIcon(int row) { 215 SkBitmap TaskManagerTableModel::GetIcon(int row) {
216 DCHECK(row < RowCount()); 216 DCHECK(row < RowCount());
217 SkBitmap icon = resources_[row]->GetIcon(); 217 SkBitmap icon = resources_[row]->GetIcon();
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
337 337
338 // Insert the new entry right after the last entry of its group. 338 // Insert the new entry right after the last entry of its group.
339 ResourceList::iterator iter = 339 ResourceList::iterator iter =
340 std::find(resources_.begin(), 340 std::find(resources_.begin(),
341 resources_.end(), 341 resources_.end(),
342 (*group_entries)[group_entries->size() - 2]); 342 (*group_entries)[group_entries->size() - 2]);
343 DCHECK(iter != resources_.end()); 343 DCHECK(iter != resources_.end());
344 new_entry_index = static_cast<int>(iter - resources_.begin()); 344 new_entry_index = static_cast<int>(iter - resources_.begin());
345 resources_.insert(++iter, resource); 345 resources_.insert(++iter, resource);
346 } 346 }
347 process_util::ProcessMetrics* pm = 347 base::ProcessMetrics* pm =
348 process_util::ProcessMetrics::CreateProcessMetrics(process); 348 base::ProcessMetrics::CreateProcessMetrics(process);
349 metrics_map_[process] = pm; 349 metrics_map_[process] = pm;
350 350
351 // Notify the table that the contents have changed for it to redraw. 351 // Notify the table that the contents have changed for it to redraw.
352 DCHECK(observer_); 352 DCHECK(observer_);
353 observer_->OnItemsAdded(new_entry_index, 1); 353 observer_->OnItemsAdded(new_entry_index, 1);
354 } 354 }
355 355
356 void TaskManagerTableModel::RemoveResource(TaskManager::Resource* resource) { 356 void TaskManagerTableModel::RemoveResource(TaskManager::Resource* resource) {
357 HANDLE process = resource->GetProcess(); 357 HANDLE process = resource->GetProcess();
358 358
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
496 496
497 case IDS_TASK_MANAGER_NET_COLUMN: 497 case IDS_TASK_MANAGER_NET_COLUMN:
498 return ValueCompare<int64>(GetNetworkUsage(resources_[row1]), 498 return ValueCompare<int64>(GetNetworkUsage(resources_[row1]),
499 GetNetworkUsage(resources_[row2])); 499 GetNetworkUsage(resources_[row2]));
500 500
501 case IDS_TASK_MANAGER_CPU_COLUMN: 501 case IDS_TASK_MANAGER_CPU_COLUMN:
502 return ValueCompare<int>(GetCPUUsage(resources_[row1]), 502 return ValueCompare<int>(GetCPUUsage(resources_[row1]),
503 GetCPUUsage(resources_[row2])); 503 GetCPUUsage(resources_[row2]));
504 504
505 case IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN: { 505 case IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN: {
506 process_util::ProcessMetrics* pm1; 506 base::ProcessMetrics* pm1;
507 process_util::ProcessMetrics* pm2; 507 base::ProcessMetrics* pm2;
508 if (!GetProcessMetricsForRows(row1, row2, &pm1, &pm2)) 508 if (!GetProcessMetricsForRows(row1, row2, &pm1, &pm2))
509 return 0; 509 return 0;
510 return ValueCompare<size_t>(GetPrivateMemory(pm1), 510 return ValueCompare<size_t>(GetPrivateMemory(pm1),
511 GetPrivateMemory(pm2)); 511 GetPrivateMemory(pm2));
512 } 512 }
513 513
514 case IDS_TASK_MANAGER_SHARED_MEM_COLUMN: { 514 case IDS_TASK_MANAGER_SHARED_MEM_COLUMN: {
515 process_util::ProcessMetrics* pm1; 515 base::ProcessMetrics* pm1;
516 process_util::ProcessMetrics* pm2; 516 base::ProcessMetrics* pm2;
517 if (!GetProcessMetricsForRows(row1, row2, &pm1, &pm2)) 517 if (!GetProcessMetricsForRows(row1, row2, &pm1, &pm2))
518 return 0; 518 return 0;
519 return ValueCompare<size_t>(GetSharedMemory(pm1), 519 return ValueCompare<size_t>(GetSharedMemory(pm1),
520 GetSharedMemory(pm2)); 520 GetSharedMemory(pm2));
521 } 521 }
522 522
523 case IDS_TASK_MANAGER_PHYSICAL_MEM_COLUMN: { 523 case IDS_TASK_MANAGER_PHYSICAL_MEM_COLUMN: {
524 process_util::ProcessMetrics* pm1; 524 base::ProcessMetrics* pm1;
525 process_util::ProcessMetrics* pm2; 525 base::ProcessMetrics* pm2;
526 if (!GetProcessMetricsForRows(row1, row2, &pm1, &pm2)) 526 if (!GetProcessMetricsForRows(row1, row2, &pm1, &pm2))
527 return 0; 527 return 0;
528 return ValueCompare<size_t>(GetPhysicalMemory(pm1), 528 return ValueCompare<size_t>(GetPhysicalMemory(pm1),
529 GetPhysicalMemory(pm2)); 529 GetPhysicalMemory(pm2));
530 } 530 }
531 531
532 case IDS_TASK_MANAGER_PROCESS_ID_COLUMN: { 532 case IDS_TASK_MANAGER_PROCESS_ID_COLUMN: {
533 int proc1_id = process_util::GetProcId(resources_[row1]->GetProcess()); 533 int proc1_id = base::GetProcId(resources_[row1]->GetProcess());
534 int proc2_id = process_util::GetProcId(resources_[row2]->GetProcess()); 534 int proc2_id = base::GetProcId(resources_[row2]->GetProcess());
535 return ValueCompare<int>(proc1_id, proc2_id); 535 return ValueCompare<int>(proc1_id, proc2_id);
536 } 536 }
537 537
538 case kGoatsTeleportedColumn: 538 case kGoatsTeleportedColumn:
539 return 0; // Don't bother, numbers are random. 539 return 0; // Don't bother, numbers are random.
540 540
541 default: 541 default:
542 return ValueCompare<int>(GetStatsValue(resources_[row1], column_id), 542 return ValueCompare<int>(GetStatsValue(resources_[row1], column_id),
543 GetStatsValue(resources_[row2], column_id)); 543 GetStatsValue(resources_[row2], column_id));
544 } 544 }
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
625 NewRunnableMethod( 625 NewRunnableMethod(
626 this, 626 this,
627 &TaskManagerTableModel::BytesRead, 627 &TaskManagerTableModel::BytesRead,
628 BytesReadParam(job->request()->origin_pid(), 628 BytesReadParam(job->request()->origin_pid(),
629 render_process_host_id, routing_id, 629 render_process_host_id, routing_id,
630 byte_count))); 630 byte_count)));
631 } 631 }
632 632
633 bool TaskManagerTableModel::GetProcessMetricsForRows( 633 bool TaskManagerTableModel::GetProcessMetricsForRows(
634 int row1, int row2, 634 int row1, int row2,
635 process_util::ProcessMetrics** proc_metrics1, 635 base::ProcessMetrics** proc_metrics1,
636 process_util::ProcessMetrics** proc_metrics2) { 636 base::ProcessMetrics** proc_metrics2) {
637 637
638 DCHECK(row1 < static_cast<int>(resources_.size()) && 638 DCHECK(row1 < static_cast<int>(resources_.size()) &&
639 row2 < static_cast<int>(resources_.size())); 639 row2 < static_cast<int>(resources_.size()));
640 *proc_metrics1 = NULL; 640 *proc_metrics1 = NULL;
641 *proc_metrics2 = NULL; 641 *proc_metrics2 = NULL;
642 642
643 MetricsMap::iterator iter = metrics_map_.find(resources_[row1]->GetProcess()); 643 MetricsMap::iterator iter = metrics_map_.find(resources_[row1]->GetProcess());
644 if (iter == metrics_map_.end()) 644 if (iter == metrics_map_.end())
645 return false; 645 return false;
646 *proc_metrics1 = iter->second; 646 *proc_metrics1 = iter->second;
(...skipping 448 matching lines...) Expand 10 before | Expand all | Expand 10 after
1095 1095
1096 views::View* TaskManager::GetContentsView() { 1096 views::View* TaskManager::GetContentsView() {
1097 return contents_.get(); 1097 return contents_.get();
1098 } 1098 }
1099 1099
1100 // static 1100 // static
1101 TaskManager* TaskManager::GetInstance() { 1101 TaskManager* TaskManager::GetInstance() {
1102 return Singleton<TaskManager>::get(); 1102 return Singleton<TaskManager>::get();
1103 } 1103 }
1104 1104
OLDNEW
« no previous file with comments | « chrome/browser/task_manager.h ('k') | chrome/browser/task_manager_resource_providers.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698