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

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

Issue 2593233003: Add a task manager column that shows memory state of processes (Closed)
Patch Set: comments addressed Created 3 years, 11 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
« no previous file with comments | « chrome/browser/ui/task_manager/task_manager_columns.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/ui/task_manager/task_manager_table_model.h" 5 #include "chrome/browser/ui/task_manager/task_manager_table_model.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/i18n/number_formatting.h" 10 #include "base/i18n/number_formatting.h"
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 case IDS_TASK_MANAGER_JAVASCRIPT_MEMORY_ALLOCATED_COLUMN: 56 case IDS_TASK_MANAGER_JAVASCRIPT_MEMORY_ALLOCATED_COLUMN:
57 case IDS_TASK_MANAGER_VIDEO_MEMORY_COLUMN: 57 case IDS_TASK_MANAGER_VIDEO_MEMORY_COLUMN:
58 case IDS_TASK_MANAGER_SQLITE_MEMORY_USED_COLUMN: 58 case IDS_TASK_MANAGER_SQLITE_MEMORY_USED_COLUMN:
59 case IDS_TASK_MANAGER_WEBCORE_IMAGE_CACHE_COLUMN: 59 case IDS_TASK_MANAGER_WEBCORE_IMAGE_CACHE_COLUMN:
60 case IDS_TASK_MANAGER_WEBCORE_SCRIPTS_CACHE_COLUMN: 60 case IDS_TASK_MANAGER_WEBCORE_SCRIPTS_CACHE_COLUMN:
61 case IDS_TASK_MANAGER_WEBCORE_CSS_CACHE_COLUMN: 61 case IDS_TASK_MANAGER_WEBCORE_CSS_CACHE_COLUMN:
62 case IDS_TASK_MANAGER_NACL_DEBUG_STUB_PORT_COLUMN: 62 case IDS_TASK_MANAGER_NACL_DEBUG_STUB_PORT_COLUMN:
63 case IDS_TASK_MANAGER_IDLE_WAKEUPS_COLUMN: 63 case IDS_TASK_MANAGER_IDLE_WAKEUPS_COLUMN:
64 case IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN: 64 case IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN:
65 case IDS_TASK_MANAGER_PROCESS_PRIORITY_COLUMN: 65 case IDS_TASK_MANAGER_PROCESS_PRIORITY_COLUMN:
66 case IDS_TASK_MANAGER_MEMORY_STATE_COLUMN:
66 return true; 67 return true;
67 default: 68 default:
68 return false; 69 return false;
69 } 70 }
70 } 71 }
71 72
72 // Used to sort various column values. 73 // Used to sort various column values.
73 template <class T> 74 template <class T>
74 int ValueCompare(T value1, T value2) { 75 int ValueCompare(T value1, T value2) {
75 if (value1 == value2) 76 if (value1 == value2)
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 memory_text = l10n_util::GetStringFUTF16(IDS_TASK_MANAGER_MEM_CELL_TEXT, 137 memory_text = l10n_util::GetStringFUTF16(IDS_TASK_MANAGER_MEM_CELL_TEXT,
137 memory_text); 138 memory_text);
138 #endif // defined(OS_MACOSX) 139 #endif // defined(OS_MACOSX)
139 140
140 if (has_duplicates) 141 if (has_duplicates)
141 memory_text += asterisk_string_; 142 memory_text += asterisk_string_;
142 143
143 return memory_text; 144 return memory_text;
144 } 145 }
145 146
147 base::string16 GetMemoryStateText(base::MemoryState state) {
148 if (state == base::MemoryState::UNKNOWN)
149 return n_a_string_;
150 // TODO(bashi): i18n.
afakhry 2017/01/05 00:57:30 Nit: This TODO is very vague. Can you please expla
bashi 2017/01/05 01:05:52 Done.
afakhry 2017/01/05 01:27:10 In this case it's quite simple to do here. Conside
bashi 2017/01/05 02:18:22 Thanks for the suggestion. The MemoryState enums a
afakhry 2017/01/05 17:00:20 Perfect, thanks!
151 return base::UTF8ToUTF16(base::MemoryStateToString(state));
152 }
153
146 base::string16 GetIdleWakeupsText(int idle_wakeups) { 154 base::string16 GetIdleWakeupsText(int idle_wakeups) {
147 if (idle_wakeups == -1) 155 if (idle_wakeups == -1)
148 return n_a_string_; 156 return n_a_string_;
149 157
150 return base::FormatNumber(idle_wakeups); 158 return base::FormatNumber(idle_wakeups);
151 } 159 }
152 160
153 base::string16 GetNaClPortText(int nacl_port) { 161 base::string16 GetNaClPortText(int nacl_port) {
154 if (nacl_port == nacl::kGdbDebugStubPortUnused || nacl_port == -2) 162 if (nacl_port == nacl::kGdbDebugStubPortUnused || nacl_port == -2)
155 return n_a_string_; 163 return n_a_string_;
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
391 : stringifier_->foregrounded_string(); 399 : stringifier_->foregrounded_string();
392 400
393 #if defined(OS_LINUX) 401 #if defined(OS_LINUX)
394 case IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN: { 402 case IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN: {
395 const int fd_count = observed_task_manager()->GetOpenFdCount(tasks_[row]); 403 const int fd_count = observed_task_manager()->GetOpenFdCount(tasks_[row]);
396 return fd_count >= 0 ? base::FormatNumber(fd_count) 404 return fd_count >= 0 ? base::FormatNumber(fd_count)
397 : stringifier_->n_a_string(); 405 : stringifier_->n_a_string();
398 } 406 }
399 #endif // defined(OS_LINUX) 407 #endif // defined(OS_LINUX)
400 408
409 case IDS_TASK_MANAGER_MEMORY_STATE_COLUMN: {
410 return stringifier_->GetMemoryStateText(
411 observed_task_manager()->GetMemoryState(tasks_[row]));
412 }
413
401 default: 414 default:
402 NOTREACHED(); 415 NOTREACHED();
403 return base::string16(); 416 return base::string16();
404 } 417 }
405 } 418 }
406 419
407 gfx::ImageSkia TaskManagerTableModel::GetIcon(int row) { 420 gfx::ImageSkia TaskManagerTableModel::GetIcon(int row) {
408 return observed_task_manager()->GetIcon(tasks_[row]); 421 return observed_task_manager()->GetIcon(tasks_[row]);
409 } 422 }
410 423
411 void TaskManagerTableModel::SetObserver( 424 void TaskManagerTableModel::SetObserver(
412 ui::TableModelObserver* observer) { 425 ui::TableModelObserver* observer) {
413 table_model_observer_ = observer; 426 table_model_observer_ = observer;
414 } 427 }
415 428
416 int TaskManagerTableModel::CompareValues(int row1, 429 int TaskManagerTableModel::CompareValues(int row1,
417 int row2, 430 int row2,
418 int column_id) { 431 int column_id) {
419 switch (column_id) { 432 switch (column_id) {
420 case IDS_TASK_MANAGER_TASK_COLUMN: 433 case IDS_TASK_MANAGER_TASK_COLUMN:
421 case IDS_TASK_MANAGER_PROFILE_NAME_COLUMN: 434 case IDS_TASK_MANAGER_PROFILE_NAME_COLUMN:
435 case IDS_TASK_MANAGER_MEMORY_STATE_COLUMN:
422 return ui::TableModel::CompareValues(row1, row2, column_id); 436 return ui::TableModel::CompareValues(row1, row2, column_id);
423 437
424 case IDS_TASK_MANAGER_NET_COLUMN: 438 case IDS_TASK_MANAGER_NET_COLUMN:
425 return ValueCompare( 439 return ValueCompare(
426 observed_task_manager()->GetNetworkUsage(tasks_[row1]), 440 observed_task_manager()->GetNetworkUsage(tasks_[row1]),
427 observed_task_manager()->GetNetworkUsage(tasks_[row2])); 441 observed_task_manager()->GetNetworkUsage(tasks_[row2]));
428 442
429 case IDS_TASK_MANAGER_CPU_COLUMN: 443 case IDS_TASK_MANAGER_CPU_COLUMN:
430 return ValueCompare(observed_task_manager()->GetCpuUsage(tasks_[row1]), 444 return ValueCompare(observed_task_manager()->GetCpuUsage(tasks_[row1]),
431 observed_task_manager()->GetCpuUsage(tasks_[row2])); 445 observed_task_manager()->GetCpuUsage(tasks_[row2]));
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
692 break; 706 break;
693 707
694 case IDS_TASK_MANAGER_NACL_DEBUG_STUB_PORT_COLUMN: 708 case IDS_TASK_MANAGER_NACL_DEBUG_STUB_PORT_COLUMN:
695 type = REFRESH_TYPE_NACL; 709 type = REFRESH_TYPE_NACL;
696 break; 710 break;
697 711
698 case IDS_TASK_MANAGER_PROCESS_PRIORITY_COLUMN: 712 case IDS_TASK_MANAGER_PROCESS_PRIORITY_COLUMN:
699 type = REFRESH_TYPE_PRIORITY; 713 type = REFRESH_TYPE_PRIORITY;
700 break; 714 break;
701 715
716 case IDS_TASK_MANAGER_MEMORY_STATE_COLUMN:
717 type = REFRESH_TYPE_MEMORY_STATE;
718 break;
719
702 #if defined(OS_LINUX) 720 #if defined(OS_LINUX)
703 case IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN: 721 case IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN:
704 type = REFRESH_TYPE_FD_COUNT; 722 type = REFRESH_TYPE_FD_COUNT;
705 break; 723 break;
706 #endif // defined(OS_LINUX) 724 #endif // defined(OS_LINUX)
707 725
708 default: 726 default:
709 NOTREACHED(); 727 NOTREACHED();
710 return; 728 return;
711 } 729 }
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
832 850
833 bool TaskManagerTableModel::IsTaskFirstInGroup(int row_index) const { 851 bool TaskManagerTableModel::IsTaskFirstInGroup(int row_index) const {
834 if (row_index == 0) 852 if (row_index == 0)
835 return true; 853 return true;
836 854
837 return observed_task_manager()->GetProcessId(tasks_[row_index - 1]) != 855 return observed_task_manager()->GetProcessId(tasks_[row_index - 1]) !=
838 observed_task_manager()->GetProcessId(tasks_[row_index]); 856 observed_task_manager()->GetProcessId(tasks_[row_index]);
839 } 857 }
840 858
841 } // namespace task_manager 859 } // namespace task_manager
OLDNEW
« no previous file with comments | « chrome/browser/ui/task_manager/task_manager_columns.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698