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

Side by Side Diff: ash/accelerators/accelerator_controller.cc

Issue 23654011: ash: Clean up window cycling accelerator code (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: cleanup unit test Created 7 years, 3 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 | Annotate | Revision Log
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 "ash/accelerators/accelerator_controller.h" 5 #include "ash/accelerators/accelerator_controller.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 #include <iostream> 9 #include <iostream>
10 #include <string> 10 #include <string>
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 80
81 bool DebugShortcutsEnabled() { 81 bool DebugShortcutsEnabled() {
82 #if defined(NDEBUG) 82 #if defined(NDEBUG)
83 return CommandLine::ForCurrentProcess()->HasSwitch( 83 return CommandLine::ForCurrentProcess()->HasSwitch(
84 switches::kAshDebugShortcuts); 84 switches::kAshDebugShortcuts);
85 #else 85 #else
86 return true; 86 return true;
87 #endif 87 #endif
88 } 88 }
89 89
90 bool HandleCycleWindowMRU(WindowCycleController::Direction direction, 90 void HandleCycleBackwardMRU(const ui::Accelerator& accelerator) {
James Cook 2013/09/04 23:16:46 These are the implementations from the old switch
91 bool is_alt_down) { 91 Shell* shell = Shell::GetInstance();
92 Shell::GetInstance()-> 92
93 window_cycle_controller()->HandleCycleWindow(direction, is_alt_down); 93 if (accelerator.key_code() == ui::VKEY_TAB)
94 // Always report we handled the key, even if the window didn't change. 94 shell->delegate()->RecordUserMetricsAction(UMA_ACCEL_PREVWINDOW_TAB);
95 return true; 95
96 if (CommandLine::ForCurrentProcess()->HasSwitch(
97 switches::kAshEnableOverviewMode)) {
98 shell->window_selector_controller()->HandleCycleWindow(
99 WindowSelector::BACKWARD);
100 return;
101 }
102 shell->window_cycle_controller()->HandleCycleWindow(
103 WindowCycleController::BACKWARD, accelerator.IsAltDown());
96 } 104 }
97 105
98 bool HandleCycleWindowOverviewMRU(WindowSelector::Direction direction) { 106 void HandleCycleForwardMRU(const ui::Accelerator& accelerator) {
99 Shell::GetInstance()-> 107 Shell* shell = Shell::GetInstance();
100 window_selector_controller()->HandleCycleWindow(direction); 108
101 return true; 109 if (accelerator.key_code() == ui::VKEY_TAB)
110 shell->delegate()->RecordUserMetricsAction(UMA_ACCEL_NEXTWINDOW_TAB);
111
112 if (CommandLine::ForCurrentProcess()->HasSwitch(
113 switches::kAshEnableOverviewMode)) {
114 shell->window_selector_controller()->HandleCycleWindow(
115 WindowSelector::FORWARD);
116 return;
117 }
118 shell->window_cycle_controller()->HandleCycleWindow(
119 WindowCycleController::FORWARD, accelerator.IsAltDown());
102 } 120 }
103 121
104 void HandleCycleWindowLinear(CycleDirection direction) { 122 void HandleCycleLinear(const ui::Accelerator& accelerator) {
105 Shell::GetInstance()-> 123 Shell* shell = Shell::GetInstance();
106 window_cycle_controller()->HandleLinearCycleWindow();
James Cook 2013/09/04 23:16:46 Note that this ignores |direction|. Heh. :-)
107 }
108 124
109 void ToggleOverviewMode() { 125 // TODO(jamescook): When overview becomes the default the AcceleratorAction
110 Shell::GetInstance()->window_selector_controller()->ToggleOverview(); 126 // should be renamed from CYCLE_LINEAR to TOGGLE_OVERVIEW.
127 if (CommandLine::ForCurrentProcess()->HasSwitch(
128 switches::kAshEnableOverviewMode)) {
129 shell->delegate()->RecordUserMetricsAction(UMA_ACCEL_OVERVIEW_F5);
130 shell->window_selector_controller()->ToggleOverview();
131 return;
132 }
133 if (accelerator.key_code() == ui::VKEY_MEDIA_LAUNCH_APP1)
134 shell->delegate()->RecordUserMetricsAction(UMA_ACCEL_NEXTWINDOW_F5);
135 shell->window_cycle_controller()->HandleLinearCycleWindow();
111 } 136 }
112 137
113 bool HandleAccessibleFocusCycle(bool reverse) { 138 bool HandleAccessibleFocusCycle(bool reverse) {
114 if (!Shell::GetInstance()->delegate()->IsSpokenFeedbackEnabled()) 139 if (!Shell::GetInstance()->delegate()->IsSpokenFeedbackEnabled())
115 return false; 140 return false;
116 aura::Window* active_window = ash::wm::GetActiveWindow(); 141 aura::Window* active_window = ash::wm::GetActiveWindow();
117 if (!active_window) 142 if (!active_window)
118 return false; 143 return false;
119 views::Widget* widget = 144 views::Widget* widget =
120 views::Widget::GetWidgetForNativeWindow(active_window); 145 views::Widget::GetWidgetForNativeWindow(active_window);
(...skipping 389 matching lines...) Expand 10 before | Expand all | Expand 10 after
510 } 535 }
511 // Type of the previous accelerator. Used by NEXT_IME and DISABLE_CAPS_LOCK. 536 // Type of the previous accelerator. Used by NEXT_IME and DISABLE_CAPS_LOCK.
512 const ui::EventType previous_event_type = 537 const ui::EventType previous_event_type =
513 context_.previous_accelerator().type(); 538 context_.previous_accelerator().type();
514 const ui::KeyboardCode previous_key_code = 539 const ui::KeyboardCode previous_key_code =
515 context_.previous_accelerator().key_code(); 540 context_.previous_accelerator().key_code();
516 541
517 // You *MUST* return true when some action is performed. Otherwise, this 542 // You *MUST* return true when some action is performed. Otherwise, this
518 // function might be called *twice*, via BrowserView::PreHandleKeyboardEvent 543 // function might be called *twice*, via BrowserView::PreHandleKeyboardEvent
519 // and BrowserView::HandleKeyboardEvent, for a single accelerator press. 544 // and BrowserView::HandleKeyboardEvent, for a single accelerator press.
545 //
546 // If your accelerator invokes more than one line of code, please either
547 // implement it in your module's controller code (like TOGGLE_MIRROR_MODE
548 // below) or pull it into a HandleFoo() function above.
520 switch (action) { 549 switch (action) {
521 case ACCESSIBLE_FOCUS_NEXT: 550 case ACCESSIBLE_FOCUS_NEXT:
522 return HandleAccessibleFocusCycle(false); 551 return HandleAccessibleFocusCycle(false);
523 case ACCESSIBLE_FOCUS_PREVIOUS: 552 case ACCESSIBLE_FOCUS_PREVIOUS:
524 return HandleAccessibleFocusCycle(true); 553 return HandleAccessibleFocusCycle(true);
525 case CYCLE_BACKWARD_MRU: 554 case CYCLE_BACKWARD_MRU:
526 if (key_code == ui::VKEY_TAB) 555 HandleCycleBackwardMRU(accelerator);
527 shell->delegate()->RecordUserMetricsAction(UMA_ACCEL_PREVWINDOW_TAB); 556 return true;
528 if (CommandLine::ForCurrentProcess()->HasSwitch(
529 switches::kAshEnableOverviewMode)) {
530 return HandleCycleWindowOverviewMRU(WindowSelector::BACKWARD);
531 }
532 return HandleCycleWindowMRU(WindowCycleController::BACKWARD,
533 accelerator.IsAltDown());
534 case CYCLE_FORWARD_MRU: 557 case CYCLE_FORWARD_MRU:
535 if (key_code == ui::VKEY_TAB) 558 HandleCycleForwardMRU(accelerator);
536 shell->delegate()->RecordUserMetricsAction(UMA_ACCEL_NEXTWINDOW_TAB);
537 if (CommandLine::ForCurrentProcess()->HasSwitch(
538 switches::kAshEnableOverviewMode)) {
539 return HandleCycleWindowOverviewMRU(WindowSelector::FORWARD);
540 }
541 return HandleCycleWindowMRU(WindowCycleController::FORWARD,
542 accelerator.IsAltDown());
543 case CYCLE_BACKWARD_LINEAR:
544 if (CommandLine::ForCurrentProcess()->HasSwitch(
545 switches::kAshEnableOverviewMode)) {
546 shell->delegate()->RecordUserMetricsAction(UMA_ACCEL_OVERVIEW_F5);
547 ToggleOverviewMode();
548 return true;
549 }
550 if (key_code == ui::VKEY_MEDIA_LAUNCH_APP1)
551 shell->delegate()->RecordUserMetricsAction(UMA_ACCEL_PREVWINDOW_F5);
552 HandleCycleWindowLinear(CYCLE_BACKWARD);
553 return true; 559 return true;
554 case CYCLE_FORWARD_LINEAR: 560 case CYCLE_LINEAR:
555 if (CommandLine::ForCurrentProcess()->HasSwitch( 561 HandleCycleLinear(accelerator);
556 switches::kAshEnableOverviewMode)) {
557 shell->delegate()->RecordUserMetricsAction(UMA_ACCEL_OVERVIEW_F5);
558 ToggleOverviewMode();
559 return true;
560 }
561 if (key_code == ui::VKEY_MEDIA_LAUNCH_APP1)
562 shell->delegate()->RecordUserMetricsAction(UMA_ACCEL_NEXTWINDOW_F5);
563 HandleCycleWindowLinear(CYCLE_FORWARD);
564 return true; 562 return true;
565 #if defined(OS_CHROMEOS) 563 #if defined(OS_CHROMEOS)
566 case ADD_REMOVE_DISPLAY: 564 case ADD_REMOVE_DISPLAY:
567 Shell::GetInstance()->display_manager()->AddRemoveDisplay(); 565 Shell::GetInstance()->display_manager()->AddRemoveDisplay();
568 return true; 566 return true;
569 case TOGGLE_MIRROR_MODE: 567 case TOGGLE_MIRROR_MODE:
570 Shell::GetInstance()->display_controller()->ToggleMirrorMode(); 568 Shell::GetInstance()->display_controller()->ToggleMirrorMode();
571 return true; 569 return true;
572 case LOCK_SCREEN: 570 case LOCK_SCREEN:
573 if (key_code == ui::VKEY_L) 571 if (key_code == ui::VKEY_L)
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
711 HandleKeyboardBrightnessDown(accelerator); 709 HandleKeyboardBrightnessDown(accelerator);
712 break; 710 break;
713 case KEYBOARD_BRIGHTNESS_UP: 711 case KEYBOARD_BRIGHTNESS_UP:
714 if (keyboard_brightness_control_delegate_) 712 if (keyboard_brightness_control_delegate_)
715 return keyboard_brightness_control_delegate_-> 713 return keyboard_brightness_control_delegate_->
716 HandleKeyboardBrightnessUp(accelerator); 714 HandleKeyboardBrightnessUp(accelerator);
717 break; 715 break;
718 case VOLUME_MUTE: 716 case VOLUME_MUTE:
719 return shell->system_tray_delegate()->GetVolumeControlDelegate()-> 717 return shell->system_tray_delegate()->GetVolumeControlDelegate()->
720 HandleVolumeMute(accelerator); 718 HandleVolumeMute(accelerator);
721 break;
722 case VOLUME_DOWN: 719 case VOLUME_DOWN:
723 return shell->system_tray_delegate()->GetVolumeControlDelegate()-> 720 return shell->system_tray_delegate()->GetVolumeControlDelegate()->
724 HandleVolumeDown(accelerator); 721 HandleVolumeDown(accelerator);
725 break;
726 case VOLUME_UP: 722 case VOLUME_UP:
727 return shell->system_tray_delegate()->GetVolumeControlDelegate()-> 723 return shell->system_tray_delegate()->GetVolumeControlDelegate()->
728 HandleVolumeUp(accelerator); 724 HandleVolumeUp(accelerator);
729 break;
730 case FOCUS_LAUNCHER: 725 case FOCUS_LAUNCHER:
731 return shell->focus_cycler()->FocusWidget( 726 return shell->focus_cycler()->FocusWidget(
732 Launcher::ForPrimaryDisplay()->shelf_widget()); 727 Launcher::ForPrimaryDisplay()->shelf_widget());
733 break;
734 case FOCUS_NEXT_PANE: 728 case FOCUS_NEXT_PANE:
735 return HandleRotatePaneFocus(Shell::FORWARD); 729 return HandleRotatePaneFocus(Shell::FORWARD);
736 case FOCUS_PREVIOUS_PANE: 730 case FOCUS_PREVIOUS_PANE:
737 return HandleRotatePaneFocus(Shell::BACKWARD); 731 return HandleRotatePaneFocus(Shell::BACKWARD);
738 case SHOW_KEYBOARD_OVERLAY: 732 case SHOW_KEYBOARD_OVERLAY:
739 ash::Shell::GetInstance()->delegate()->ShowKeyboardOverlay(); 733 ash::Shell::GetInstance()->delegate()->ShowKeyboardOverlay();
740 return true; 734 return true;
741 case SHOW_OAK: 735 case SHOW_OAK:
742 if (CommandLine::ForCurrentProcess()->HasSwitch( 736 if (CommandLine::ForCurrentProcess()->HasSwitch(
743 switches::kAshEnableOak)) { 737 switches::kAshEnableOak)) {
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
985 keyboard_brightness_control_delegate) { 979 keyboard_brightness_control_delegate) {
986 keyboard_brightness_control_delegate_ = 980 keyboard_brightness_control_delegate_ =
987 keyboard_brightness_control_delegate.Pass(); 981 keyboard_brightness_control_delegate.Pass();
988 } 982 }
989 983
990 bool AcceleratorController::CanHandleAccelerators() const { 984 bool AcceleratorController::CanHandleAccelerators() const {
991 return true; 985 return true;
992 } 986 }
993 987
994 } // namespace ash 988 } // namespace ash
OLDNEW
« no previous file with comments | « no previous file | ash/accelerators/accelerator_controller_unittest.cc » ('j') | ash/accelerators/accelerator_table.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698