Index: ash/accelerators/accelerator_controller.cc |
diff --git a/ash/accelerators/accelerator_controller.cc b/ash/accelerators/accelerator_controller.cc |
index 044d4e23c200bb3be239b72c441b3b18d8b24c71..af4fd411d06ccb0b59fbc6c3448792ff6f6ea8a0 100644 |
--- a/ash/accelerators/accelerator_controller.cc |
+++ b/ash/accelerators/accelerator_controller.cc |
@@ -9,7 +9,6 @@ |
#include <string> |
#include "ash/accelerators/accelerator_commands.h" |
-#include "ash/accelerators/accelerator_table.h" |
#include "ash/accelerators/debug_commands.h" |
#include "ash/ash_switches.h" |
#include "ash/debug.h" |
@@ -127,9 +126,21 @@ bool HandleCycleForwardMRU(const ui::Accelerator& accelerator) { |
return true; |
} |
-bool ToggleOverview(const ui::Accelerator& accelerator) { |
- base::RecordAction(base::UserMetricsAction("Accel_Overview_F5")); |
- Shell::GetInstance()->window_selector_controller()->ToggleOverview(); |
+bool HandleRotatePaneFocus(Shell::Direction direction) { |
+ Shell* shell = Shell::GetInstance(); |
+ switch (direction) { |
+ // TODO(stevet): Not sure if this is the same as IDC_FOCUS_NEXT_PANE. |
+ case Shell::FORWARD: { |
+ base::RecordAction(UserMetricsAction("Accel_Focus_Next_Pane")); |
+ shell->focus_cycler()->RotateFocus(FocusCycler::FORWARD); |
+ break; |
+ } |
+ case Shell::BACKWARD: { |
+ base::RecordAction(UserMetricsAction("Accel_Focus_Previous_Pane")); |
+ shell->focus_cycler()->RotateFocus(FocusCycler::BACKWARD); |
+ break; |
+ } |
+ } |
return true; |
} |
@@ -247,17 +258,6 @@ bool HandleOpenFeedbackPage() { |
return true; |
} |
-bool HandlePositionCenter() { |
- base::RecordAction(UserMetricsAction("Accel_Window_Position_Center")); |
- aura::Window* window = wm::GetActiveWindow(); |
- // Docked windows do not support centering and ignore accelerator. |
- if (window && !wm::GetWindowState(window)->IsDocked()) { |
- wm::CenterWindow(window); |
- return true; |
- } |
- return false; |
-} |
- |
bool HandlePreviousIme(ImeControlDelegate* ime_control_delegate, |
const ui::Accelerator& accelerator) { |
base::RecordAction(UserMetricsAction("Accel_Previous_Ime")); |
@@ -272,42 +272,6 @@ bool HandleRestoreTab() { |
return true; |
} |
-bool HandleRotatePaneFocus(Shell::Direction direction) { |
- Shell* shell = Shell::GetInstance(); |
- switch (direction) { |
- // TODO(stevet): Not sure if this is the same as IDC_FOCUS_NEXT_PANE. |
- case Shell::FORWARD: { |
- base::RecordAction(UserMetricsAction("Accel_Focus_Next_Pane")); |
- shell->focus_cycler()->RotateFocus(FocusCycler::FORWARD); |
- break; |
- } |
- case Shell::BACKWARD: { |
- base::RecordAction(UserMetricsAction("Accel_Focus_Previous_Pane")); |
- shell->focus_cycler()->RotateFocus(FocusCycler::BACKWARD); |
- break; |
- } |
- } |
- return true; |
-} |
- |
-// Rotate the active window. |
-bool HandleRotateActiveWindow() { |
- base::RecordAction(UserMetricsAction("Accel_Rotate_Window")); |
- aura::Window* active_window = wm::GetActiveWindow(); |
- if (active_window) { |
- // The rotation animation bases its target transform on the current |
- // rotation and position. Since there could be an animation in progress |
- // right now, queue this animation so when it starts it picks up a neutral |
- // rotation and position. Use replace so we only enqueue one at a time. |
- active_window->layer()->GetAnimator()-> |
- set_preemption_strategy(ui::LayerAnimator::REPLACE_QUEUED_ANIMATIONS); |
- active_window->layer()->GetAnimator()->StartAnimation( |
- new ui::LayerAnimationSequence( |
- new ash::ScreenRotation(360, active_window->layer()))); |
- } |
- return true; |
-} |
- |
gfx::Display::Rotation GetNextRotation(gfx::Display::Rotation current) { |
switch (current) { |
case gfx::Display::ROTATE_0: |
@@ -335,6 +299,24 @@ bool HandleRotateScreen() { |
return true; |
} |
+// Rotate the active window. |
+bool HandleRotateActiveWindow() { |
+ base::RecordAction(UserMetricsAction("Accel_Rotate_Window")); |
+ aura::Window* active_window = wm::GetActiveWindow(); |
+ if (active_window) { |
+ // The rotation animation bases its target transform on the current |
+ // rotation and position. Since there could be an animation in progress |
+ // right now, queue this animation so when it starts it picks up a neutral |
+ // rotation and position. Use replace so we only enqueue one at a time. |
+ active_window->layer()->GetAnimator()-> |
+ set_preemption_strategy(ui::LayerAnimator::REPLACE_QUEUED_ANIMATIONS); |
+ active_window->layer()->GetAnimator()->StartAnimation( |
+ new ui::LayerAnimationSequence( |
+ new ash::ScreenRotation(360, active_window->layer()))); |
+ } |
+ return true; |
+} |
+ |
bool HandleScaleReset() { |
DisplayManager* display_manager = Shell::GetInstance()->display_manager(); |
int64 display_id = display_manager->GetDisplayIdForUIScaling(); |
@@ -370,14 +352,6 @@ bool HandleScaleUI(bool up) { |
return true; |
} |
-#if defined(OS_CHROMEOS) |
-bool HandleSwapPrimaryDisplay() { |
- base::RecordAction(UserMetricsAction("Accel_Swap_Primary_Display")); |
- Shell::GetInstance()->display_controller()->SwapPrimaryDisplay(); |
- return true; |
-} |
-#endif |
- |
bool HandleShowKeyboardOverlay() { |
base::RecordAction(UserMetricsAction("Accel_Show_Keyboard_Overlay")); |
ash::Shell::GetInstance()->new_window_delegate()->ShowKeyboardOverlay(); |
@@ -419,18 +393,6 @@ bool HandleShowTaskManager() { |
return true; |
} |
-#if defined(OS_CHROMEOS) |
-void HandleSilenceSpokenFeedback() { |
- base::RecordAction(UserMetricsAction("Accel_Silence_Spoken_Feedback")); |
- |
- AccessibilityDelegate* delegate = |
- Shell::GetInstance()->accessibility_delegate(); |
- if (!delegate->IsSpokenFeedbackEnabled()) |
- return; |
- delegate->SilenceSpokenFeedback(); |
-} |
-#endif |
- |
bool HandleSwitchIme(ImeControlDelegate* ime_control_delegate, |
const ui::Accelerator& accelerator) { |
base::RecordAction(UserMetricsAction("Accel_Switch_Ime")); |
@@ -492,7 +454,13 @@ bool HandleToggleFullscreen(ui::KeyboardCode key_code) { |
return true; |
} |
-bool HandleWindowSnapOrDock(int action) { |
+bool HandleToggleOverview(const ui::Accelerator& accelerator) { |
+ base::RecordAction(base::UserMetricsAction("Accel_Overview_F5")); |
+ Shell::GetInstance()->window_selector_controller()->ToggleOverview(); |
+ return true; |
+} |
+ |
+bool HandleWindowSnapOrDock(AcceleratorAction action) { |
wm::WindowState* window_state = wm::GetActiveWindowState(); |
// Disable window snapping shortcut key for full screen window due to |
// http://crbug.com/135487. |
@@ -521,7 +489,47 @@ bool HandleWindowMinimize() { |
return accelerators::ToggleMinimized(); |
} |
+bool HandlePositionCenter() { |
+ base::RecordAction(UserMetricsAction("Accel_Window_Position_Center")); |
+ aura::Window* window = wm::GetActiveWindow(); |
+ // Docked windows do not support centering and ignore accelerator. |
+ if (window && !wm::GetWindowState(window)->IsDocked()) { |
+ wm::CenterWindow(window); |
+ return true; |
+ } |
+ return false; |
+} |
+ |
#if defined(OS_CHROMEOS) |
+bool HandleDisableCapsLock(ui::KeyboardCode key_code, |
+ ui::EventType previous_event_type, |
+ ui::KeyboardCode previous_key_code) { |
+ if (previous_event_type == ui::ET_KEY_RELEASED || |
+ (previous_key_code != ui::VKEY_LSHIFT && |
+ previous_key_code != ui::VKEY_SHIFT && |
+ previous_key_code != ui::VKEY_RSHIFT)) { |
+ // If something else was pressed between the Shift key being pressed |
+ // and released, then ignore the release of the Shift key. |
+ return false; |
+ } |
+ base::RecordAction(UserMetricsAction("Accel_Disable_Caps_Lock")); |
+ chromeos::input_method::InputMethodManager* ime = |
+ chromeos::input_method::InputMethodManager::Get(); |
+ chromeos::input_method::ImeKeyboard* keyboard = |
+ ime ? ime->GetImeKeyboard() : NULL; |
+ if (keyboard && keyboard->CapsLockIsEnabled()) { |
+ keyboard->SetCapsLockEnabled(false); |
+ return true; |
+ } |
+ return false; |
+} |
+ |
+bool HandleLock(ui::KeyboardCode key_code) { |
+ base::RecordAction(UserMetricsAction("Accel_LockScreen_L")); |
+ Shell::GetInstance()->session_state_delegate()->LockScreen(); |
+ return true; |
+} |
+ |
bool HandleCrosh() { |
base::RecordAction(UserMetricsAction("Accel_Open_Crosh")); |
@@ -536,9 +544,19 @@ bool HandleFileManager() { |
return true; |
} |
-bool HandleLock(ui::KeyboardCode key_code) { |
- base::RecordAction(UserMetricsAction("Accel_LockScreen_L")); |
- Shell::GetInstance()->session_state_delegate()->LockScreen(); |
+void HandleSilenceSpokenFeedback() { |
+ base::RecordAction(UserMetricsAction("Accel_Silence_Spoken_Feedback")); |
+ |
+ AccessibilityDelegate* delegate = |
+ Shell::GetInstance()->accessibility_delegate(); |
+ if (!delegate->IsSpokenFeedbackEnabled()) |
+ return; |
+ delegate->SilenceSpokenFeedback(); |
+} |
+ |
+bool HandleSwapPrimaryDisplay() { |
+ base::RecordAction(UserMetricsAction("Accel_Swap_Primary_Display")); |
+ Shell::GetInstance()->display_controller()->SwapPrimaryDisplay(); |
return true; |
} |
@@ -563,6 +581,28 @@ bool HandleCycleUser(SessionStateDelegate::CycleUser cycle_user) { |
return true; |
} |
+bool HandleToggleCapsLock(ui::KeyboardCode key_code, |
+ ui::EventType previous_event_type, |
+ ui::KeyboardCode previous_key_code) { |
+ if (key_code == ui::VKEY_LWIN) { |
+ // If something else was pressed between the Search key (LWIN) |
+ // being pressed and released, then ignore the release of the |
+ // Search key. |
+ // TODO(danakj): Releasing Alt first breaks this: crbug.com/166495 |
+ if (previous_event_type == ui::ET_KEY_RELEASED || |
+ previous_key_code != ui::VKEY_LWIN) |
+ return false; |
+ } |
+ base::RecordAction(UserMetricsAction("Accel_Toggle_Caps_Lock")); |
+ chromeos::input_method::InputMethodManager* ime = |
+ chromeos::input_method::InputMethodManager::Get(); |
+ chromeos::input_method::ImeKeyboard* keyboard = |
+ ime ? ime->GetImeKeyboard() : NULL; |
+ if (keyboard) |
+ keyboard->SetCapsLockEnabled(!keyboard->CapsLockIsEnabled()); |
+ return true; |
+} |
+ |
bool HandleToggleMirrorMode() { |
base::RecordAction(UserMetricsAction("Accel_Toggle_Mirror_Mode")); |
Shell::GetInstance()->display_controller()->ToggleMirrorMode(); |
@@ -610,51 +650,6 @@ bool HandleTouchHudModeChange() { |
return false; |
} |
-bool HandleDisableCapsLock(ui::KeyboardCode key_code, |
- ui::EventType previous_event_type, |
- ui::KeyboardCode previous_key_code) { |
- if (previous_event_type == ui::ET_KEY_RELEASED || |
- (previous_key_code != ui::VKEY_LSHIFT && |
- previous_key_code != ui::VKEY_SHIFT && |
- previous_key_code != ui::VKEY_RSHIFT)) { |
- // If something else was pressed between the Shift key being pressed |
- // and released, then ignore the release of the Shift key. |
- return false; |
- } |
- base::RecordAction(UserMetricsAction("Accel_Disable_Caps_Lock")); |
- chromeos::input_method::InputMethodManager* ime = |
- chromeos::input_method::InputMethodManager::Get(); |
- chromeos::input_method::ImeKeyboard* keyboard = |
- ime ? ime->GetImeKeyboard() : NULL; |
- if (keyboard && keyboard->CapsLockIsEnabled()) { |
- keyboard->SetCapsLockEnabled(false); |
- return true; |
- } |
- return false; |
-} |
- |
-bool HandleToggleCapsLock(ui::KeyboardCode key_code, |
- ui::EventType previous_event_type, |
- ui::KeyboardCode previous_key_code) { |
- if (key_code == ui::VKEY_LWIN) { |
- // If something else was pressed between the Search key (LWIN) |
- // being pressed and released, then ignore the release of the |
- // Search key. |
- // TODO(danakj): Releasing Alt first breaks this: crbug.com/166495 |
- if (previous_event_type == ui::ET_KEY_RELEASED || |
- previous_key_code != ui::VKEY_LWIN) |
- return false; |
- } |
- base::RecordAction(UserMetricsAction("Accel_Toggle_Caps_Lock")); |
- chromeos::input_method::InputMethodManager* ime = |
- chromeos::input_method::InputMethodManager::Get(); |
- chromeos::input_method::ImeKeyboard* keyboard = |
- ime ? ime->GetImeKeyboard() : NULL; |
- if (keyboard) |
- keyboard->SetCapsLockEnabled(!keyboard->CapsLockIsEnabled()); |
- return true; |
-} |
- |
#endif // defined(OS_CHROMEOS) |
class AutoSet { |
@@ -683,44 +678,6 @@ AcceleratorController::AcceleratorController() |
AcceleratorController::~AcceleratorController() { |
} |
-void AcceleratorController::Init() { |
- previous_accelerator_.set_type(ui::ET_UNKNOWN); |
- for (size_t i = 0; i < kActionsAllowedAtLoginOrLockScreenLength; ++i) { |
- actions_allowed_at_login_screen_.insert( |
- kActionsAllowedAtLoginOrLockScreen[i]); |
- actions_allowed_at_lock_screen_.insert( |
- kActionsAllowedAtLoginOrLockScreen[i]); |
- } |
- for (size_t i = 0; i < kActionsAllowedAtLockScreenLength; ++i) |
- actions_allowed_at_lock_screen_.insert(kActionsAllowedAtLockScreen[i]); |
- for (size_t i = 0; i < kActionsAllowedAtModalWindowLength; ++i) |
- actions_allowed_at_modal_window_.insert(kActionsAllowedAtModalWindow[i]); |
- for (size_t i = 0; i < kPreferredActionsLength; ++i) |
- preferred_actions_.insert(kPreferredActions[i]); |
- for (size_t i = 0; i < kReservedActionsLength; ++i) |
- reserved_actions_.insert(kReservedActions[i]); |
- for (size_t i = 0; i < kNonrepeatableActionsLength; ++i) |
- nonrepeatable_actions_.insert(kNonrepeatableActions[i]); |
- for (size_t i = 0; i < kActionsAllowedInAppModeLength; ++i) |
- actions_allowed_in_app_mode_.insert(kActionsAllowedInAppMode[i]); |
- for (size_t i = 0; i < kActionsNeedingWindowLength; ++i) |
- actions_needing_window_.insert(kActionsNeedingWindow[i]); |
- |
- RegisterAccelerators(kAcceleratorData, kAcceleratorDataLength); |
- |
- if (debug::DebugAcceleratorsEnabled()) { |
- RegisterAccelerators(kDebugAcceleratorData, kDebugAcceleratorDataLength); |
- // All debug accelerators are reserved. |
- for (size_t i = 0; i < kDebugAcceleratorDataLength; ++i) |
- reserved_actions_.insert(kDebugAcceleratorData[i].action); |
- } |
- |
-#if defined(OS_CHROMEOS) |
- keyboard_brightness_control_delegate_.reset( |
- new KeyboardBrightnessController()); |
-#endif |
-} |
- |
void AcceleratorController::Register(const ui::Accelerator& accelerator, |
ui::AcceleratorTarget* target) { |
accelerator_manager_->Register(accelerator, |
@@ -757,7 +714,7 @@ bool AcceleratorController::IsPreferred( |
const ui::Accelerator remapped_accelerator = ime_control_delegate_.get() ? |
ime_control_delegate_->RemapAccelerator(accelerator) : accelerator; |
- std::map<ui::Accelerator, int>::const_iterator iter = |
+ std::map<ui::Accelerator, AcceleratorAction>::const_iterator iter = |
accelerators_.find(remapped_accelerator); |
if (iter == accelerators_.end()) |
return false; // not an accelerator. |
@@ -770,7 +727,7 @@ bool AcceleratorController::IsReserved( |
const ui::Accelerator remapped_accelerator = ime_control_delegate_.get() ? |
ime_control_delegate_->RemapAccelerator(accelerator) : accelerator; |
- std::map<ui::Accelerator, int>::const_iterator iter = |
+ std::map<ui::Accelerator, AcceleratorAction>::const_iterator iter = |
accelerators_.find(remapped_accelerator); |
if (iter == accelerators_.end()) |
return false; // not an accelerator. |
@@ -778,11 +735,101 @@ bool AcceleratorController::IsReserved( |
return reserved_actions_.find(iter->second) != reserved_actions_.end(); |
} |
-bool AcceleratorController::PerformActionIfEnabled(int action) { |
+bool AcceleratorController::PerformActionIfEnabled(AcceleratorAction action) { |
return PerformAction(action, ui::Accelerator()); |
} |
-bool AcceleratorController::PerformAction(int action, |
+AcceleratorController::AcceleratorProcessingRestriction |
+AcceleratorController::GetCurrentAcceleratorRestriction() { |
+ return GetAcceleratorProcessingRestriction(-1); |
+} |
+ |
+void AcceleratorController::SetBrightnessControlDelegate( |
+ scoped_ptr<BrightnessControlDelegate> brightness_control_delegate) { |
+ brightness_control_delegate_ = brightness_control_delegate.Pass(); |
+} |
+ |
+void AcceleratorController::SetImeControlDelegate( |
+ scoped_ptr<ImeControlDelegate> ime_control_delegate) { |
+ ime_control_delegate_ = ime_control_delegate.Pass(); |
+} |
+ |
+void AcceleratorController::SetScreenshotDelegate( |
+ scoped_ptr<ScreenshotDelegate> screenshot_delegate) { |
+ screenshot_delegate_ = screenshot_delegate.Pass(); |
+} |
+ |
+//////////////////////////////////////////////////////////////////////////////// |
+// AcceleratorController, ui::AcceleratorTarget implementation: |
+ |
+bool AcceleratorController::AcceleratorPressed( |
+ const ui::Accelerator& accelerator) { |
+ std::map<ui::Accelerator, AcceleratorAction>::const_iterator it = |
+ accelerators_.find(accelerator); |
+ DCHECK(it != accelerators_.end()); |
+ return PerformAction(it->second, accelerator); |
+} |
+ |
+bool AcceleratorController::CanHandleAccelerators() const { |
+ return true; |
+} |
+ |
+/////////////////////////////////////////////////////////////////////////////// |
+// AcceleratorController, private: |
+ |
+void AcceleratorController::Init() { |
+ previous_accelerator_.set_type(ui::ET_UNKNOWN); |
+ for (size_t i = 0; i < kActionsAllowedAtLoginOrLockScreenLength; ++i) { |
+ actions_allowed_at_login_screen_.insert( |
+ kActionsAllowedAtLoginOrLockScreen[i]); |
+ actions_allowed_at_lock_screen_.insert( |
+ kActionsAllowedAtLoginOrLockScreen[i]); |
+ } |
+ for (size_t i = 0; i < kActionsAllowedAtLockScreenLength; ++i) |
+ actions_allowed_at_lock_screen_.insert(kActionsAllowedAtLockScreen[i]); |
+ for (size_t i = 0; i < kActionsAllowedAtModalWindowLength; ++i) |
+ actions_allowed_at_modal_window_.insert(kActionsAllowedAtModalWindow[i]); |
+ for (size_t i = 0; i < kPreferredActionsLength; ++i) |
+ preferred_actions_.insert(kPreferredActions[i]); |
+ for (size_t i = 0; i < kReservedActionsLength; ++i) |
+ reserved_actions_.insert(kReservedActions[i]); |
+ for (size_t i = 0; i < kNonrepeatableActionsLength; ++i) |
+ nonrepeatable_actions_.insert(kNonrepeatableActions[i]); |
+ for (size_t i = 0; i < kActionsAllowedInAppModeLength; ++i) |
+ actions_allowed_in_app_mode_.insert(kActionsAllowedInAppMode[i]); |
+ for (size_t i = 0; i < kActionsNeedingWindowLength; ++i) |
+ actions_needing_window_.insert(kActionsNeedingWindow[i]); |
+ |
+ RegisterAccelerators(kAcceleratorData, kAcceleratorDataLength); |
+ |
+ if (debug::DebugAcceleratorsEnabled()) { |
+ RegisterAccelerators(kDebugAcceleratorData, kDebugAcceleratorDataLength); |
+ // All debug accelerators are reserved. |
+ for (size_t i = 0; i < kDebugAcceleratorDataLength; ++i) |
+ reserved_actions_.insert(kDebugAcceleratorData[i].action); |
+ } |
+ |
+#if defined(OS_CHROMEOS) |
+ keyboard_brightness_control_delegate_.reset( |
+ new KeyboardBrightnessController()); |
+#endif |
+} |
+ |
+void AcceleratorController::RegisterAccelerators( |
+ const AcceleratorData accelerators[], |
+ size_t accelerators_length) { |
+ for (size_t i = 0; i < accelerators_length; ++i) { |
+ ui::Accelerator accelerator(accelerators[i].keycode, |
+ accelerators[i].modifiers); |
+ accelerator.set_type(accelerators[i].trigger_on_press ? |
+ ui::ET_KEY_PRESSED : ui::ET_KEY_RELEASED); |
+ Register(accelerator, this); |
+ accelerators_.insert( |
+ std::make_pair(accelerator, accelerators[i].action)); |
+ } |
+} |
+ |
+bool AcceleratorController::PerformAction(AcceleratorAction action, |
const ui::Accelerator& accelerator) { |
ash::Shell* shell = ash::Shell::GetInstance(); |
AcceleratorProcessingRestriction restriction = |
@@ -813,75 +860,6 @@ bool AcceleratorController::PerformAction(int action, |
return HandleAccessibleFocusCycle(false); |
case ACCESSIBLE_FOCUS_PREVIOUS: |
return HandleAccessibleFocusCycle(true); |
- case CYCLE_BACKWARD_MRU: |
- return HandleCycleBackwardMRU(accelerator); |
- case CYCLE_FORWARD_MRU: |
- return HandleCycleForwardMRU(accelerator); |
- case TOGGLE_OVERVIEW: |
- return ToggleOverview(accelerator); |
-#if defined(OS_CHROMEOS) |
- case TOGGLE_MIRROR_MODE: |
- return HandleToggleMirrorMode(); |
- case LOCK_SCREEN: |
- return HandleLock(key_code); |
- case OPEN_FILE_MANAGER: |
- return HandleFileManager(); |
- case OPEN_CROSH: |
- return HandleCrosh(); |
- case SILENCE_SPOKEN_FEEDBACK: |
- HandleSilenceSpokenFeedback(); |
- return false; |
- case SWAP_PRIMARY_DISPLAY: |
- return HandleSwapPrimaryDisplay(); |
- case SWITCH_TO_NEXT_USER: |
- return HandleCycleUser(SessionStateDelegate::CYCLE_TO_NEXT_USER); |
- case SWITCH_TO_PREVIOUS_USER: |
- return HandleCycleUser(SessionStateDelegate::CYCLE_TO_PREVIOUS_USER); |
- case TOGGLE_SPOKEN_FEEDBACK: |
- return HandleToggleSpokenFeedback(); |
- case TOGGLE_TOUCH_VIEW_TESTING: |
- return HandleToggleTouchViewTesting(); |
- case TOGGLE_WIFI: |
- Shell::GetInstance()->system_tray_notifier()->NotifyRequestToggleWifi(); |
- return true; |
- case TOUCH_HUD_CLEAR: |
- return HandleTouchHudClear(); |
- case TOUCH_HUD_MODE_CHANGE: |
- return HandleTouchHudModeChange(); |
- case TOUCH_HUD_PROJECTION_TOGGLE: |
- accelerators::ToggleTouchHudProjection(); |
- return true; |
- case DISABLE_GPU_WATCHDOG: |
- Shell::GetInstance()->gpu_support()->DisableGpuWatchdog(); |
- return true; |
- case DISABLE_CAPS_LOCK: |
- return HandleDisableCapsLock( |
- key_code, previous_event_type, previous_key_code); |
- case TOGGLE_CAPS_LOCK: |
- return HandleToggleCapsLock( |
- key_code, previous_event_type, previous_key_code); |
-#endif // OS_CHROMEOS |
- case OPEN_FEEDBACK_PAGE: |
- return HandleOpenFeedbackPage(); |
- case EXIT: |
- // UMA metrics are recorded in the handler. |
- exit_warning_handler_.HandleAccelerator(); |
- return true; |
- case NEW_INCOGNITO_WINDOW: |
- return HandleNewIncognitoWindow(); |
- case NEW_TAB: |
- return HandleNewTab(key_code); |
- case NEW_WINDOW: |
- return HandleNewWindow(); |
- case RESTORE_TAB: |
- return HandleRestoreTab(); |
- case TAKE_SCREENSHOT: |
- return HandleTakeScreenshot(screenshot_delegate_.get()); |
- case TAKE_PARTIAL_SCREENSHOT: |
- return HandleTakePartialScreenshot(screenshot_delegate_.get()); |
- case TOGGLE_APP_LIST: |
- return HandleToggleAppList( |
- key_code, previous_event_type, previous_key_code, accelerator); |
case BRIGHTNESS_DOWN: |
if (brightness_control_delegate_) |
return brightness_control_delegate_->HandleBrightnessDown(accelerator); |
@@ -890,58 +868,30 @@ bool AcceleratorController::PerformAction(int action, |
if (brightness_control_delegate_) |
return brightness_control_delegate_->HandleBrightnessUp(accelerator); |
return false; |
- case KEYBOARD_BRIGHTNESS_DOWN: |
- if (keyboard_brightness_control_delegate_) |
- return keyboard_brightness_control_delegate_-> |
- HandleKeyboardBrightnessDown(accelerator); |
- return false; |
- case KEYBOARD_BRIGHTNESS_UP: |
- if (keyboard_brightness_control_delegate_) |
- return keyboard_brightness_control_delegate_-> |
- HandleKeyboardBrightnessUp(accelerator); |
- return false; |
- case VOLUME_MUTE: { |
- ash::VolumeControlDelegate* volume_delegate = |
- shell->system_tray_delegate()->GetVolumeControlDelegate(); |
- return volume_delegate && volume_delegate->HandleVolumeMute(accelerator); |
- } |
- case VOLUME_DOWN: { |
- ash::VolumeControlDelegate* volume_delegate = |
- shell->system_tray_delegate()->GetVolumeControlDelegate(); |
- return volume_delegate && volume_delegate->HandleVolumeDown(accelerator); |
- } |
- case VOLUME_UP: { |
- ash::VolumeControlDelegate* volume_delegate = |
- shell->system_tray_delegate()->GetVolumeControlDelegate(); |
- return volume_delegate && volume_delegate->HandleVolumeUp(accelerator); |
- } |
- case FOCUS_SHELF: |
- return HandleFocusShelf(); |
+ case CYCLE_BACKWARD_MRU: |
+ return HandleCycleBackwardMRU(accelerator); |
+ case CYCLE_FORWARD_MRU: |
+ return HandleCycleForwardMRU(accelerator); |
+ case DEBUG_PRINT_LAYER_HIERARCHY: |
+ case DEBUG_PRINT_VIEW_HIERARCHY: |
+ case DEBUG_PRINT_WINDOW_HIERARCHY: |
+ case DEBUG_TOGGLE_DESKTOP_BACKGROUND_MODE: |
+ case DEBUG_TOGGLE_DEVICE_SCALE_FACTOR: |
+ case DEBUG_TOGGLE_ROOT_WINDOW_FULL_SCREEN: |
+ case DEBUG_TOGGLE_SHOW_DEBUG_BORDERS: |
+ case DEBUG_TOGGLE_SHOW_FPS_COUNTER: |
+ case DEBUG_TOGGLE_SHOW_PAINT_RECTS: |
+ return debug::PerformDebugAction(action); |
+ case EXIT: |
+ // UMA metrics are recorded in the handler. |
+ exit_warning_handler_.HandleAccelerator(); |
+ return true; |
case FOCUS_NEXT_PANE: |
return HandleRotatePaneFocus(Shell::FORWARD); |
case FOCUS_PREVIOUS_PANE: |
return HandleRotatePaneFocus(Shell::BACKWARD); |
- case SHOW_KEYBOARD_OVERLAY: |
- return HandleShowKeyboardOverlay(); |
- case SHOW_SYSTEM_TRAY_BUBBLE: |
- return HandleShowSystemTrayBubble(); |
- case SHOW_MESSAGE_CENTER_BUBBLE: |
- return HandleShowMessageCenterBubble(); |
- case SHOW_TASK_MANAGER: |
- return HandleShowTaskManager(); |
- case NEXT_IME: |
- HandleNextIme( |
- ime_control_delegate_.get(), previous_event_type, previous_key_code); |
- // NEXT_IME is bound to Alt-Shift key up event. To be consistent with |
- // Windows behavior, do not consume the key event here. |
- return false; |
- case PREVIOUS_IME: |
- return HandlePreviousIme(ime_control_delegate_.get(), accelerator); |
- case PRINT_UI_HIERARCHIES: |
- debug::PrintUIHierarchies(); |
- return true; |
- case SWITCH_IME: |
- return HandleSwitchIme(ime_control_delegate_.get(), accelerator); |
+ case FOCUS_SHELF: |
+ return HandleFocusShelf(); |
case LAUNCH_APP_0: |
return HandleLaunchAppN(0); |
case LAUNCH_APP_1: |
@@ -960,28 +910,6 @@ bool AcceleratorController::PerformAction(int action, |
return HandleLaunchAppN(7); |
case LAUNCH_LAST_APP: |
return HandleLaunchLastApp(); |
- case WINDOW_CYCLE_SNAP_DOCK_LEFT: |
- case WINDOW_CYCLE_SNAP_DOCK_RIGHT: |
- return HandleWindowSnapOrDock(action); |
- case WINDOW_MINIMIZE: |
- return HandleWindowMinimize(); |
- case TOGGLE_FULLSCREEN: |
- return HandleToggleFullscreen(key_code); |
- case TOGGLE_MAXIMIZED: |
- accelerators::ToggleMaximized(); |
- return true; |
- case WINDOW_POSITION_CENTER: |
- return HandlePositionCenter(); |
- case SCALE_UI_UP: |
- return HandleScaleUI(true /* up */); |
- case SCALE_UI_DOWN: |
- return HandleScaleUI(false /* down */); |
- case SCALE_UI_RESET: |
- return HandleScaleReset(); |
- case ROTATE_WINDOW: |
- return HandleRotateActiveWindow(); |
- case ROTATE_SCREEN: |
- return HandleRotateScreen(); |
case MAGNIFY_SCREEN_ZOOM_IN: |
return HandleMagnifyScreen(1); |
case MAGNIFY_SCREEN_ZOOM_OUT: |
@@ -992,38 +920,161 @@ bool AcceleratorController::PerformAction(int action, |
return HandleMediaPlayPause(); |
case MEDIA_PREV_TRACK: |
return HandleMediaPrevTrack(); |
+ case NEW_INCOGNITO_WINDOW: |
+ return HandleNewIncognitoWindow(); |
+ case NEW_TAB: |
+ return HandleNewTab(key_code); |
+ case NEW_WINDOW: |
+ return HandleNewWindow(); |
+ case NEXT_IME: |
+ HandleNextIme( |
+ ime_control_delegate_.get(), previous_event_type, previous_key_code); |
+ // NEXT_IME is bound to Alt-Shift key up event. To be consistent with |
+ // Windows behavior, do not consume the key event here. |
+ return false; |
+ case OPEN_FEEDBACK_PAGE: |
+ return HandleOpenFeedbackPage(); |
+ case PREVIOUS_IME: |
+ return HandlePreviousIme(ime_control_delegate_.get(), accelerator); |
+ case PRINT_UI_HIERARCHIES: |
+ debug::PrintUIHierarchies(); |
+ return true; |
+ case RESTORE_TAB: |
+ return HandleRestoreTab(); |
+ case ROTATE_SCREEN: |
+ return HandleRotateScreen(); |
+ case ROTATE_WINDOW: |
+ return HandleRotateActiveWindow(); |
+ case SCALE_UI_DOWN: |
+ return HandleScaleUI(false /* down */); |
+ case SCALE_UI_RESET: |
+ return HandleScaleReset(); |
+ case SCALE_UI_UP: |
+ return HandleScaleUI(true /* up */); |
+ case SHOW_KEYBOARD_OVERLAY: |
+ return HandleShowKeyboardOverlay(); |
+ case SHOW_MESSAGE_CENTER_BUBBLE: |
+ return HandleShowMessageCenterBubble(); |
+ case SHOW_SYSTEM_TRAY_BUBBLE: |
+ return HandleShowSystemTrayBubble(); |
+ case SHOW_TASK_MANAGER: |
+ return HandleShowTaskManager(); |
+ case SWITCH_IME: |
+ return HandleSwitchIme(ime_control_delegate_.get(), accelerator); |
+ case TAKE_PARTIAL_SCREENSHOT: |
+ return HandleTakePartialScreenshot(screenshot_delegate_.get()); |
+ case TAKE_SCREENSHOT: |
+ return HandleTakeScreenshot(screenshot_delegate_.get()); |
+ case TOGGLE_APP_LIST: |
+ return HandleToggleAppList( |
+ key_code, previous_event_type, previous_key_code, accelerator); |
+ case TOGGLE_FULLSCREEN: |
+ return HandleToggleFullscreen(key_code); |
+ case TOGGLE_MAXIMIZED: |
+ accelerators::ToggleMaximized(); |
+ return true; |
+ case TOGGLE_OVERVIEW: |
+ return HandleToggleOverview(accelerator); |
+ case VOLUME_DOWN: { |
+ ash::VolumeControlDelegate* volume_delegate = |
+ shell->system_tray_delegate()->GetVolumeControlDelegate(); |
+ return volume_delegate && volume_delegate->HandleVolumeDown(accelerator); |
+ } |
+ case VOLUME_MUTE: { |
+ ash::VolumeControlDelegate* volume_delegate = |
+ shell->system_tray_delegate()->GetVolumeControlDelegate(); |
+ return volume_delegate && volume_delegate->HandleVolumeMute(accelerator); |
+ } |
+ case VOLUME_UP: { |
+ ash::VolumeControlDelegate* volume_delegate = |
+ shell->system_tray_delegate()->GetVolumeControlDelegate(); |
+ return volume_delegate && volume_delegate->HandleVolumeUp(accelerator); |
+ } |
+ case WINDOW_CYCLE_SNAP_DOCK_LEFT: |
+ case WINDOW_CYCLE_SNAP_DOCK_RIGHT: |
+ return HandleWindowSnapOrDock(action); |
+ case WINDOW_MINIMIZE: |
+ return HandleWindowMinimize(); |
+ case WINDOW_POSITION_CENTER: |
+ return HandlePositionCenter(); |
+#if defined(OS_CHROMEOS) |
+ case DEBUG_ADD_REMOVE_DISPLAY: |
+ return debug::PerformDebugAction(action); |
+ case DISABLE_CAPS_LOCK: |
+ return HandleDisableCapsLock( |
+ key_code, previous_event_type, previous_key_code); |
+ case DISABLE_GPU_WATCHDOG: |
+ Shell::GetInstance()->gpu_support()->DisableGpuWatchdog(); |
+ return true; |
+ case KEYBOARD_BRIGHTNESS_DOWN: |
+ if (keyboard_brightness_control_delegate_) |
+ return keyboard_brightness_control_delegate_-> |
+ HandleKeyboardBrightnessDown(accelerator); |
+ return false; |
+ case KEYBOARD_BRIGHTNESS_UP: |
+ if (keyboard_brightness_control_delegate_) |
+ return keyboard_brightness_control_delegate_-> |
+ HandleKeyboardBrightnessUp(accelerator); |
+ return false; |
+ case LOCK_PRESSED: |
+ case LOCK_RELEASED: |
+ Shell::GetInstance()->power_button_controller()-> |
+ OnLockButtonEvent(action == LOCK_PRESSED, base::TimeTicks()); |
+ return true; |
+ case LOCK_SCREEN: |
+ return HandleLock(key_code); |
+ case OPEN_CROSH: |
+ return HandleCrosh(); |
+ case OPEN_FILE_MANAGER: |
+ return HandleFileManager(); |
case POWER_PRESSED: // fallthrough |
case POWER_RELEASED: |
-#if defined(OS_CHROMEOS) |
if (!base::SysInfo::IsRunningOnChromeOS()) { |
// There is no powerd in linux desktop, so call the |
// PowerButtonController here. |
Shell::GetInstance()->power_button_controller()-> |
OnPowerButtonEvent(action == POWER_PRESSED, base::TimeTicks()); |
} |
-#endif |
// We don't do anything with these at present on the device, |
// (power button events are reported to us from powerm via |
// D-BUS), but we consume them to prevent them from getting |
// passed to apps -- see http://crbug.com/146609. |
return true; |
- case LOCK_PRESSED: |
- case LOCK_RELEASED: |
- Shell::GetInstance()->power_button_controller()-> |
- OnLockButtonEvent(action == LOCK_PRESSED, base::TimeTicks()); |
+ case SILENCE_SPOKEN_FEEDBACK: |
+ HandleSilenceSpokenFeedback(); |
+ return false; |
+ case SWAP_PRIMARY_DISPLAY: |
+ return HandleSwapPrimaryDisplay(); |
+ case SWITCH_TO_NEXT_USER: |
+ return HandleCycleUser(SessionStateDelegate::CYCLE_TO_NEXT_USER); |
+ case SWITCH_TO_PREVIOUS_USER: |
+ return HandleCycleUser(SessionStateDelegate::CYCLE_TO_PREVIOUS_USER); |
+ case TOGGLE_CAPS_LOCK: |
+ return HandleToggleCapsLock( |
+ key_code, previous_event_type, previous_key_code); |
+ case TOGGLE_MIRROR_MODE: |
+ return HandleToggleMirrorMode(); |
+ case TOGGLE_SPOKEN_FEEDBACK: |
+ return HandleToggleSpokenFeedback(); |
+ case TOGGLE_TOUCH_VIEW_TESTING: |
+ return HandleToggleTouchViewTesting(); |
+ case TOGGLE_WIFI: |
+ Shell::GetInstance()->system_tray_notifier()->NotifyRequestToggleWifi(); |
+ return true; |
+ case TOUCH_HUD_CLEAR: |
+ return HandleTouchHudClear(); |
+ case TOUCH_HUD_MODE_CHANGE: |
+ return HandleTouchHudModeChange(); |
+ case TOUCH_HUD_PROJECTION_TOGGLE: |
+ accelerators::ToggleTouchHudProjection(); |
return true; |
- default: |
- DCHECK(debug::DebugAcceleratorsEnabled()) |
- << "Unhandled action " << action; |
+#else |
+ case DUMMY_FOR_RESERVED: |
+ NOTREACHED(); |
+ return false; |
+#endif // OS_CHROMEOS |
} |
- |
- // If |action| is a debug action, run it. |
- return debug::PerformDebugAction(action); |
-} |
- |
-AcceleratorController::AcceleratorProcessingRestriction |
-AcceleratorController::GetCurrentAcceleratorRestriction() { |
- return GetAcceleratorProcessingRestriction(-1); |
+ return false; |
} |
AcceleratorController::AcceleratorProcessingRestriction |
@@ -1062,46 +1113,6 @@ AcceleratorController::GetAcceleratorProcessingRestriction(int action) { |
return RESTRICTION_NONE; |
} |
-void AcceleratorController::SetBrightnessControlDelegate( |
- scoped_ptr<BrightnessControlDelegate> brightness_control_delegate) { |
- brightness_control_delegate_ = brightness_control_delegate.Pass(); |
-} |
- |
-void AcceleratorController::SetImeControlDelegate( |
- scoped_ptr<ImeControlDelegate> ime_control_delegate) { |
- ime_control_delegate_ = ime_control_delegate.Pass(); |
-} |
- |
-void AcceleratorController::SetScreenshotDelegate( |
- scoped_ptr<ScreenshotDelegate> screenshot_delegate) { |
- screenshot_delegate_ = screenshot_delegate.Pass(); |
-} |
- |
-//////////////////////////////////////////////////////////////////////////////// |
-// AcceleratorController, ui::AcceleratorTarget implementation: |
- |
-bool AcceleratorController::AcceleratorPressed( |
- const ui::Accelerator& accelerator) { |
- std::map<ui::Accelerator, int>::const_iterator it = |
- accelerators_.find(accelerator); |
- DCHECK(it != accelerators_.end()); |
- return PerformAction(static_cast<AcceleratorAction>(it->second), accelerator); |
-} |
- |
-void AcceleratorController::RegisterAccelerators( |
- const AcceleratorData accelerators[], |
- size_t accelerators_length) { |
- for (size_t i = 0; i < accelerators_length; ++i) { |
- ui::Accelerator accelerator(accelerators[i].keycode, |
- accelerators[i].modifiers); |
- accelerator.set_type(accelerators[i].trigger_on_press ? |
- ui::ET_KEY_PRESSED : ui::ET_KEY_RELEASED); |
- Register(accelerator, this); |
- accelerators_.insert( |
- std::make_pair(accelerator, accelerators[i].action)); |
- } |
-} |
- |
void AcceleratorController::SetKeyboardBrightnessControlDelegate( |
scoped_ptr<KeyboardBrightnessControlDelegate> |
keyboard_brightness_control_delegate) { |
@@ -1109,8 +1120,4 @@ void AcceleratorController::SetKeyboardBrightnessControlDelegate( |
keyboard_brightness_control_delegate.Pass(); |
} |
-bool AcceleratorController::CanHandleAccelerators() const { |
- return true; |
-} |
- |
} // namespace ash |