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

Side by Side Diff: chrome/browser/ui/views/task_manager_view.cc

Issue 4987001: Implement new task manager mocks on windows. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Updated per review feedback Created 10 years, 1 month 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 | Annotate | Revision Log
« no previous file with comments | « chrome/browser/ui/views/hung_renderer_view.cc ('k') | views/controls/table/group_table_view.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
40 namespace { 44 namespace {
41 45
42 //////////////////////////////////////////////////////////////////////////////// 46 ////////////////////////////////////////////////////////////////////////////////
43 // TaskManagerTableModel class 47 // TaskManagerTableModel class
44 //////////////////////////////////////////////////////////////////////////////// 48 ////////////////////////////////////////////////////////////////////////////////
45 49
46 class TaskManagerTableModel : public views::GroupTableModel, 50 class TaskManagerTableModel : public views::GroupTableModel,
47 public TaskManagerModelObserver { 51 public TaskManagerModelObserver {
48 public: 52 public:
49 explicit TaskManagerTableModel(TaskManagerModel* model) 53 explicit TaskManagerTableModel(TaskManagerModel* model)
50 : model_(model), 54 : model_(model),
51 observer_(NULL) { 55 observer_(NULL) {
52 model_->AddObserver(this); 56 model_->AddObserver(this);
53 } 57 }
54 58
55 ~TaskManagerTableModel() { 59 ~TaskManagerTableModel() {
56 model_->RemoveObserver(this); 60 model_->RemoveObserver(this);
57 } 61 }
58 62
59 // GroupTableModel. 63 // GroupTableModel.
60 int RowCount(); 64 int RowCount();
61 std::wstring GetText(int row, int column); 65 std::wstring GetText(int row, int column);
62 SkBitmap GetIcon(int row); 66 SkBitmap GetIcon(int row);
67 bool ShouldIndent(int row);
63 void GetGroupRangeForItem(int item, views::GroupRange* range); 68 void GetGroupRangeForItem(int item, views::GroupRange* range);
64 void SetObserver(TableModelObserver* observer); 69 void SetObserver(TableModelObserver* observer);
65 virtual int CompareValues(int row1, int row2, int column_id); 70 virtual int CompareValues(int row1, int row2, int column_id);
71 virtual Groups GetGroups();
72 virtual bool HasGroups();
73 virtual int GetGroupID(int row);
66 74
67 // TaskManagerModelObserver. 75 // TaskManagerModelObserver.
68 virtual void OnModelChanged(); 76 virtual void OnModelChanged();
69 virtual void OnItemsChanged(int start, int length); 77 virtual void OnItemsChanged(int start, int length);
70 virtual void OnItemsAdded(int start, int length); 78 virtual void OnItemsAdded(int start, int length);
71 virtual void OnItemsRemoved(int start, int length); 79 virtual void OnItemsRemoved(int start, int length);
72 80
73 private: 81 private:
74 TaskManagerModel* model_; 82 TaskManagerModel* model_;
75 TableModelObserver* observer_; 83 TableModelObserver* observer_;
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 default: 151 default:
144 NOTREACHED(); 152 NOTREACHED();
145 return std::wstring(); 153 return std::wstring();
146 } 154 }
147 } 155 }
148 156
149 SkBitmap TaskManagerTableModel::GetIcon(int row) { 157 SkBitmap TaskManagerTableModel::GetIcon(int row) {
150 return model_->GetResourceIcon(row); 158 return model_->GetResourceIcon(row);
151 } 159 }
152 160
161 bool TaskManagerTableModel::ShouldIndent(int row) {
162 return !model_->IsResourceFirstInGroup(row);
163 }
164
153 void TaskManagerTableModel::GetGroupRangeForItem(int item, 165 void TaskManagerTableModel::GetGroupRangeForItem(int item,
154 views::GroupRange* range) { 166 views::GroupRange* range) {
155 std::pair<int, int> range_pair = model_->GetGroupRangeForResource(item); 167 std::pair<int, int> range_pair = model_->GetGroupRangeForResource(item);
156 range->start = range_pair.first; 168 range->start = range_pair.first;
157 range->length = range_pair.second; 169 range->length = range_pair.second;
158 } 170 }
159 171
160 void TaskManagerTableModel::SetObserver(TableModelObserver* observer) { 172 void TaskManagerTableModel::SetObserver(TableModelObserver* observer) {
161 observer_ = observer; 173 observer_ = observer;
162 } 174 }
163 175
164 int TaskManagerTableModel::CompareValues(int row1, int row2, int column_id) { 176 int TaskManagerTableModel::CompareValues(int row1, int row2, int column_id) {
165 return model_->CompareValues(row1, row2, column_id); 177 return model_->CompareValues(row1, row2, column_id);
166 } 178 }
167 179
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
168 void TaskManagerTableModel::OnModelChanged() { 215 void TaskManagerTableModel::OnModelChanged() {
169 if (observer_) 216 if (observer_)
170 observer_->OnModelChanged(); 217 observer_->OnModelChanged();
171 } 218 }
172 219
173 void TaskManagerTableModel::OnItemsChanged(int start, int length) { 220 void TaskManagerTableModel::OnItemsChanged(int start, int length) {
174 if (observer_) 221 if (observer_)
175 observer_->OnItemsChanged(start, length); 222 observer_->OnItemsChanged(start, length);
176 } 223 }
177 224
178 void TaskManagerTableModel::OnItemsAdded(int start, int length) { 225 void TaskManagerTableModel::OnItemsAdded(int start, int length) {
179 if (observer_) 226 if (observer_)
180 observer_->OnItemsAdded(start, length); 227 observer_->OnItemsAdded(start, length);
228 // There's a bug in the Windows ListView where inserting items with groups
229 // enabled puts them in the wrong position, so we just rebuild the list view
230 // in this case.
231 // (see: http://connect.microsoft.com/VisualStudio/feedback/details/115345/)
232 OnModelChanged();
181 } 233 }
182 234
183 void TaskManagerTableModel::OnItemsRemoved(int start, int length) { 235 void TaskManagerTableModel::OnItemsRemoved(int start, int length) {
184 if (observer_) 236 if (observer_)
185 observer_->OnItemsRemoved(start, length); 237 observer_->OnItemsRemoved(start, length);
186 } 238 }
187 239
188 // The Task manager UI container. 240 // The Task manager UI container.
189 class TaskManagerView : public views::View, 241 class TaskManagerView : public views::View,
190 public views::ButtonListener, 242 public views::ButtonListener,
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
294 } 346 }
295 347
296 TaskManagerView::~TaskManagerView() { 348 TaskManagerView::~TaskManagerView() {
297 // Delete child views now, while our table model still exists. 349 // Delete child views now, while our table model still exists.
298 RemoveAllChildViews(true); 350 RemoveAllChildViews(true);
299 } 351 }
300 352
301 void TaskManagerView::Init() { 353 void TaskManagerView::Init() {
302 table_model_.reset(new TaskManagerTableModel(model_)); 354 table_model_.reset(new TaskManagerTableModel(model_));
303 355
304 columns_.push_back(TableColumn(IDS_TASK_MANAGER_PAGE_COLUMN, 356 // Page column has no header label.
357 columns_.push_back(TableColumn(IDS_TASK_MANAGER_PAGE_COLUMN, L"",
305 TableColumn::LEFT, -1, 1)); 358 TableColumn::LEFT, -1, 1));
306 columns_.back().sortable = true; 359 columns_.back().sortable = true;
307 columns_.push_back(TableColumn(IDS_TASK_MANAGER_PHYSICAL_MEM_COLUMN, 360 columns_.push_back(TableColumn(IDS_TASK_MANAGER_PHYSICAL_MEM_COLUMN,
308 TableColumn::RIGHT, -1, 0)); 361 TableColumn::RIGHT, -1, 0));
309 columns_.back().sortable = true; 362 columns_.back().sortable = true;
310 columns_.push_back(TableColumn(IDS_TASK_MANAGER_SHARED_MEM_COLUMN, 363 columns_.push_back(TableColumn(IDS_TASK_MANAGER_SHARED_MEM_COLUMN,
311 TableColumn::RIGHT, -1, 0)); 364 TableColumn::RIGHT, -1, 0));
312 columns_.back().sortable = true; 365 columns_.back().sortable = true;
313 columns_.push_back(TableColumn(IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN, 366 columns_.push_back(TableColumn(IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN,
314 TableColumn::RIGHT, -1, 0)); 367 TableColumn::RIGHT, -1, 0));
(...skipping 19 matching lines...) Expand all
334 columns_.push_back(TableColumn(IDS_TASK_MANAGER_SQLITE_MEMORY_USED_COLUMN, 387 columns_.push_back(TableColumn(IDS_TASK_MANAGER_SQLITE_MEMORY_USED_COLUMN,
335 TableColumn::RIGHT, -1, 0)); 388 TableColumn::RIGHT, -1, 0));
336 columns_.back().sortable = true; 389 columns_.back().sortable = true;
337 columns_.push_back( 390 columns_.push_back(
338 TableColumn(IDS_TASK_MANAGER_JAVASCRIPT_MEMORY_ALLOCATED_COLUMN, 391 TableColumn(IDS_TASK_MANAGER_JAVASCRIPT_MEMORY_ALLOCATED_COLUMN,
339 TableColumn::RIGHT, -1, 0)); 392 TableColumn::RIGHT, -1, 0));
340 columns_.back().sortable = true; 393 columns_.back().sortable = true;
341 394
342 tab_table_ = new views::GroupTableView(table_model_.get(), columns_, 395 tab_table_ = new views::GroupTableView(table_model_.get(), columns_,
343 views::ICON_AND_TEXT, false, true, 396 views::ICON_AND_TEXT, false, true,
344 true); 397 true, false);
345 398
346 // Hide some columns by default 399 // Hide some columns by default
347 tab_table_->SetColumnVisibility(IDS_TASK_MANAGER_PROCESS_ID_COLUMN, false); 400 tab_table_->SetColumnVisibility(IDS_TASK_MANAGER_PROCESS_ID_COLUMN, false);
348 tab_table_->SetColumnVisibility(IDS_TASK_MANAGER_SHARED_MEM_COLUMN, false); 401 tab_table_->SetColumnVisibility(IDS_TASK_MANAGER_SHARED_MEM_COLUMN, false);
349 tab_table_->SetColumnVisibility(IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN, false); 402 tab_table_->SetColumnVisibility(IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN, false);
350 tab_table_->SetColumnVisibility(IDS_TASK_MANAGER_WEBCORE_IMAGE_CACHE_COLUMN, 403 tab_table_->SetColumnVisibility(IDS_TASK_MANAGER_WEBCORE_IMAGE_CACHE_COLUMN,
351 false); 404 false);
352 tab_table_->SetColumnVisibility(IDS_TASK_MANAGER_WEBCORE_SCRIPTS_CACHE_COLUMN, 405 tab_table_->SetColumnVisibility(IDS_TASK_MANAGER_WEBCORE_SCRIPTS_CACHE_COLUMN,
353 false); 406 false);
354 tab_table_->SetColumnVisibility(IDS_TASK_MANAGER_WEBCORE_CSS_CACHE_COLUMN, 407 tab_table_->SetColumnVisibility(IDS_TASK_MANAGER_WEBCORE_CSS_CACHE_COLUMN,
(...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after
682 } // namespace 735 } // namespace
683 736
684 namespace browser { 737 namespace browser {
685 738
686 // Declared in browser_dialogs.h so others don't need to depend on our header. 739 // Declared in browser_dialogs.h so others don't need to depend on our header.
687 void ShowTaskManager() { 740 void ShowTaskManager() {
688 TaskManagerView::Show(); 741 TaskManagerView::Show();
689 } 742 }
690 743
691 } // namespace browser 744 } // namespace browser
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/hung_renderer_view.cc ('k') | views/controls/table/group_table_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698