| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/task_manager/task_manager.h" | 5 #include "chrome/browser/task_manager/task_manager.h" |
| 6 | 6 |
| 7 #include "app/l10n_util.h" | 7 #include "app/l10n_util.h" |
| 8 #include "app/table_model_observer.h" | 8 #include "app/table_model_observer.h" |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/metrics/stats_table.h" | 10 #include "base/metrics/stats_table.h" |
| (...skipping 19 matching lines...) Expand all Loading... |
| 30 #include "views/controls/table/table_view_observer.h" | 30 #include "views/controls/table/table_view_observer.h" |
| 31 #include "views/standard_layout.h" | 31 #include "views/standard_layout.h" |
| 32 #include "views/widget/widget.h" | 32 #include "views/widget/widget.h" |
| 33 #include "views/window/dialog_delegate.h" | 33 #include "views/window/dialog_delegate.h" |
| 34 #include "views/window/window.h" | 34 #include "views/window/window.h" |
| 35 | 35 |
| 36 // The task manager window default size. | 36 // The task manager window default size. |
| 37 static const int kDefaultWidth = 460; | 37 static const int kDefaultWidth = 460; |
| 38 static const int kDefaultHeight = 270; | 38 static const int kDefaultHeight = 270; |
| 39 | 39 |
| 40 // The group IDs used to separate background pages from foreground tabs. | |
| 41 static const int kBackgroundGroupId = 0; | |
| 42 static const int kForegroundGroupId = 1; | |
| 43 | |
| 44 namespace { | 40 namespace { |
| 45 | 41 |
| 46 //////////////////////////////////////////////////////////////////////////////// | 42 //////////////////////////////////////////////////////////////////////////////// |
| 47 // TaskManagerTableModel class | 43 // TaskManagerTableModel class |
| 48 //////////////////////////////////////////////////////////////////////////////// | 44 //////////////////////////////////////////////////////////////////////////////// |
| 49 | 45 |
| 50 class TaskManagerTableModel : public views::GroupTableModel, | 46 class TaskManagerTableModel : public views::GroupTableModel, |
| 51 public TaskManagerModelObserver { | 47 public TaskManagerModelObserver { |
| 52 public: | 48 public: |
| 53 explicit TaskManagerTableModel(TaskManagerModel* model) | 49 explicit TaskManagerTableModel(TaskManagerModel* model) |
| 54 : model_(model), | 50 : model_(model), |
| 55 observer_(NULL) { | 51 observer_(NULL) { |
| 56 model_->AddObserver(this); | 52 model_->AddObserver(this); |
| 57 } | 53 } |
| 58 | 54 |
| 59 ~TaskManagerTableModel() { | 55 ~TaskManagerTableModel() { |
| 60 model_->RemoveObserver(this); | 56 model_->RemoveObserver(this); |
| 61 } | 57 } |
| 62 | 58 |
| 63 // GroupTableModel. | 59 // GroupTableModel. |
| 64 int RowCount(); | 60 int RowCount(); |
| 65 std::wstring GetText(int row, int column); | 61 std::wstring GetText(int row, int column); |
| 66 SkBitmap GetIcon(int row); | 62 SkBitmap GetIcon(int row); |
| 67 bool ShouldIndent(int row); | |
| 68 void GetGroupRangeForItem(int item, views::GroupRange* range); | 63 void GetGroupRangeForItem(int item, views::GroupRange* range); |
| 69 void SetObserver(TableModelObserver* observer); | 64 void SetObserver(TableModelObserver* observer); |
| 70 virtual int CompareValues(int row1, int row2, int column_id); | 65 virtual int CompareValues(int row1, int row2, int column_id); |
| 71 virtual Groups GetGroups(); | |
| 72 virtual bool HasGroups(); | |
| 73 virtual int GetGroupID(int row); | |
| 74 | 66 |
| 75 // TaskManagerModelObserver. | 67 // TaskManagerModelObserver. |
| 76 virtual void OnModelChanged(); | 68 virtual void OnModelChanged(); |
| 77 virtual void OnItemsChanged(int start, int length); | 69 virtual void OnItemsChanged(int start, int length); |
| 78 virtual void OnItemsAdded(int start, int length); | 70 virtual void OnItemsAdded(int start, int length); |
| 79 virtual void OnItemsRemoved(int start, int length); | 71 virtual void OnItemsRemoved(int start, int length); |
| 80 | 72 |
| 81 private: | 73 private: |
| 82 TaskManagerModel* model_; | 74 TaskManagerModel* model_; |
| 83 TableModelObserver* observer_; | 75 TableModelObserver* observer_; |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 151 default: | 143 default: |
| 152 NOTREACHED(); | 144 NOTREACHED(); |
| 153 return std::wstring(); | 145 return std::wstring(); |
| 154 } | 146 } |
| 155 } | 147 } |
| 156 | 148 |
| 157 SkBitmap TaskManagerTableModel::GetIcon(int row) { | 149 SkBitmap TaskManagerTableModel::GetIcon(int row) { |
| 158 return model_->GetResourceIcon(row); | 150 return model_->GetResourceIcon(row); |
| 159 } | 151 } |
| 160 | 152 |
| 161 bool TaskManagerTableModel::ShouldIndent(int row) { | |
| 162 return !model_->IsResourceFirstInGroup(row); | |
| 163 } | |
| 164 | 153 |
| 165 void TaskManagerTableModel::GetGroupRangeForItem(int item, | 154 void TaskManagerTableModel::GetGroupRangeForItem(int item, |
| 166 views::GroupRange* range) { | 155 views::GroupRange* range) { |
| 167 std::pair<int, int> range_pair = model_->GetGroupRangeForResource(item); | 156 std::pair<int, int> range_pair = model_->GetGroupRangeForResource(item); |
| 168 range->start = range_pair.first; | 157 range->start = range_pair.first; |
| 169 range->length = range_pair.second; | 158 range->length = range_pair.second; |
| 170 } | 159 } |
| 171 | 160 |
| 172 void TaskManagerTableModel::SetObserver(TableModelObserver* observer) { | 161 void TaskManagerTableModel::SetObserver(TableModelObserver* observer) { |
| 173 observer_ = observer; | 162 observer_ = observer; |
| 174 } | 163 } |
| 175 | 164 |
| 176 int TaskManagerTableModel::CompareValues(int row1, int row2, int column_id) { | 165 int TaskManagerTableModel::CompareValues(int row1, int row2, int column_id) { |
| 177 return model_->CompareValues(row1, row2, column_id); | 166 return model_->CompareValues(row1, row2, column_id); |
| 178 } | 167 } |
| 179 | 168 |
| 180 bool TaskManagerTableModel::HasGroups() { | |
| 181 return true; | |
| 182 } | |
| 183 | |
| 184 int TaskManagerTableModel::GetGroupID(int row) { | |
| 185 // If there are any background resources in the group range, put the whole | |
| 186 // range in the background group. | |
| 187 std::pair<int, int> range_pair = model_->GetGroupRangeForResource(row); | |
| 188 for (int i = range_pair.first; | |
| 189 i < range_pair.first + range_pair.second; | |
| 190 ++i) { | |
| 191 if (model_->IsBackgroundResource(i)) | |
| 192 return kBackgroundGroupId; | |
| 193 } | |
| 194 return kForegroundGroupId; | |
| 195 } | |
| 196 | |
| 197 TableModel::Groups TaskManagerTableModel::GetGroups() { | |
| 198 Groups groups; | |
| 199 | |
| 200 Group background_group; | |
| 201 background_group.title = | |
| 202 l10n_util::GetString(IDS_TASK_MANAGER_BACKGROUND_SEPARATOR); | |
| 203 background_group.id = kBackgroundGroupId; | |
| 204 groups.push_back(background_group); | |
| 205 | |
| 206 Group foreground_group; | |
| 207 foreground_group.title = | |
| 208 l10n_util::GetString(IDS_TASK_MANAGER_FOREGROUND_SEPARATOR); | |
| 209 foreground_group.id = kForegroundGroupId; | |
| 210 groups.push_back(foreground_group); | |
| 211 | |
| 212 return groups; | |
| 213 } | |
| 214 | |
| 215 void TaskManagerTableModel::OnModelChanged() { | 169 void TaskManagerTableModel::OnModelChanged() { |
| 216 if (observer_) | 170 if (observer_) |
| 217 observer_->OnModelChanged(); | 171 observer_->OnModelChanged(); |
| 218 } | 172 } |
| 219 | 173 |
| 220 void TaskManagerTableModel::OnItemsChanged(int start, int length) { | 174 void TaskManagerTableModel::OnItemsChanged(int start, int length) { |
| 221 if (observer_) | 175 if (observer_) |
| 222 observer_->OnItemsChanged(start, length); | 176 observer_->OnItemsChanged(start, length); |
| 223 } | 177 } |
| 224 | 178 |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 351 | 305 |
| 352 TaskManagerView::~TaskManagerView() { | 306 TaskManagerView::~TaskManagerView() { |
| 353 // Delete child views now, while our table model still exists. | 307 // Delete child views now, while our table model still exists. |
| 354 RemoveAllChildViews(true); | 308 RemoveAllChildViews(true); |
| 355 } | 309 } |
| 356 | 310 |
| 357 void TaskManagerView::Init() { | 311 void TaskManagerView::Init() { |
| 358 table_model_.reset(new TaskManagerTableModel(model_)); | 312 table_model_.reset(new TaskManagerTableModel(model_)); |
| 359 | 313 |
| 360 // Page column has no header label. | 314 // Page column has no header label. |
| 361 columns_.push_back(TableColumn(IDS_TASK_MANAGER_PAGE_COLUMN, L"", | 315 columns_.push_back(TableColumn(IDS_TASK_MANAGER_PAGE_COLUMN, |
| 362 TableColumn::LEFT, -1, 1)); | 316 TableColumn::LEFT, -1, 1)); |
| 363 columns_.back().sortable = true; | 317 columns_.back().sortable = true; |
| 364 columns_.push_back(TableColumn(IDS_TASK_MANAGER_PHYSICAL_MEM_COLUMN, | 318 columns_.push_back(TableColumn(IDS_TASK_MANAGER_PHYSICAL_MEM_COLUMN, |
| 365 TableColumn::RIGHT, -1, 0)); | 319 TableColumn::RIGHT, -1, 0)); |
| 366 columns_.back().sortable = true; | 320 columns_.back().sortable = true; |
| 367 columns_.push_back(TableColumn(IDS_TASK_MANAGER_SHARED_MEM_COLUMN, | 321 columns_.push_back(TableColumn(IDS_TASK_MANAGER_SHARED_MEM_COLUMN, |
| 368 TableColumn::RIGHT, -1, 0)); | 322 TableColumn::RIGHT, -1, 0)); |
| 369 columns_.back().sortable = true; | 323 columns_.back().sortable = true; |
| 370 columns_.push_back(TableColumn(IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN, | 324 columns_.push_back(TableColumn(IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN, |
| 371 TableColumn::RIGHT, -1, 0)); | 325 TableColumn::RIGHT, -1, 0)); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 391 columns_.push_back(TableColumn(IDS_TASK_MANAGER_SQLITE_MEMORY_USED_COLUMN, | 345 columns_.push_back(TableColumn(IDS_TASK_MANAGER_SQLITE_MEMORY_USED_COLUMN, |
| 392 TableColumn::RIGHT, -1, 0)); | 346 TableColumn::RIGHT, -1, 0)); |
| 393 columns_.back().sortable = true; | 347 columns_.back().sortable = true; |
| 394 columns_.push_back( | 348 columns_.push_back( |
| 395 TableColumn(IDS_TASK_MANAGER_JAVASCRIPT_MEMORY_ALLOCATED_COLUMN, | 349 TableColumn(IDS_TASK_MANAGER_JAVASCRIPT_MEMORY_ALLOCATED_COLUMN, |
| 396 TableColumn::RIGHT, -1, 0)); | 350 TableColumn::RIGHT, -1, 0)); |
| 397 columns_.back().sortable = true; | 351 columns_.back().sortable = true; |
| 398 | 352 |
| 399 tab_table_ = new views::GroupTableView(table_model_.get(), columns_, | 353 tab_table_ = new views::GroupTableView(table_model_.get(), columns_, |
| 400 views::ICON_AND_TEXT, false, true, | 354 views::ICON_AND_TEXT, false, true, |
| 401 true, false); | 355 true, true); |
| 402 | 356 |
| 403 // Hide some columns by default | 357 // Hide some columns by default |
| 404 tab_table_->SetColumnVisibility(IDS_TASK_MANAGER_PROCESS_ID_COLUMN, false); | 358 tab_table_->SetColumnVisibility(IDS_TASK_MANAGER_PROCESS_ID_COLUMN, false); |
| 405 tab_table_->SetColumnVisibility(IDS_TASK_MANAGER_SHARED_MEM_COLUMN, false); | 359 tab_table_->SetColumnVisibility(IDS_TASK_MANAGER_SHARED_MEM_COLUMN, false); |
| 406 tab_table_->SetColumnVisibility(IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN, false); | 360 tab_table_->SetColumnVisibility(IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN, false); |
| 407 tab_table_->SetColumnVisibility(IDS_TASK_MANAGER_WEBCORE_IMAGE_CACHE_COLUMN, | 361 tab_table_->SetColumnVisibility(IDS_TASK_MANAGER_WEBCORE_IMAGE_CACHE_COLUMN, |
| 408 false); | 362 false); |
| 409 tab_table_->SetColumnVisibility(IDS_TASK_MANAGER_WEBCORE_SCRIPTS_CACHE_COLUMN, | 363 tab_table_->SetColumnVisibility(IDS_TASK_MANAGER_WEBCORE_SCRIPTS_CACHE_COLUMN, |
| 410 false); | 364 false); |
| 411 tab_table_->SetColumnVisibility(IDS_TASK_MANAGER_WEBCORE_CSS_CACHE_COLUMN, | 365 tab_table_->SetColumnVisibility(IDS_TASK_MANAGER_WEBCORE_CSS_CACHE_COLUMN, |
| (...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 740 } // namespace | 694 } // namespace |
| 741 | 695 |
| 742 namespace browser { | 696 namespace browser { |
| 743 | 697 |
| 744 // Declared in browser_dialogs.h so others don't need to depend on our header. | 698 // Declared in browser_dialogs.h so others don't need to depend on our header. |
| 745 void ShowTaskManager() { | 699 void ShowTaskManager() { |
| 746 TaskManagerView::Show(); | 700 TaskManagerView::Show(); |
| 747 } | 701 } |
| 748 | 702 |
| 749 } // namespace browser | 703 } // namespace browser |
| OLD | NEW |