Chromium Code Reviews| Index: ash/accelerators/accelerator_controller.cc |
| diff --git a/ash/accelerators/accelerator_controller.cc b/ash/accelerators/accelerator_controller.cc |
| index 7bb9643fbaf7aba62b4262a53b6a566bbf51d17f..3de5a250c5d02a4d3d4452fa94dde881fab5dbc2 100644 |
| --- a/ash/accelerators/accelerator_controller.cc |
| +++ b/ash/accelerators/accelerator_controller.cc |
| @@ -857,36 +857,10 @@ bool AcceleratorController::IsReservedAccelerator( |
| bool AcceleratorController::PerformAction(int action, |
| const ui::Accelerator& accelerator) { |
| ash::Shell* shell = ash::Shell::GetInstance(); |
| - if (!shell->session_state_delegate()->IsActiveUserSessionStarted() && |
| - actions_allowed_at_login_screen_.find(action) == |
| - actions_allowed_at_login_screen_.end()) { |
| - return false; |
| - } |
| - if (shell->session_state_delegate()->IsScreenLocked() && |
| - actions_allowed_at_lock_screen_.find(action) == |
| - actions_allowed_at_lock_screen_.end()) { |
| - return false; |
| - } |
| - if (shell->IsSystemModalWindowOpen() && |
| - actions_allowed_at_modal_window_.find(action) == |
| - actions_allowed_at_modal_window_.end()) { |
| - // Note: we return true. This indicates the shortcut is handled |
| - // and will not be passed to the modal window. This is important |
| - // for things like Alt+Tab that would cause an undesired effect |
| - // in the modal window by cycling through its window elements. |
| - return true; |
| - } |
| - if (shell->delegate()->IsRunningInForcedAppMode() && |
| - actions_allowed_in_app_mode_.find(action) == |
| - actions_allowed_in_app_mode_.end()) { |
| - return false; |
| - } |
| - if (MruWindowTracker::BuildWindowList(false).empty() && |
| - actions_needing_window_.find(action) != actions_needing_window_.end()) { |
| - Shell::GetInstance()->accessibility_delegate()->TriggerAccessibilityAlert( |
| - A11Y_ALERT_WINDOW_NEEDED); |
| - return true; |
| - } |
| + AcceleratorProcessingRestriction restriction = |
| + GetAcceleratorProcessingRestriction(action, accelerator); |
| + if (restriction != RESTRICTION_NONE) |
| + return restriction == RESTRICTION_PREVENT_PROCESSING_AND_PROPAGATION; |
| const ui::KeyboardCode key_code = accelerator.key_code(); |
| // PerformAction() is performed from gesture controllers and passes |
| @@ -1140,6 +1114,44 @@ bool AcceleratorController::PerformAction(int action, |
| return false; |
| } |
| +AcceleratorController::AcceleratorProcessingRestriction |
| +AcceleratorController::GetAcceleratorProcessingRestriction( |
| + int action, |
| + const ui::Accelerator& accelerator) { |
|
oshima
2014/06/27 18:40:40
accelerator is not used here. Maybe this is what y
David Tseng
2014/06/27 21:47:16
I removed the accelerator parameter.
Perhaps the
|
| + ash::Shell* shell = ash::Shell::GetInstance(); |
| + if (!shell->session_state_delegate()->IsActiveUserSessionStarted() && |
| + actions_allowed_at_login_screen_.find(action) == |
| + actions_allowed_at_login_screen_.end()) { |
| + return RESTRICTION_PREVENT_PROCESSING; |
| + } |
| + if (shell->session_state_delegate()->IsScreenLocked() && |
| + actions_allowed_at_lock_screen_.find(action) == |
| + actions_allowed_at_lock_screen_.end()) { |
| + return RESTRICTION_PREVENT_PROCESSING; |
| + } |
| + if (shell->IsSystemModalWindowOpen() && |
| + actions_allowed_at_modal_window_.find(action) == |
| + actions_allowed_at_modal_window_.end()) { |
| + // Note we prevent the shortcut from propagating so it will not |
| + // be passed to the modal window. This is important for things like |
| + // Alt+Tab that would cause an undesired effect in the modal window by |
| + // cycling through its window elements. |
| + return RESTRICTION_PREVENT_PROCESSING_AND_PROPAGATION; |
| + } |
| + if (shell->delegate()->IsRunningInForcedAppMode() && |
| + actions_allowed_in_app_mode_.find(action) == |
| + actions_allowed_in_app_mode_.end()) { |
| + return RESTRICTION_PREVENT_PROCESSING; |
| + } |
| + if (MruWindowTracker::BuildWindowList(false).empty() && |
| + actions_needing_window_.find(action) != actions_needing_window_.end()) { |
| + Shell::GetInstance()->accessibility_delegate()->TriggerAccessibilityAlert( |
| + A11Y_ALERT_WINDOW_NEEDED); |
| + return RESTRICTION_PREVENT_PROCESSING_AND_PROPAGATION; |
| + } |
| + return RESTRICTION_NONE; |
| +} |
| + |
| void AcceleratorController::SetBrightnessControlDelegate( |
| scoped_ptr<BrightnessControlDelegate> brightness_control_delegate) { |
| brightness_control_delegate_ = brightness_control_delegate.Pass(); |