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 |