Chromium Code Reviews| OLD | NEW |
|---|---|
| 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/macros.h" | 12 #include "base/macros.h" |
| 13 #include "base/process/process_handle.h" | 13 #include "base/process/process_handle.h" |
| 14 #include "base/strings/string_number_conversions.h" | 14 #include "base/strings/string_number_conversions.h" |
| 15 #include "base/strings/stringprintf.h" | 15 #include "base/strings/stringprintf.h" |
| 16 #include "base/strings/utf_string_conversions.h" | 16 #include "base/strings/utf_string_conversions.h" |
| 17 #include "build/build_config.h" | 17 #include "build/build_config.h" |
| 18 #include "chrome/browser/browser_process.h" | 18 #include "chrome/browser/browser_process.h" |
| 19 #include "chrome/browser/task_manager/task_manager_interface.h" | 19 #include "chrome/browser/task_manager/task_manager_interface.h" |
| 20 #include "chrome/browser/ui/task_manager/task_manager_columns.h" | 20 #include "chrome/browser/ui/task_manager/task_manager_columns.h" |
| 21 #include "chrome/common/pref_names.h" | 21 #include "chrome/common/pref_names.h" |
| 22 #include "chrome/grit/generated_resources.h" | 22 #include "chrome/grit/generated_resources.h" |
| 23 #include "components/nacl/browser/nacl_browser.h" | 23 #include "components/nacl/browser/nacl_browser.h" |
| 24 #include "components/nacl/common/nacl_switches.h" | 24 #include "components/nacl/common/nacl_switches.h" |
| 25 #include "components/prefs/scoped_user_pref_update.h" | 25 #include "components/prefs/scoped_user_pref_update.h" |
| 26 #include "content/public/common/content_features.h" | |
| 26 #include "content/public/common/result_codes.h" | 27 #include "content/public/common/result_codes.h" |
| 27 #include "third_party/WebKit/public/web/WebCache.h" | 28 #include "third_party/WebKit/public/web/WebCache.h" |
| 28 #include "ui/base/l10n/l10n_util.h" | 29 #include "ui/base/l10n/l10n_util.h" |
| 29 #include "ui/base/models/table_model_observer.h" | 30 #include "ui/base/models/table_model_observer.h" |
| 30 #include "ui/base/text/bytes_formatting.h" | 31 #include "ui/base/text/bytes_formatting.h" |
| 31 | 32 |
| 32 namespace task_manager { | 33 namespace task_manager { |
| 33 | 34 |
| 34 namespace { | 35 namespace { |
| 35 | 36 |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 55 case IDS_TASK_MANAGER_PROCESS_ID_COLUMN: | 56 case IDS_TASK_MANAGER_PROCESS_ID_COLUMN: |
| 56 case IDS_TASK_MANAGER_JAVASCRIPT_MEMORY_ALLOCATED_COLUMN: | 57 case IDS_TASK_MANAGER_JAVASCRIPT_MEMORY_ALLOCATED_COLUMN: |
| 57 case IDS_TASK_MANAGER_VIDEO_MEMORY_COLUMN: | 58 case IDS_TASK_MANAGER_VIDEO_MEMORY_COLUMN: |
| 58 case IDS_TASK_MANAGER_SQLITE_MEMORY_USED_COLUMN: | 59 case IDS_TASK_MANAGER_SQLITE_MEMORY_USED_COLUMN: |
| 59 case IDS_TASK_MANAGER_WEBCORE_IMAGE_CACHE_COLUMN: | 60 case IDS_TASK_MANAGER_WEBCORE_IMAGE_CACHE_COLUMN: |
| 60 case IDS_TASK_MANAGER_WEBCORE_SCRIPTS_CACHE_COLUMN: | 61 case IDS_TASK_MANAGER_WEBCORE_SCRIPTS_CACHE_COLUMN: |
| 61 case IDS_TASK_MANAGER_WEBCORE_CSS_CACHE_COLUMN: | 62 case IDS_TASK_MANAGER_WEBCORE_CSS_CACHE_COLUMN: |
| 62 case IDS_TASK_MANAGER_NACL_DEBUG_STUB_PORT_COLUMN: | 63 case IDS_TASK_MANAGER_NACL_DEBUG_STUB_PORT_COLUMN: |
| 63 case IDS_TASK_MANAGER_IDLE_WAKEUPS_COLUMN: | 64 case IDS_TASK_MANAGER_IDLE_WAKEUPS_COLUMN: |
| 64 case IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN: | 65 case IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN: |
| 65 case IDS_TASK_MANAGER_PROCESS_PRIORITY_COLUMN: | 66 case IDS_TASK_MANAGER_PROCESS_PRIORITY_COLUMN: |
|
afakhry
2017/01/03 18:53:16
Since the Memory State is a per-process value, ple
bashi
2017/01/05 00:51:49
Done.
| |
| 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 Loading... | |
| 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 (base::FeatureList::IsEnabled(features::kMemoryCoordinator)) { | |
|
afakhry
2017/01/03 18:53:17
I noticed we do this test twice; here and in TaskG
bashi
2017/01/05 00:51:49
Done.
| |
| 149 // TODO(bashi): i18n. | |
| 150 return base::UTF8ToUTF16(base::MemoryStateToString(state)); | |
| 151 } | |
| 152 return n_a_string_; | |
| 153 } | |
| 154 | |
| 146 base::string16 GetIdleWakeupsText(int idle_wakeups) { | 155 base::string16 GetIdleWakeupsText(int idle_wakeups) { |
| 147 if (idle_wakeups == -1) | 156 if (idle_wakeups == -1) |
| 148 return n_a_string_; | 157 return n_a_string_; |
| 149 | 158 |
| 150 return base::FormatNumber(idle_wakeups); | 159 return base::FormatNumber(idle_wakeups); |
| 151 } | 160 } |
| 152 | 161 |
| 153 base::string16 GetNaClPortText(int nacl_port) { | 162 base::string16 GetNaClPortText(int nacl_port) { |
| 154 if (nacl_port == nacl::kGdbDebugStubPortUnused || nacl_port == -2) | 163 if (nacl_port == nacl::kGdbDebugStubPortUnused || nacl_port == -2) |
| 155 return n_a_string_; | 164 return n_a_string_; |
| (...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 391 : stringifier_->foregrounded_string(); | 400 : stringifier_->foregrounded_string(); |
| 392 | 401 |
| 393 #if defined(OS_LINUX) | 402 #if defined(OS_LINUX) |
| 394 case IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN: { | 403 case IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN: { |
| 395 const int fd_count = observed_task_manager()->GetOpenFdCount(tasks_[row]); | 404 const int fd_count = observed_task_manager()->GetOpenFdCount(tasks_[row]); |
| 396 return fd_count >= 0 ? base::FormatNumber(fd_count) | 405 return fd_count >= 0 ? base::FormatNumber(fd_count) |
| 397 : stringifier_->n_a_string(); | 406 : stringifier_->n_a_string(); |
| 398 } | 407 } |
| 399 #endif // defined(OS_LINUX) | 408 #endif // defined(OS_LINUX) |
| 400 | 409 |
| 410 case IDS_TASK_MANAGER_MEMORY_STATE_COLUMN: { | |
| 411 return stringifier_->GetMemoryStateText( | |
| 412 observed_task_manager()->GetMemoryState(tasks_[row])); | |
| 413 } | |
| 414 | |
| 401 default: | 415 default: |
| 402 NOTREACHED(); | 416 NOTREACHED(); |
| 403 return base::string16(); | 417 return base::string16(); |
| 404 } | 418 } |
| 405 } | 419 } |
| 406 | 420 |
| 407 gfx::ImageSkia TaskManagerTableModel::GetIcon(int row) { | 421 gfx::ImageSkia TaskManagerTableModel::GetIcon(int row) { |
| 408 return observed_task_manager()->GetIcon(tasks_[row]); | 422 return observed_task_manager()->GetIcon(tasks_[row]); |
| 409 } | 423 } |
| 410 | 424 |
| 411 void TaskManagerTableModel::SetObserver( | 425 void TaskManagerTableModel::SetObserver( |
| 412 ui::TableModelObserver* observer) { | 426 ui::TableModelObserver* observer) { |
| 413 table_model_observer_ = observer; | 427 table_model_observer_ = observer; |
| 414 } | 428 } |
| 415 | 429 |
| 416 int TaskManagerTableModel::CompareValues(int row1, | 430 int TaskManagerTableModel::CompareValues(int row1, |
| 417 int row2, | 431 int row2, |
| 418 int column_id) { | 432 int column_id) { |
| 419 switch (column_id) { | 433 switch (column_id) { |
| 420 case IDS_TASK_MANAGER_TASK_COLUMN: | 434 case IDS_TASK_MANAGER_TASK_COLUMN: |
| 421 case IDS_TASK_MANAGER_PROFILE_NAME_COLUMN: | 435 case IDS_TASK_MANAGER_PROFILE_NAME_COLUMN: |
|
afakhry
2017/01/03 18:53:17
Please add IDS_TASK_MANAGER_MEMORY_STATE_COLUMN so
bashi
2017/01/05 00:51:49
Done.
| |
| 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 Loading... | |
| 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 Loading... | |
| 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 |
| OLD | NEW |