| 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 "ash/accelerators/accelerator_table.h" | 7 #include "ash/accelerators/accelerator_table.h" |
| 8 #include "ash/accessibility_delegate.h" | 8 #include "ash/accessibility_delegate.h" |
| 9 #include "ash/ash_switches.h" | 9 #include "ash/ash_switches.h" |
| 10 #include "ash/display/display_manager.h" | 10 #include "ash/display/display_manager.h" |
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 126 class DummyImeControlDelegate : public ImeControlDelegate { | 126 class DummyImeControlDelegate : public ImeControlDelegate { |
| 127 public: | 127 public: |
| 128 explicit DummyImeControlDelegate(bool consume) | 128 explicit DummyImeControlDelegate(bool consume) |
| 129 : consume_(consume), | 129 : consume_(consume), |
| 130 handle_next_ime_count_(0), | 130 handle_next_ime_count_(0), |
| 131 handle_previous_ime_count_(0), | 131 handle_previous_ime_count_(0), |
| 132 handle_switch_ime_count_(0) { | 132 handle_switch_ime_count_(0) { |
| 133 } | 133 } |
| 134 virtual ~DummyImeControlDelegate() {} | 134 virtual ~DummyImeControlDelegate() {} |
| 135 | 135 |
| 136 virtual bool HandleNextIme() OVERRIDE { | 136 virtual void HandleNextIme() OVERRIDE { |
| 137 ++handle_next_ime_count_; | 137 ++handle_next_ime_count_; |
| 138 return consume_; | |
| 139 } | 138 } |
| 140 virtual bool HandlePreviousIme(const ui::Accelerator& accelerator) OVERRIDE { | 139 virtual bool HandlePreviousIme(const ui::Accelerator& accelerator) OVERRIDE { |
| 141 ++handle_previous_ime_count_; | 140 ++handle_previous_ime_count_; |
| 142 last_accelerator_ = accelerator; | 141 last_accelerator_ = accelerator; |
| 143 return consume_; | 142 return consume_; |
| 144 } | 143 } |
| 145 virtual bool HandleSwitchIme(const ui::Accelerator& accelerator) OVERRIDE { | 144 virtual bool HandleSwitchIme(const ui::Accelerator& accelerator) OVERRIDE { |
| 146 ++handle_switch_ime_count_; | 145 ++handle_switch_ime_count_; |
| 147 last_accelerator_ = accelerator; | 146 last_accelerator_ = accelerator; |
| 148 return consume_; | 147 return consume_; |
| (...skipping 803 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 952 const ReleaseAccelerator shift_alt(ui::VKEY_MENU, ui::EF_SHIFT_DOWN); | 951 const ReleaseAccelerator shift_alt(ui::VKEY_MENU, ui::EF_SHIFT_DOWN); |
| 953 const ui::Accelerator alt_shift_press(ui::VKEY_SHIFT, | 952 const ui::Accelerator alt_shift_press(ui::VKEY_SHIFT, |
| 954 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); | 953 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); |
| 955 const ReleaseAccelerator alt_shift(ui::VKEY_SHIFT, ui::EF_ALT_DOWN); | 954 const ReleaseAccelerator alt_shift(ui::VKEY_SHIFT, ui::EF_ALT_DOWN); |
| 956 | 955 |
| 957 DummyImeControlDelegate* delegate = new DummyImeControlDelegate(true); | 956 DummyImeControlDelegate* delegate = new DummyImeControlDelegate(true); |
| 958 GetController()->SetImeControlDelegate( | 957 GetController()->SetImeControlDelegate( |
| 959 scoped_ptr<ImeControlDelegate>(delegate).Pass()); | 958 scoped_ptr<ImeControlDelegate>(delegate).Pass()); |
| 960 EXPECT_EQ(0, delegate->handle_next_ime_count()); | 959 EXPECT_EQ(0, delegate->handle_next_ime_count()); |
| 961 EXPECT_FALSE(GetController()->Process(shift_alt_press)); | 960 EXPECT_FALSE(GetController()->Process(shift_alt_press)); |
| 962 EXPECT_TRUE(GetController()->Process(shift_alt)); | 961 EXPECT_FALSE(GetController()->Process(shift_alt)); |
| 963 EXPECT_EQ(1, delegate->handle_next_ime_count()); | 962 EXPECT_EQ(1, delegate->handle_next_ime_count()); |
| 964 EXPECT_FALSE(GetController()->Process(alt_shift_press)); | 963 EXPECT_FALSE(GetController()->Process(alt_shift_press)); |
| 965 EXPECT_TRUE(GetController()->Process(alt_shift)); | 964 EXPECT_FALSE(GetController()->Process(alt_shift)); |
| 966 EXPECT_EQ(2, delegate->handle_next_ime_count()); | 965 EXPECT_EQ(2, delegate->handle_next_ime_count()); |
| 967 | 966 |
| 968 // We should NOT switch IME when e.g. Shift+Alt+X is pressed and X is | 967 // We should NOT switch IME when e.g. Shift+Alt+X is pressed and X is |
| 969 // released. | 968 // released. |
| 970 const ui::Accelerator shift_alt_x_press( | 969 const ui::Accelerator shift_alt_x_press( |
| 971 ui::VKEY_X, | 970 ui::VKEY_X, |
| 972 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); | 971 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); |
| 973 const ReleaseAccelerator shift_alt_x(ui::VKEY_X, | 972 const ReleaseAccelerator shift_alt_x(ui::VKEY_X, |
| 974 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); | 973 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); |
| 975 | 974 |
| 976 EXPECT_FALSE(GetController()->Process(shift_alt_press)); | 975 EXPECT_FALSE(GetController()->Process(shift_alt_press)); |
| 977 EXPECT_FALSE(GetController()->Process(shift_alt_x_press)); | 976 EXPECT_FALSE(GetController()->Process(shift_alt_x_press)); |
| 978 EXPECT_FALSE(GetController()->Process(shift_alt_x)); | 977 EXPECT_FALSE(GetController()->Process(shift_alt_x)); |
| 979 EXPECT_FALSE(GetController()->Process(shift_alt)); | 978 EXPECT_FALSE(GetController()->Process(shift_alt)); |
| 980 EXPECT_EQ(2, delegate->handle_next_ime_count()); | 979 EXPECT_EQ(2, delegate->handle_next_ime_count()); |
| 981 | 980 |
| 982 // But we _should_ if X is either VKEY_RETURN or VKEY_SPACE. | 981 // But we _should_ if X is either VKEY_RETURN or VKEY_SPACE. |
| 983 // TODO(nona|mazda): Remove this when crbug.com/139556 in a better way. | 982 // TODO(nona|mazda): Remove this when crbug.com/139556 in a better way. |
| 984 const ui::Accelerator shift_alt_return_press( | 983 const ui::Accelerator shift_alt_return_press( |
| 985 ui::VKEY_RETURN, | 984 ui::VKEY_RETURN, |
| 986 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); | 985 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); |
| 987 const ReleaseAccelerator shift_alt_return( | 986 const ReleaseAccelerator shift_alt_return( |
| 988 ui::VKEY_RETURN, | 987 ui::VKEY_RETURN, |
| 989 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); | 988 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); |
| 990 | 989 |
| 991 EXPECT_FALSE(GetController()->Process(shift_alt_press)); | 990 EXPECT_FALSE(GetController()->Process(shift_alt_press)); |
| 992 EXPECT_FALSE(GetController()->Process(shift_alt_return_press)); | 991 EXPECT_FALSE(GetController()->Process(shift_alt_return_press)); |
| 993 EXPECT_FALSE(GetController()->Process(shift_alt_return)); | 992 EXPECT_FALSE(GetController()->Process(shift_alt_return)); |
| 994 EXPECT_TRUE(GetController()->Process(shift_alt)); | 993 EXPECT_FALSE(GetController()->Process(shift_alt)); |
| 995 EXPECT_EQ(3, delegate->handle_next_ime_count()); | 994 EXPECT_EQ(3, delegate->handle_next_ime_count()); |
| 996 | 995 |
| 997 const ui::Accelerator shift_alt_space_press( | 996 const ui::Accelerator shift_alt_space_press( |
| 998 ui::VKEY_SPACE, | 997 ui::VKEY_SPACE, |
| 999 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); | 998 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); |
| 1000 const ReleaseAccelerator shift_alt_space( | 999 const ReleaseAccelerator shift_alt_space( |
| 1001 ui::VKEY_SPACE, | 1000 ui::VKEY_SPACE, |
| 1002 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); | 1001 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); |
| 1003 | 1002 |
| 1004 EXPECT_FALSE(GetController()->Process(shift_alt_press)); | 1003 EXPECT_FALSE(GetController()->Process(shift_alt_press)); |
| 1005 EXPECT_FALSE(GetController()->Process(shift_alt_space_press)); | 1004 EXPECT_FALSE(GetController()->Process(shift_alt_space_press)); |
| 1006 EXPECT_FALSE(GetController()->Process(shift_alt_space)); | 1005 EXPECT_FALSE(GetController()->Process(shift_alt_space)); |
| 1007 EXPECT_TRUE(GetController()->Process(shift_alt)); | 1006 EXPECT_FALSE(GetController()->Process(shift_alt)); |
| 1008 EXPECT_EQ(4, delegate->handle_next_ime_count()); | 1007 EXPECT_EQ(4, delegate->handle_next_ime_count()); |
| 1009 } | 1008 } |
| 1010 | 1009 |
| 1011 #if defined(OS_CHROMEOS) | 1010 #if defined(OS_CHROMEOS) |
| 1012 // Test IME shortcuts again with unnormalized accelerators (Chrome OS only). | 1011 // Test IME shortcuts again with unnormalized accelerators (Chrome OS only). |
| 1013 { | 1012 { |
| 1014 const ui::Accelerator shift_alt_press(ui::VKEY_MENU, ui::EF_SHIFT_DOWN); | 1013 const ui::Accelerator shift_alt_press(ui::VKEY_MENU, ui::EF_SHIFT_DOWN); |
| 1015 const ReleaseAccelerator shift_alt(ui::VKEY_MENU, ui::EF_SHIFT_DOWN); | 1014 const ReleaseAccelerator shift_alt(ui::VKEY_MENU, ui::EF_SHIFT_DOWN); |
| 1016 const ui::Accelerator alt_shift_press(ui::VKEY_SHIFT, ui::EF_ALT_DOWN); | 1015 const ui::Accelerator alt_shift_press(ui::VKEY_SHIFT, ui::EF_ALT_DOWN); |
| 1017 const ReleaseAccelerator alt_shift(ui::VKEY_SHIFT, ui::EF_ALT_DOWN); | 1016 const ReleaseAccelerator alt_shift(ui::VKEY_SHIFT, ui::EF_ALT_DOWN); |
| 1018 | 1017 |
| 1019 DummyImeControlDelegate* delegate = new DummyImeControlDelegate(true); | 1018 DummyImeControlDelegate* delegate = new DummyImeControlDelegate(true); |
| 1020 GetController()->SetImeControlDelegate( | 1019 GetController()->SetImeControlDelegate( |
| 1021 scoped_ptr<ImeControlDelegate>(delegate).Pass()); | 1020 scoped_ptr<ImeControlDelegate>(delegate).Pass()); |
| 1022 EXPECT_EQ(0, delegate->handle_next_ime_count()); | 1021 EXPECT_EQ(0, delegate->handle_next_ime_count()); |
| 1023 EXPECT_FALSE(GetController()->Process(shift_alt_press)); | 1022 EXPECT_FALSE(GetController()->Process(shift_alt_press)); |
| 1024 EXPECT_TRUE(GetController()->Process(shift_alt)); | 1023 EXPECT_FALSE(GetController()->Process(shift_alt)); |
| 1025 EXPECT_EQ(1, delegate->handle_next_ime_count()); | 1024 EXPECT_EQ(1, delegate->handle_next_ime_count()); |
| 1026 EXPECT_FALSE(GetController()->Process(alt_shift_press)); | 1025 EXPECT_FALSE(GetController()->Process(alt_shift_press)); |
| 1027 EXPECT_TRUE(GetController()->Process(alt_shift)); | 1026 EXPECT_FALSE(GetController()->Process(alt_shift)); |
| 1028 EXPECT_EQ(2, delegate->handle_next_ime_count()); | 1027 EXPECT_EQ(2, delegate->handle_next_ime_count()); |
| 1029 | 1028 |
| 1030 // We should NOT switch IME when e.g. Shift+Alt+X is pressed and X is | 1029 // We should NOT switch IME when e.g. Shift+Alt+X is pressed and X is |
| 1031 // released. | 1030 // released. |
| 1032 const ui::Accelerator shift_alt_x_press( | 1031 const ui::Accelerator shift_alt_x_press( |
| 1033 ui::VKEY_X, | 1032 ui::VKEY_X, |
| 1034 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); | 1033 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); |
| 1035 const ReleaseAccelerator shift_alt_x(ui::VKEY_X, | 1034 const ReleaseAccelerator shift_alt_x(ui::VKEY_X, |
| 1036 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); | 1035 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); |
| 1037 | 1036 |
| (...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1243 // Don't alert if we have a minimized window either. | 1242 // Don't alert if we have a minimized window either. |
| 1244 GetController()->PerformAction(WINDOW_MINIMIZE, dummy); | 1243 GetController()->PerformAction(WINDOW_MINIMIZE, dummy); |
| 1245 for (size_t i = 0; i < kActionsNeedingWindowLength; ++i) { | 1244 for (size_t i = 0; i < kActionsNeedingWindowLength; ++i) { |
| 1246 delegate->TriggerAccessibilityAlert(A11Y_ALERT_NONE); | 1245 delegate->TriggerAccessibilityAlert(A11Y_ALERT_NONE); |
| 1247 GetController()->PerformAction(kActionsNeedingWindow[i], dummy); | 1246 GetController()->PerformAction(kActionsNeedingWindow[i], dummy); |
| 1248 EXPECT_NE(delegate->GetLastAccessibilityAlert(), A11Y_ALERT_WINDOW_NEEDED); | 1247 EXPECT_NE(delegate->GetLastAccessibilityAlert(), A11Y_ALERT_WINDOW_NEEDED); |
| 1249 } | 1248 } |
| 1250 } | 1249 } |
| 1251 | 1250 |
| 1252 } // namespace ash | 1251 } // namespace ash |
| OLD | NEW |