Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 |
| OLD | NEW |