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 |