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

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

Issue 2573183002: Add process start time and CPU time columns to task manager (Closed)
Patch Set: Add TODO comment for a bug, which will be addressed in another CL. Created 4 years 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 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"
11 #include "base/i18n/rtl.h" 11 #include "base/i18n/rtl.h"
12 #include "base/i18n/time_formatting.h"
12 #include "base/macros.h" 13 #include "base/macros.h"
13 #include "base/process/process_handle.h" 14 #include "base/process/process_handle.h"
14 #include "base/strings/string_number_conversions.h" 15 #include "base/strings/string_number_conversions.h"
15 #include "base/strings/stringprintf.h" 16 #include "base/strings/stringprintf.h"
16 #include "base/strings/utf_string_conversions.h" 17 #include "base/strings/utf_string_conversions.h"
17 #include "build/build_config.h" 18 #include "build/build_config.h"
18 #include "chrome/browser/browser_process.h" 19 #include "chrome/browser/browser_process.h"
19 #include "chrome/browser/task_manager/task_manager_interface.h" 20 #include "chrome/browser/task_manager/task_manager_interface.h"
20 #include "chrome/browser/ui/task_manager/task_manager_columns.h" 21 #include "chrome/browser/ui/task_manager/task_manager_columns.h"
21 #include "chrome/common/pref_names.h" 22 #include "chrome/common/pref_names.h"
(...skipping 22 matching lines...) Expand all
44 45
45 // The columns that are shared by a group will show the value of the column 46 // The columns that are shared by a group will show the value of the column
46 // only once per group. 47 // only once per group.
47 bool IsSharedByGroup(int column_id) { 48 bool IsSharedByGroup(int column_id) {
48 switch (column_id) { 49 switch (column_id) {
49 case IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN: 50 case IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN:
50 case IDS_TASK_MANAGER_SHARED_MEM_COLUMN: 51 case IDS_TASK_MANAGER_SHARED_MEM_COLUMN:
51 case IDS_TASK_MANAGER_PHYSICAL_MEM_COLUMN: 52 case IDS_TASK_MANAGER_PHYSICAL_MEM_COLUMN:
52 case IDS_TASK_MANAGER_SWAPPED_MEM_COLUMN: 53 case IDS_TASK_MANAGER_SWAPPED_MEM_COLUMN:
53 case IDS_TASK_MANAGER_CPU_COLUMN: 54 case IDS_TASK_MANAGER_CPU_COLUMN:
55 case IDS_TASK_MANAGER_START_TIME_COLUMN:
56 case IDS_TASK_MANAGER_CPU_TIME_COLUMN:
54 case IDS_TASK_MANAGER_NET_COLUMN: 57 case IDS_TASK_MANAGER_NET_COLUMN:
55 case IDS_TASK_MANAGER_PROCESS_ID_COLUMN: 58 case IDS_TASK_MANAGER_PROCESS_ID_COLUMN:
56 case IDS_TASK_MANAGER_JAVASCRIPT_MEMORY_ALLOCATED_COLUMN: 59 case IDS_TASK_MANAGER_JAVASCRIPT_MEMORY_ALLOCATED_COLUMN:
57 case IDS_TASK_MANAGER_VIDEO_MEMORY_COLUMN: 60 case IDS_TASK_MANAGER_VIDEO_MEMORY_COLUMN:
58 case IDS_TASK_MANAGER_SQLITE_MEMORY_USED_COLUMN: 61 case IDS_TASK_MANAGER_SQLITE_MEMORY_USED_COLUMN:
59 case IDS_TASK_MANAGER_WEBCORE_IMAGE_CACHE_COLUMN: 62 case IDS_TASK_MANAGER_WEBCORE_IMAGE_CACHE_COLUMN:
60 case IDS_TASK_MANAGER_WEBCORE_SCRIPTS_CACHE_COLUMN: 63 case IDS_TASK_MANAGER_WEBCORE_SCRIPTS_CACHE_COLUMN:
61 case IDS_TASK_MANAGER_WEBCORE_CSS_CACHE_COLUMN: 64 case IDS_TASK_MANAGER_WEBCORE_CSS_CACHE_COLUMN:
62 case IDS_TASK_MANAGER_NACL_DEBUG_STUB_PORT_COLUMN: 65 case IDS_TASK_MANAGER_NACL_DEBUG_STUB_PORT_COLUMN:
63 case IDS_TASK_MANAGER_IDLE_WAKEUPS_COLUMN: 66 case IDS_TASK_MANAGER_IDLE_WAKEUPS_COLUMN:
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
113 IDS_TASK_MANAGER_DISABLED_NACL_DBG_TEXT)) { 116 IDS_TASK_MANAGER_DISABLED_NACL_DBG_TEXT)) {
114 } 117 }
115 118
116 ~TaskManagerValuesStringifier() {} 119 ~TaskManagerValuesStringifier() {}
117 120
118 base::string16 GetCpuUsageText(double cpu_usage) { 121 base::string16 GetCpuUsageText(double cpu_usage) {
119 return base::UTF8ToUTF16(base::StringPrintf(kCpuTextFormatString, 122 return base::UTF8ToUTF16(base::StringPrintf(kCpuTextFormatString,
120 cpu_usage)); 123 cpu_usage));
121 } 124 }
122 125
126 base::string16 GetStartTimeText(base::Time start_time) {
127 if (start_time.is_null())
128 return n_a_string_;
129
130 return base::TimeFormatShortDateAndTime(start_time);
131 }
132
133 base::string16 GetCpuTimeText(base::TimeDelta cpu_time) {
134 if (cpu_time.is_zero())
135 return n_a_string_;
136
137 return base::TimeDurationFormatWithSeconds(cpu_time,
138 base::DURATION_WIDTH_NARROW);
stanisc 2016/12/21 19:17:52 Why not DURATION_WIDTH_NUMERIC?
chengx 2016/12/21 22:05:54 There is a bug here with DURATION_WIDTH_NUMERIC. I
139 }
140
123 base::string16 GetMemoryUsageText(int64_t memory_usage, bool has_duplicates) { 141 base::string16 GetMemoryUsageText(int64_t memory_usage, bool has_duplicates) {
124 if (memory_usage == -1) 142 if (memory_usage == -1)
125 return n_a_string_; 143 return n_a_string_;
126 144
127 #if defined(OS_MACOSX) 145 #if defined(OS_MACOSX)
128 // System expectation is to show "100 kB", "200 MB", etc. 146 // System expectation is to show "100 kB", "200 MB", etc.
129 // TODO(thakis): [This TODO has been taken as is from the old task manager]: 147 // TODO(thakis): [This TODO has been taken as is from the old task manager]:
130 // Switch to metric units (as opposed to powers of two). 148 // Switch to metric units (as opposed to powers of two).
131 base::string16 memory_text = ui::FormatBytes(memory_usage); 149 base::string16 memory_text = ui::FormatBytes(memory_usage);
132 #else 150 #else
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 return observed_task_manager()->GetProfileName(tasks_[row]); 309 return observed_task_manager()->GetProfileName(tasks_[row]);
292 310
293 case IDS_TASK_MANAGER_NET_COLUMN: 311 case IDS_TASK_MANAGER_NET_COLUMN:
294 return stringifier_->GetNetworkUsageText( 312 return stringifier_->GetNetworkUsageText(
295 observed_task_manager()->GetProcessTotalNetworkUsage(tasks_[row])); 313 observed_task_manager()->GetProcessTotalNetworkUsage(tasks_[row]));
296 314
297 case IDS_TASK_MANAGER_CPU_COLUMN: 315 case IDS_TASK_MANAGER_CPU_COLUMN:
298 return stringifier_->GetCpuUsageText( 316 return stringifier_->GetCpuUsageText(
299 observed_task_manager()->GetCpuUsage(tasks_[row])); 317 observed_task_manager()->GetCpuUsage(tasks_[row]));
300 318
319 case IDS_TASK_MANAGER_CPU_TIME_COLUMN:
320 return stringifier_->GetCpuTimeText(
321 observed_task_manager()->GetCpuTime(tasks_[row]));
322
323 case IDS_TASK_MANAGER_START_TIME_COLUMN:
324 return stringifier_->GetStartTimeText(
325 observed_task_manager()->GetStartTime(tasks_[row]));
326
301 case IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN: 327 case IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN:
302 return stringifier_->GetMemoryUsageText( 328 return stringifier_->GetMemoryUsageText(
303 observed_task_manager()->GetPrivateMemoryUsage(tasks_[row]), false); 329 observed_task_manager()->GetPrivateMemoryUsage(tasks_[row]), false);
304 330
305 case IDS_TASK_MANAGER_SHARED_MEM_COLUMN: 331 case IDS_TASK_MANAGER_SHARED_MEM_COLUMN:
306 return stringifier_->GetMemoryUsageText( 332 return stringifier_->GetMemoryUsageText(
307 observed_task_manager()->GetSharedMemoryUsage(tasks_[row]), false); 333 observed_task_manager()->GetSharedMemoryUsage(tasks_[row]), false);
308 334
309 case IDS_TASK_MANAGER_PHYSICAL_MEM_COLUMN: 335 case IDS_TASK_MANAGER_PHYSICAL_MEM_COLUMN:
310 return stringifier_->GetMemoryUsageText( 336 return stringifier_->GetMemoryUsageText(
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
423 449
424 case IDS_TASK_MANAGER_NET_COLUMN: 450 case IDS_TASK_MANAGER_NET_COLUMN:
425 return ValueCompare( 451 return ValueCompare(
426 observed_task_manager()->GetNetworkUsage(tasks_[row1]), 452 observed_task_manager()->GetNetworkUsage(tasks_[row1]),
427 observed_task_manager()->GetNetworkUsage(tasks_[row2])); 453 observed_task_manager()->GetNetworkUsage(tasks_[row2]));
428 454
429 case IDS_TASK_MANAGER_CPU_COLUMN: 455 case IDS_TASK_MANAGER_CPU_COLUMN:
430 return ValueCompare(observed_task_manager()->GetCpuUsage(tasks_[row1]), 456 return ValueCompare(observed_task_manager()->GetCpuUsage(tasks_[row1]),
431 observed_task_manager()->GetCpuUsage(tasks_[row2])); 457 observed_task_manager()->GetCpuUsage(tasks_[row2]));
432 458
459 case IDS_TASK_MANAGER_CPU_TIME_COLUMN:
460 return ValueCompare(observed_task_manager()->GetCpuTime(tasks_[row1]),
461 observed_task_manager()->GetCpuTime(tasks_[row2]));
462
463 case IDS_TASK_MANAGER_START_TIME_COLUMN:
464 return ValueCompare(observed_task_manager()->GetStartTime(tasks_[row1]),
465 observed_task_manager()->GetStartTime(tasks_[row2]));
466
433 case IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN: 467 case IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN:
434 return ValueCompare( 468 return ValueCompare(
435 observed_task_manager()->GetPrivateMemoryUsage(tasks_[row1]), 469 observed_task_manager()->GetPrivateMemoryUsage(tasks_[row1]),
436 observed_task_manager()->GetPrivateMemoryUsage(tasks_[row2])); 470 observed_task_manager()->GetPrivateMemoryUsage(tasks_[row2]));
437 471
438 case IDS_TASK_MANAGER_SHARED_MEM_COLUMN: 472 case IDS_TASK_MANAGER_SHARED_MEM_COLUMN:
439 return ValueCompare( 473 return ValueCompare(
440 observed_task_manager()->GetSharedMemoryUsage(tasks_[row1]), 474 observed_task_manager()->GetSharedMemoryUsage(tasks_[row1]),
441 observed_task_manager()->GetSharedMemoryUsage(tasks_[row2])); 475 observed_task_manager()->GetSharedMemoryUsage(tasks_[row2]));
442 476
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
625 return; // The data in these columns do not change. 659 return; // The data in these columns do not change.
626 660
627 case IDS_TASK_MANAGER_NET_COLUMN: 661 case IDS_TASK_MANAGER_NET_COLUMN:
628 type = REFRESH_TYPE_NETWORK_USAGE; 662 type = REFRESH_TYPE_NETWORK_USAGE;
629 break; 663 break;
630 664
631 case IDS_TASK_MANAGER_CPU_COLUMN: 665 case IDS_TASK_MANAGER_CPU_COLUMN:
632 type = REFRESH_TYPE_CPU; 666 type = REFRESH_TYPE_CPU;
633 break; 667 break;
634 668
669 case IDS_TASK_MANAGER_START_TIME_COLUMN:
670 type = REFRESH_TYPE_START_TIME;
671 break;
672
673 case IDS_TASK_MANAGER_CPU_TIME_COLUMN:
674 type = REFRESH_TYPE_CPU_TIME;
675 break;
676
635 case IDS_TASK_MANAGER_PHYSICAL_MEM_COLUMN: 677 case IDS_TASK_MANAGER_PHYSICAL_MEM_COLUMN:
636 type = REFRESH_TYPE_PHYSICAL_MEMORY; 678 type = REFRESH_TYPE_PHYSICAL_MEMORY;
637 break; 679 break;
638 680
639 case IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN: 681 case IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN:
640 case IDS_TASK_MANAGER_SHARED_MEM_COLUMN: 682 case IDS_TASK_MANAGER_SHARED_MEM_COLUMN:
641 case IDS_TASK_MANAGER_SWAPPED_MEM_COLUMN: 683 case IDS_TASK_MANAGER_SWAPPED_MEM_COLUMN:
642 type = REFRESH_TYPE_MEMORY_DETAILS; 684 type = REFRESH_TYPE_MEMORY_DETAILS;
643 if (table_view_delegate_->IsColumnVisible( 685 if (table_view_delegate_->IsColumnVisible(
644 IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN) || 686 IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN) ||
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
832 874
833 bool TaskManagerTableModel::IsTaskFirstInGroup(int row_index) const { 875 bool TaskManagerTableModel::IsTaskFirstInGroup(int row_index) const {
834 if (row_index == 0) 876 if (row_index == 0)
835 return true; 877 return true;
836 878
837 return observed_task_manager()->GetProcessId(tasks_[row_index - 1]) != 879 return observed_task_manager()->GetProcessId(tasks_[row_index - 1]) !=
838 observed_task_manager()->GetProcessId(tasks_[row_index]); 880 observed_task_manager()->GetProcessId(tasks_[row_index]);
839 } 881 }
840 882
841 } // namespace task_manager 883 } // namespace task_manager
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698