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

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: fix compile error 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 27 matching lines...) Expand all
103 : n_a_string_(l10n_util::GetStringUTF16(IDS_TASK_MANAGER_NA_CELL_TEXT)), 104 : n_a_string_(l10n_util::GetStringUTF16(IDS_TASK_MANAGER_NA_CELL_TEXT)),
104 zero_string_(base::ASCIIToUTF16("0")), 105 zero_string_(base::ASCIIToUTF16("0")),
105 backgrounded_string_(l10n_util::GetStringUTF16( 106 backgrounded_string_(l10n_util::GetStringUTF16(
106 IDS_TASK_MANAGER_BACKGROUNDED_TEXT)), 107 IDS_TASK_MANAGER_BACKGROUNDED_TEXT)),
107 foregrounded_string_(l10n_util::GetStringUTF16( 108 foregrounded_string_(l10n_util::GetStringUTF16(
108 IDS_TASK_MANAGER_FOREGROUNDED_TEXT)), 109 IDS_TASK_MANAGER_FOREGROUNDED_TEXT)),
109 asterisk_string_(base::ASCIIToUTF16("*")), 110 asterisk_string_(base::ASCIIToUTF16("*")),
110 unknown_string_(l10n_util::GetStringUTF16( 111 unknown_string_(l10n_util::GetStringUTF16(
111 IDS_TASK_MANAGER_UNKNOWN_VALUE_TEXT)), 112 IDS_TASK_MANAGER_UNKNOWN_VALUE_TEXT)),
112 disabled_nacl_debugging_string_(l10n_util::GetStringUTF16( 113 disabled_nacl_debugging_string_(l10n_util::GetStringUTF16(
113 IDS_TASK_MANAGER_DISABLED_NACL_DBG_TEXT)) { 114 IDS_TASK_MANAGER_DISABLED_NACL_DBG_TEXT)),
115 memory_state_normal_string_(l10n_util::GetStringUTF16(
116 IDS_TASK_MANAGER_MEMORY_STATE_NORMAL_TEXT)),
117 memory_state_throttled_string_(l10n_util::GetStringUTF16(
118 IDS_TASK_MANAGER_MEMORY_STATE_THROTTLED_TEXT)),
119 memory_state_suspended_string_(l10n_util::GetStringUTF16(
120 IDS_TASK_MANAGER_MEMORY_STATE_SUSPENDED_TEXT)) {
114 } 121 }
115 122
116 ~TaskManagerValuesStringifier() {} 123 ~TaskManagerValuesStringifier() {}
117 124
118 base::string16 GetCpuUsageText(double cpu_usage) { 125 base::string16 GetCpuUsageText(double cpu_usage) {
119 return base::UTF8ToUTF16(base::StringPrintf(kCpuTextFormatString, 126 return base::UTF8ToUTF16(base::StringPrintf(kCpuTextFormatString,
120 cpu_usage)); 127 cpu_usage));
121 } 128 }
122 129
123 base::string16 GetMemoryUsageText(int64_t memory_usage, bool has_duplicates) { 130 base::string16 GetMemoryUsageText(int64_t memory_usage, bool has_duplicates) {
(...skipping 12 matching lines...) Expand all
136 memory_text = l10n_util::GetStringFUTF16(IDS_TASK_MANAGER_MEM_CELL_TEXT, 143 memory_text = l10n_util::GetStringFUTF16(IDS_TASK_MANAGER_MEM_CELL_TEXT,
137 memory_text); 144 memory_text);
138 #endif // defined(OS_MACOSX) 145 #endif // defined(OS_MACOSX)
139 146
140 if (has_duplicates) 147 if (has_duplicates)
141 memory_text += asterisk_string_; 148 memory_text += asterisk_string_;
142 149
143 return memory_text; 150 return memory_text;
144 } 151 }
145 152
153 base::string16 GetMemoryStateText(base::MemoryState state) {
154 switch (state) {
155 case base::MemoryState::NORMAL:
156 return memory_state_normal_string_;
157 case base::MemoryState::THROTTLED:
158 return memory_state_throttled_string_;
159 case base::MemoryState::SUSPENDED:
160 return memory_state_suspended_string_;
161 case base::MemoryState::UNKNOWN:
162 return n_a_string_;
163 }
164 NOTREACHED();
165 return n_a_string_;
166 }
167
146 base::string16 GetIdleWakeupsText(int idle_wakeups) { 168 base::string16 GetIdleWakeupsText(int idle_wakeups) {
147 if (idle_wakeups == -1) 169 if (idle_wakeups == -1)
148 return n_a_string_; 170 return n_a_string_;
149 171
150 return base::FormatNumber(idle_wakeups); 172 return base::FormatNumber(idle_wakeups);
151 } 173 }
152 174
153 base::string16 GetNaClPortText(int nacl_port) { 175 base::string16 GetNaClPortText(int nacl_port) {
154 if (nacl_port == nacl::kGdbDebugStubPortUnused || nacl_port == -2) 176 if (nacl_port == nacl::kGdbDebugStubPortUnused || nacl_port == -2)
155 return n_a_string_; 177 return n_a_string_;
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 // GPU memory. 247 // GPU memory.
226 const base::string16 asterisk_string_; 248 const base::string16 asterisk_string_;
227 249
228 // The string "Unknown". 250 // The string "Unknown".
229 const base::string16 unknown_string_; 251 const base::string16 unknown_string_;
230 252
231 // The string to show on the NaCl debug port column cells when the flag 253 // The string to show on the NaCl debug port column cells when the flag
232 // #enable-nacl-debug is disabled. 254 // #enable-nacl-debug is disabled.
233 const base::string16 disabled_nacl_debugging_string_; 255 const base::string16 disabled_nacl_debugging_string_;
234 256
257 // Localized strings for memory states.
258 const base::string16 memory_state_normal_string_;
259 const base::string16 memory_state_throttled_string_;
260 const base::string16 memory_state_suspended_string_;
261
235 DISALLOW_COPY_AND_ASSIGN(TaskManagerValuesStringifier); 262 DISALLOW_COPY_AND_ASSIGN(TaskManagerValuesStringifier);
236 }; 263 };
237 264
238 //////////////////////////////////////////////////////////////////////////////// 265 ////////////////////////////////////////////////////////////////////////////////
239 // TableSortDescriptor: 266 // TableSortDescriptor:
240 //////////////////////////////////////////////////////////////////////////////// 267 ////////////////////////////////////////////////////////////////////////////////
241 268
242 TableSortDescriptor::TableSortDescriptor() 269 TableSortDescriptor::TableSortDescriptor()
243 : sorted_column_id(-1), 270 : sorted_column_id(-1),
244 is_ascending(false) { 271 is_ascending(false) {
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
391 : stringifier_->foregrounded_string(); 418 : stringifier_->foregrounded_string();
392 419
393 #if defined(OS_LINUX) 420 #if defined(OS_LINUX)
394 case IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN: { 421 case IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN: {
395 const int fd_count = observed_task_manager()->GetOpenFdCount(tasks_[row]); 422 const int fd_count = observed_task_manager()->GetOpenFdCount(tasks_[row]);
396 return fd_count >= 0 ? base::FormatNumber(fd_count) 423 return fd_count >= 0 ? base::FormatNumber(fd_count)
397 : stringifier_->n_a_string(); 424 : stringifier_->n_a_string();
398 } 425 }
399 #endif // defined(OS_LINUX) 426 #endif // defined(OS_LINUX)
400 427
428 case IDS_TASK_MANAGER_MEMORY_STATE_COLUMN: {
429 return stringifier_->GetMemoryStateText(
430 observed_task_manager()->GetMemoryState(tasks_[row]));
431 }
432
401 default: 433 default:
402 NOTREACHED(); 434 NOTREACHED();
403 return base::string16(); 435 return base::string16();
404 } 436 }
405 } 437 }
406 438
407 gfx::ImageSkia TaskManagerTableModel::GetIcon(int row) { 439 gfx::ImageSkia TaskManagerTableModel::GetIcon(int row) {
408 return observed_task_manager()->GetIcon(tasks_[row]); 440 return observed_task_manager()->GetIcon(tasks_[row]);
409 } 441 }
410 442
411 void TaskManagerTableModel::SetObserver( 443 void TaskManagerTableModel::SetObserver(
412 ui::TableModelObserver* observer) { 444 ui::TableModelObserver* observer) {
413 table_model_observer_ = observer; 445 table_model_observer_ = observer;
414 } 446 }
415 447
416 int TaskManagerTableModel::CompareValues(int row1, 448 int TaskManagerTableModel::CompareValues(int row1,
417 int row2, 449 int row2,
418 int column_id) { 450 int column_id) {
419 switch (column_id) { 451 switch (column_id) {
420 case IDS_TASK_MANAGER_TASK_COLUMN: 452 case IDS_TASK_MANAGER_TASK_COLUMN:
421 case IDS_TASK_MANAGER_PROFILE_NAME_COLUMN: 453 case IDS_TASK_MANAGER_PROFILE_NAME_COLUMN:
454 case IDS_TASK_MANAGER_MEMORY_STATE_COLUMN:
422 return ui::TableModel::CompareValues(row1, row2, column_id); 455 return ui::TableModel::CompareValues(row1, row2, column_id);
423 456
424 case IDS_TASK_MANAGER_NET_COLUMN: 457 case IDS_TASK_MANAGER_NET_COLUMN:
425 return ValueCompare( 458 return ValueCompare(
426 observed_task_manager()->GetNetworkUsage(tasks_[row1]), 459 observed_task_manager()->GetNetworkUsage(tasks_[row1]),
427 observed_task_manager()->GetNetworkUsage(tasks_[row2])); 460 observed_task_manager()->GetNetworkUsage(tasks_[row2]));
428 461
429 case IDS_TASK_MANAGER_CPU_COLUMN: 462 case IDS_TASK_MANAGER_CPU_COLUMN:
430 return ValueCompare(observed_task_manager()->GetCpuUsage(tasks_[row1]), 463 return ValueCompare(observed_task_manager()->GetCpuUsage(tasks_[row1]),
431 observed_task_manager()->GetCpuUsage(tasks_[row2])); 464 observed_task_manager()->GetCpuUsage(tasks_[row2]));
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
692 break; 725 break;
693 726
694 case IDS_TASK_MANAGER_NACL_DEBUG_STUB_PORT_COLUMN: 727 case IDS_TASK_MANAGER_NACL_DEBUG_STUB_PORT_COLUMN:
695 type = REFRESH_TYPE_NACL; 728 type = REFRESH_TYPE_NACL;
696 break; 729 break;
697 730
698 case IDS_TASK_MANAGER_PROCESS_PRIORITY_COLUMN: 731 case IDS_TASK_MANAGER_PROCESS_PRIORITY_COLUMN:
699 type = REFRESH_TYPE_PRIORITY; 732 type = REFRESH_TYPE_PRIORITY;
700 break; 733 break;
701 734
735 case IDS_TASK_MANAGER_MEMORY_STATE_COLUMN:
736 type = REFRESH_TYPE_MEMORY_STATE;
737 break;
738
702 #if defined(OS_LINUX) 739 #if defined(OS_LINUX)
703 case IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN: 740 case IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN:
704 type = REFRESH_TYPE_FD_COUNT; 741 type = REFRESH_TYPE_FD_COUNT;
705 break; 742 break;
706 #endif // defined(OS_LINUX) 743 #endif // defined(OS_LINUX)
707 744
708 default: 745 default:
709 NOTREACHED(); 746 NOTREACHED();
710 return; 747 return;
711 } 748 }
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
832 869
833 bool TaskManagerTableModel::IsTaskFirstInGroup(int row_index) const { 870 bool TaskManagerTableModel::IsTaskFirstInGroup(int row_index) const {
834 if (row_index == 0) 871 if (row_index == 0)
835 return true; 872 return true;
836 873
837 return observed_task_manager()->GetProcessId(tasks_[row_index - 1]) != 874 return observed_task_manager()->GetProcessId(tasks_[row_index - 1]) !=
838 observed_task_manager()->GetProcessId(tasks_[row_index]); 875 observed_task_manager()->GetProcessId(tasks_[row_index]);
839 } 876 }
840 877
841 } // namespace task_manager 878 } // 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