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

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

Issue 1722493002: Project Eraser: Kill chrome://memory. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix chrome_browser_ui.gypi. Created 4 years, 9 months 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
« no previous file with comments | « chrome/browser/ui/views/new_task_manager_view.cc ('k') | chrome/browser/ui/webui/about_ui.cc » ('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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <stddef.h> 7 #include <stddef.h>
8 8
9 #include "base/compiler_specific.h" 9 #include "base/compiler_specific.h"
10 #include "base/macros.h" 10 #include "base/macros.h"
(...skipping 16 matching lines...) Expand all
27 #include "ui/base/accelerators/accelerator.h" 27 #include "ui/base/accelerators/accelerator.h"
28 #include "ui/base/l10n/l10n_util.h" 28 #include "ui/base/l10n/l10n_util.h"
29 #include "ui/base/models/simple_menu_model.h" 29 #include "ui/base/models/simple_menu_model.h"
30 #include "ui/base/models/table_model.h" 30 #include "ui/base/models/table_model.h"
31 #include "ui/base/models/table_model_observer.h" 31 #include "ui/base/models/table_model_observer.h"
32 #include "ui/events/event_constants.h" 32 #include "ui/events/event_constants.h"
33 #include "ui/events/keycodes/keyboard_codes.h" 33 #include "ui/events/keycodes/keyboard_codes.h"
34 #include "ui/gfx/canvas.h" 34 #include "ui/gfx/canvas.h"
35 #include "ui/views/context_menu_controller.h" 35 #include "ui/views/context_menu_controller.h"
36 #include "ui/views/controls/button/label_button.h" 36 #include "ui/views/controls/button/label_button.h"
37 #include "ui/views/controls/link.h"
38 #include "ui/views/controls/link_listener.h"
39 #include "ui/views/controls/menu/menu_runner.h" 37 #include "ui/views/controls/menu/menu_runner.h"
40 #include "ui/views/controls/table/table_grouper.h" 38 #include "ui/views/controls/table/table_grouper.h"
41 #include "ui/views/controls/table/table_view.h" 39 #include "ui/views/controls/table/table_view.h"
42 #include "ui/views/controls/table/table_view_observer.h" 40 #include "ui/views/controls/table/table_view_observer.h"
43 #include "ui/views/layout/layout_constants.h" 41 #include "ui/views/layout/layout_constants.h"
44 #include "ui/views/widget/widget.h" 42 #include "ui/views/widget/widget.h"
45 #include "ui/views/window/dialog_delegate.h" 43 #include "ui/views/window/dialog_delegate.h"
46 44
47 #if defined(USE_ASH) 45 #if defined(USE_ASH)
48 #include "ash/shelf/shelf_util.h" 46 #include "ash/shelf/shelf_util.h"
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 141
144 void TaskManagerTableModel::OnItemsRemoved(int start, int length) { 142 void TaskManagerTableModel::OnItemsRemoved(int start, int length) {
145 if (observer_) 143 if (observer_)
146 observer_->OnItemsRemoved(start, length); 144 observer_->OnItemsRemoved(start, length);
147 } 145 }
148 146
149 // The Task Manager UI container. 147 // The Task Manager UI container.
150 class TaskManagerView : public views::ButtonListener, 148 class TaskManagerView : public views::ButtonListener,
151 public views::DialogDelegateView, 149 public views::DialogDelegateView,
152 public views::TableViewObserver, 150 public views::TableViewObserver,
153 public views::LinkListener,
154 public views::ContextMenuController, 151 public views::ContextMenuController,
155 public ui::SimpleMenuModel::Delegate { 152 public ui::SimpleMenuModel::Delegate {
156 public: 153 public:
157 TaskManagerView(); 154 TaskManagerView();
158 ~TaskManagerView() override; 155 ~TaskManagerView() override;
159 156
160 // Shows the Task Manager window, or re-activates an existing one. 157 // Shows the Task Manager window, or re-activates an existing one.
161 static void Show(Browser* browser); 158 static void Show(Browser* browser);
162 159
163 // Hides the Task Manager if it is showing. 160 // Hides the Task Manager if it is showing.
(...skipping 18 matching lines...) Expand all
182 std::string GetWindowName() const override; 179 std::string GetWindowName() const override;
183 int GetDialogButtons() const override; 180 int GetDialogButtons() const override;
184 void WindowClosing() override; 181 void WindowClosing() override;
185 bool UseNewStyleForThisDialog() const override; 182 bool UseNewStyleForThisDialog() const override;
186 183
187 // views::TableViewObserver: 184 // views::TableViewObserver:
188 void OnSelectionChanged() override; 185 void OnSelectionChanged() override;
189 void OnDoubleClick() override; 186 void OnDoubleClick() override;
190 void OnKeyDown(ui::KeyboardCode keycode) override; 187 void OnKeyDown(ui::KeyboardCode keycode) override;
191 188
192 // views::LinkListener:
193 void LinkClicked(views::Link* source, int event_flags) override;
194
195 // views::ContextMenuController: 189 // views::ContextMenuController:
196 void ShowContextMenuForView(views::View* source, 190 void ShowContextMenuForView(views::View* source,
197 const gfx::Point& point, 191 const gfx::Point& point,
198 ui::MenuSourceType source_type) override; 192 ui::MenuSourceType source_type) override;
199 193
200 // ui::SimpleMenuModel::Delegate: 194 // ui::SimpleMenuModel::Delegate:
201 bool IsCommandIdChecked(int id) const override; 195 bool IsCommandIdChecked(int id) const override;
202 bool IsCommandIdEnabled(int id) const override; 196 bool IsCommandIdEnabled(int id) const override;
203 bool GetAcceleratorForCommandId(int command_id, 197 bool GetAcceleratorForCommandId(int command_id,
204 ui::Accelerator* accelerator) override; 198 ui::Accelerator* accelerator) override;
205 void ExecuteCommand(int id, int event_flags) override; 199 void ExecuteCommand(int id, int event_flags) override;
206 200
207 private: 201 private:
208 // Creates the child controls. 202 // Creates the child controls.
209 void Init(); 203 void Init();
210 204
211 // Initializes the state of the always-on-top setting as the window is shown. 205 // Initializes the state of the always-on-top setting as the window is shown.
212 void InitAlwaysOnTopState(); 206 void InitAlwaysOnTopState();
213 207
214 // Activates the tab associated with the focused row. 208 // Activates the tab associated with the focused row.
215 void ActivateFocusedTab(); 209 void ActivateFocusedTab();
216 210
217 // Restores saved always on top state from a previous session. 211 // Restores saved always on top state from a previous session.
218 bool GetSavedAlwaysOnTopState(bool* always_on_top) const; 212 bool GetSavedAlwaysOnTopState(bool* always_on_top) const;
219 213
220 views::LabelButton* kill_button_; 214 views::LabelButton* kill_button_;
221 views::Link* about_memory_link_;
222 views::TableView* tab_table_; 215 views::TableView* tab_table_;
223 views::View* tab_table_parent_; 216 views::View* tab_table_parent_;
224 217
225 TaskManager* task_manager_; 218 TaskManager* task_manager_;
226 219
227 TaskManagerModel* model_; 220 TaskManagerModel* model_;
228 221
229 // all possible columns, not necessarily visible 222 // all possible columns, not necessarily visible
230 std::vector<ui::TableColumn> columns_; 223 std::vector<ui::TableColumn> columns_;
231 224
(...skipping 12 matching lines...) Expand all
244 scoped_ptr<views::MenuRunner> menu_runner_; 237 scoped_ptr<views::MenuRunner> menu_runner_;
245 238
246 DISALLOW_COPY_AND_ASSIGN(TaskManagerView); 239 DISALLOW_COPY_AND_ASSIGN(TaskManagerView);
247 }; 240 };
248 241
249 // static 242 // static
250 TaskManagerView* TaskManagerView::instance_ = NULL; 243 TaskManagerView* TaskManagerView::instance_ = NULL;
251 244
252 TaskManagerView::TaskManagerView() 245 TaskManagerView::TaskManagerView()
253 : kill_button_(NULL), 246 : kill_button_(NULL),
254 about_memory_link_(NULL),
255 tab_table_(NULL), 247 tab_table_(NULL),
256 tab_table_parent_(NULL), 248 tab_table_parent_(NULL),
257 task_manager_(TaskManager::GetInstance()), 249 task_manager_(TaskManager::GetInstance()),
258 model_(TaskManager::GetInstance()->model()), 250 model_(TaskManager::GetInstance()->model()),
259 is_always_on_top_(false) { 251 is_always_on_top_(false) {
260 Init(); 252 Init();
261 } 253 }
262 254
263 TaskManagerView::~TaskManagerView() { 255 TaskManagerView::~TaskManagerView() {
264 // Delete child views now, while our table model still exists. 256 // Delete child views now, while our table model still exists.
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
372 tab_table_->SetColumnVisibility(IDS_TASK_MANAGER_GDI_HANDLES_COLUMN, false); 364 tab_table_->SetColumnVisibility(IDS_TASK_MANAGER_GDI_HANDLES_COLUMN, false);
373 tab_table_->SetColumnVisibility(IDS_TASK_MANAGER_USER_HANDLES_COLUMN, false); 365 tab_table_->SetColumnVisibility(IDS_TASK_MANAGER_USER_HANDLES_COLUMN, false);
374 tab_table_->SetColumnVisibility(IDS_TASK_MANAGER_IDLE_WAKEUPS_COLUMN, false); 366 tab_table_->SetColumnVisibility(IDS_TASK_MANAGER_IDLE_WAKEUPS_COLUMN, false);
375 367
376 tab_table_->SetObserver(this); 368 tab_table_->SetObserver(this);
377 tab_table_->set_context_menu_controller(this); 369 tab_table_->set_context_menu_controller(this);
378 set_context_menu_controller(this); 370 set_context_menu_controller(this);
379 kill_button_ = new views::LabelButton(this, 371 kill_button_ = new views::LabelButton(this,
380 l10n_util::GetStringUTF16(IDS_TASK_MANAGER_KILL)); 372 l10n_util::GetStringUTF16(IDS_TASK_MANAGER_KILL));
381 kill_button_->SetStyle(views::Button::STYLE_BUTTON); 373 kill_button_->SetStyle(views::Button::STYLE_BUTTON);
382 about_memory_link_ = new views::Link(
383 l10n_util::GetStringUTF16(IDS_TASK_MANAGER_ABOUT_MEMORY_LINK));
384 about_memory_link_->set_listener(this);
385 374
386 // Makes sure our state is consistent. 375 // Makes sure our state is consistent.
387 OnSelectionChanged(); 376 OnSelectionChanged();
388 377
389 ui::Accelerator ctrl_w(ui::VKEY_W, ui::EF_CONTROL_DOWN); 378 ui::Accelerator ctrl_w(ui::VKEY_W, ui::EF_CONTROL_DOWN);
390 AddAccelerator(ctrl_w); 379 AddAccelerator(ctrl_w);
391 } 380 }
392 381
393 void TaskManagerView::ViewHierarchyChanged( 382 void TaskManagerView::ViewHierarchyChanged(
394 const ViewHierarchyChangedDetails& details) { 383 const ViewHierarchyChangedDetails& details) {
395 views::DialogDelegateView::ViewHierarchyChanged(details); 384 views::DialogDelegateView::ViewHierarchyChanged(details);
396 // Since we want the Kill button and the Memory Details link to show up in 385 // Since we want the Kill button to show up in the same visual row as the
397 // the same visual row as the close button, which is provided by the 386 // close button, which is provided by the framework, we must add it to the
398 // framework, we must add the buttons to the non-client view, which is the 387 // non-client view, which is the parent of this view. Similarly, when we're
399 // parent of this view. Similarly, when we're removed from the view 388 // removed from the view hierarchy, we must take care to clean up that item.
400 // hierarchy, we must take care to clean up those items as well.
401 if (details.child == this) { 389 if (details.child == this) {
402 if (details.is_add) { 390 if (details.is_add) {
403 details.parent->AddChildView(about_memory_link_);
404 details.parent->AddChildView(kill_button_); 391 details.parent->AddChildView(kill_button_);
405 tab_table_parent_ = tab_table_->CreateParentIfNecessary(); 392 tab_table_parent_ = tab_table_->CreateParentIfNecessary();
406 AddChildView(tab_table_parent_); 393 AddChildView(tab_table_parent_);
407 } else { 394 } else {
408 details.parent->RemoveChildView(kill_button_); 395 details.parent->RemoveChildView(kill_button_);
409 details.parent->RemoveChildView(about_memory_link_);
410 } 396 }
411 } 397 }
412 } 398 }
413 399
414 void TaskManagerView::Layout() { 400 void TaskManagerView::Layout() {
415 gfx::Size size = kill_button_->GetPreferredSize(); 401 gfx::Size size = kill_button_->GetPreferredSize();
416 gfx::Rect parent_bounds = parent()->GetContentsBounds(); 402 gfx::Rect parent_bounds = parent()->GetContentsBounds();
417 const int horizontal_margin = views::kPanelHorizMargin; 403 const int horizontal_margin = views::kPanelHorizMargin;
418 const int vertical_margin = views::kButtonVEdgeMargin; 404 const int vertical_margin = views::kButtonVEdgeMargin;
419 int x = width() - size.width() - horizontal_margin; 405 int x = width() - size.width() - horizontal_margin;
420 int y_buttons = parent_bounds.bottom() - size.height() - vertical_margin; 406 int y_buttons = parent_bounds.bottom() - size.height() - vertical_margin;
421 kill_button_->SetBounds(x, y_buttons, size.width(), size.height()); 407 kill_button_->SetBounds(x, y_buttons, size.width(), size.height());
422 408
423 size = about_memory_link_->GetPreferredSize();
424 about_memory_link_->SetBounds(
425 horizontal_margin,
426 y_buttons + (kill_button_->height() - size.height()) / 2,
427 size.width(), size.height());
428
429 gfx::Rect rect = GetLocalBounds(); 409 gfx::Rect rect = GetLocalBounds();
430 rect.Inset(horizontal_margin, views::kPanelVertMargin); 410 rect.Inset(horizontal_margin, views::kPanelVertMargin);
431 rect.Inset(0, 0, 0, 411 rect.Inset(0, 0, 0,
432 kill_button_->height() + views::kUnrelatedControlVerticalSpacing); 412 kill_button_->height() + views::kUnrelatedControlVerticalSpacing);
433 tab_table_parent_->SetBoundsRect(rect); 413 tab_table_parent_->SetBoundsRect(rect);
434 } 414 }
435 415
436 gfx::Size TaskManagerView::GetPreferredSize() const { 416 gfx::Size TaskManagerView::GetPreferredSize() const {
437 return gfx::Size(460, 270); 417 return gfx::Size(460, 270);
438 } 418 }
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
563 543
564 void TaskManagerView::OnDoubleClick() { 544 void TaskManagerView::OnDoubleClick() {
565 ActivateFocusedTab(); 545 ActivateFocusedTab();
566 } 546 }
567 547
568 void TaskManagerView::OnKeyDown(ui::KeyboardCode keycode) { 548 void TaskManagerView::OnKeyDown(ui::KeyboardCode keycode) {
569 if (keycode == ui::VKEY_RETURN) 549 if (keycode == ui::VKEY_RETURN)
570 ActivateFocusedTab(); 550 ActivateFocusedTab();
571 } 551 }
572 552
573 void TaskManagerView::LinkClicked(views::Link* source, int event_flags) {
574 DCHECK_EQ(about_memory_link_, source);
575 task_manager_->OpenAboutMemory();
576 }
577
578 void TaskManagerView::ShowContextMenuForView(views::View* source, 553 void TaskManagerView::ShowContextMenuForView(views::View* source,
579 const gfx::Point& point, 554 const gfx::Point& point,
580 ui::MenuSourceType source_type) { 555 ui::MenuSourceType source_type) {
581 ui::SimpleMenuModel menu_model(this); 556 ui::SimpleMenuModel menu_model(this);
582 for (std::vector<ui::TableColumn>::iterator i(columns_.begin()); 557 for (std::vector<ui::TableColumn>::iterator i(columns_.begin());
583 i != columns_.end(); ++i) { 558 i != columns_.end(); ++i) {
584 menu_model.AddCheckItem(i->id, l10n_util::GetStringUTF16(i->id)); 559 menu_model.AddCheckItem(i->id, l10n_util::GetStringUTF16(i->id));
585 } 560 }
586 menu_runner_.reset( 561 menu_runner_.reset(
587 new views::MenuRunner(&menu_model, views::MenuRunner::CONTEXT_MENU)); 562 new views::MenuRunner(&menu_model, views::MenuRunner::CONTEXT_MENU));
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
651 void HideTaskManager() { 626 void HideTaskManager() {
652 if (switches::NewTaskManagerEnabled()) { 627 if (switches::NewTaskManagerEnabled()) {
653 task_management::NewTaskManagerView::Hide(); 628 task_management::NewTaskManagerView::Hide();
654 return; 629 return;
655 } 630 }
656 631
657 TaskManagerView::Hide(); 632 TaskManagerView::Hide();
658 } 633 }
659 634
660 } // namespace chrome 635 } // namespace chrome
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/new_task_manager_view.cc ('k') | chrome/browser/ui/webui/about_ui.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698