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" |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 26 #include "content/public/common/result_codes.h" | 26 #include "content/public/common/result_codes.h" |
| 27 #include "third_party/WebKit/public/web/WebCache.h" | 27 #include "third_party/WebKit/public/web/WebCache.h" |
| 28 #include "ui/base/l10n/l10n_util.h" | 28 #include "ui/base/l10n/l10n_util.h" |
| 29 #include "ui/base/models/table_model_observer.h" | 29 #include "ui/base/models/table_model_observer.h" |
| 30 #include "ui/base/text/bytes_formatting.h" | 30 #include "ui/base/text/bytes_formatting.h" |
| 31 | 31 |
| 32 namespace task_management { | 32 namespace task_management { |
| 33 | 33 |
| 34 namespace { | 34 namespace { |
| 35 | 35 |
| 36 TaskManagerTableModel* g_instance_for_testing = nullptr; | |
| 37 | |
| 36 #if defined(OS_MACOSX) | 38 #if defined(OS_MACOSX) |
| 37 // Match Activity Monitor's default refresh rate. | 39 // Match Activity Monitor's default refresh rate. |
| 38 const int64_t kRefreshTimeMS = 2000; | 40 const int64_t kRefreshTimeMS = 2000; |
| 39 | 41 |
| 40 // Activity Monitor shows %cpu with one decimal digit -- be consistent with | 42 // Activity Monitor shows %cpu with one decimal digit -- be consistent with |
| 41 // that. | 43 // that. |
| 42 const char kCpuTextFormatString[] = "%.1f"; | 44 const char kCpuTextFormatString[] = "%.1f"; |
| 43 #else | 45 #else |
| 44 const int64_t kRefreshTimeMS = 1000; | 46 const int64_t kRefreshTimeMS = 1000; |
| 45 const char kCpuTextFormatString[] = "%.0f"; | 47 const char kCpuTextFormatString[] = "%.0f"; |
| (...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 263 table_view_delegate_(delegate), | 265 table_view_delegate_(delegate), |
| 264 columns_settings_(new base::DictionaryValue), | 266 columns_settings_(new base::DictionaryValue), |
| 265 table_model_observer_(nullptr), | 267 table_model_observer_(nullptr), |
| 266 stringifier_(new TaskManagerValuesStringifier), | 268 stringifier_(new TaskManagerValuesStringifier), |
| 267 #if !defined(DISABLE_NACL) | 269 #if !defined(DISABLE_NACL) |
| 268 is_nacl_debugging_flag_enabled_(base::CommandLine::ForCurrentProcess()-> | 270 is_nacl_debugging_flag_enabled_(base::CommandLine::ForCurrentProcess()-> |
| 269 HasSwitch(switches::kEnableNaClDebug)) { | 271 HasSwitch(switches::kEnableNaClDebug)) { |
| 270 #else | 272 #else |
| 271 is_nacl_debugging_flag_enabled_(false) { | 273 is_nacl_debugging_flag_enabled_(false) { |
| 272 #endif // !defined(DISABLE_NACL) | 274 #endif // !defined(DISABLE_NACL) |
| 275 | |
| 276 if (!g_instance_for_testing) | |
|
afakhry
2016/04/28 00:03:13
That's weird! Can that happen? Can we instantiate
ncarter (slow)
2016/05/02 18:33:28
I've added a comment to g_instance_for_testing des
| |
| 277 g_instance_for_testing = this; | |
| 278 | |
| 273 DCHECK(delegate); | 279 DCHECK(delegate); |
| 274 StartUpdating(); | 280 StartUpdating(); |
| 275 } | 281 } |
| 276 | 282 |
| 277 TaskManagerTableModel::~TaskManagerTableModel() { | 283 TaskManagerTableModel::~TaskManagerTableModel() { |
| 284 if (g_instance_for_testing == this) | |
| 285 g_instance_for_testing = nullptr; | |
| 286 | |
| 278 StopUpdating(); | 287 StopUpdating(); |
| 279 } | 288 } |
| 280 | 289 |
| 281 int TaskManagerTableModel::RowCount() { | 290 int TaskManagerTableModel::RowCount() { |
| 282 return static_cast<int>(tasks_.size()); | 291 return static_cast<int>(tasks_.size()); |
| 283 } | 292 } |
| 284 | 293 |
| 285 base::string16 TaskManagerTableModel::GetText(int row, int column) { | 294 base::string16 TaskManagerTableModel::GetText(int row, int column) { |
| 286 if (IsSharedByGroup(column) && !IsTaskFirstInGroup(row)) | 295 if (IsSharedByGroup(column) && !IsTaskFirstInGroup(row)) |
| 287 return base::string16(); | 296 return base::string16(); |
| (...skipping 509 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 797 } | 806 } |
| 798 } | 807 } |
| 799 | 808 |
| 800 void TaskManagerTableModel::ToggleColumnVisibility(int column_id) { | 809 void TaskManagerTableModel::ToggleColumnVisibility(int column_id) { |
| 801 bool new_visibility = !table_view_delegate_->IsColumnVisible(column_id); | 810 bool new_visibility = !table_view_delegate_->IsColumnVisible(column_id); |
| 802 table_view_delegate_->SetColumnVisibility(column_id, new_visibility); | 811 table_view_delegate_->SetColumnVisibility(column_id, new_visibility); |
| 803 columns_settings_->SetBoolean(GetColumnIdAsString(column_id), new_visibility); | 812 columns_settings_->SetBoolean(GetColumnIdAsString(column_id), new_visibility); |
| 804 UpdateRefreshTypes(column_id, new_visibility); | 813 UpdateRefreshTypes(column_id, new_visibility); |
| 805 } | 814 } |
| 806 | 815 |
| 816 // static | |
| 817 TaskManagerTableModel* TaskManagerTableModel::GetInstanceForTesting() { | |
| 818 return g_instance_for_testing; | |
| 819 } | |
| 820 | |
| 807 void TaskManagerTableModel::StartUpdating() { | 821 void TaskManagerTableModel::StartUpdating() { |
| 808 TaskManagerInterface::GetTaskManager()->AddObserver(this); | 822 TaskManagerInterface::GetTaskManager()->AddObserver(this); |
| 809 tasks_ = observed_task_manager()->GetTaskIdsList(); | 823 tasks_ = observed_task_manager()->GetTaskIdsList(); |
| 810 OnRefresh(); | 824 OnRefresh(); |
| 811 | 825 |
| 812 // In order for the scrollbar of the TableView to work properly on startup of | 826 // In order for the scrollbar of the TableView to work properly on startup of |
| 813 // the task manager, we must invoke TableModelObserver::OnModelChanged() which | 827 // the task manager, we must invoke TableModelObserver::OnModelChanged() which |
| 814 // in turn will invoke TableView::NumRowsChanged(). This will adjust the | 828 // in turn will invoke TableView::NumRowsChanged(). This will adjust the |
| 815 // vertical scrollbar correctly. crbug.com/570966. | 829 // vertical scrollbar correctly. crbug.com/570966. |
| 816 if (table_model_observer_) | 830 if (table_model_observer_) |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 829 bool TaskManagerTableModel::IsTaskFirstInGroup(int row_index) const { | 843 bool TaskManagerTableModel::IsTaskFirstInGroup(int row_index) const { |
| 830 if (row_index == 0) | 844 if (row_index == 0) |
| 831 return true; | 845 return true; |
| 832 | 846 |
| 833 return observed_task_manager()->GetProcessId(tasks_[row_index - 1]) != | 847 return observed_task_manager()->GetProcessId(tasks_[row_index - 1]) != |
| 834 observed_task_manager()->GetProcessId(tasks_[row_index]); | 848 observed_task_manager()->GetProcessId(tasks_[row_index]); |
| 835 } | 849 } |
| 836 | 850 |
| 837 | 851 |
| 838 } // namespace task_management | 852 } // namespace task_management |
| OLD | NEW |