| 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 1036 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1047 const ui::Accelerator hangul(ui::VKEY_HANGUL, ui::EF_NONE); | 1047 const ui::Accelerator hangul(ui::VKEY_HANGUL, ui::EF_NONE); |
| 1048 EXPECT_FALSE(ProcessInController(control_space_down)); | 1048 EXPECT_FALSE(ProcessInController(control_space_down)); |
| 1049 EXPECT_FALSE(ProcessInController(control_space_up)); | 1049 EXPECT_FALSE(ProcessInController(control_space_up)); |
| 1050 EXPECT_FALSE(ProcessInController(convert)); | 1050 EXPECT_FALSE(ProcessInController(convert)); |
| 1051 EXPECT_FALSE(ProcessInController(non_convert)); | 1051 EXPECT_FALSE(ProcessInController(non_convert)); |
| 1052 EXPECT_FALSE(ProcessInController(wide_half_1)); | 1052 EXPECT_FALSE(ProcessInController(wide_half_1)); |
| 1053 EXPECT_FALSE(ProcessInController(wide_half_2)); | 1053 EXPECT_FALSE(ProcessInController(wide_half_2)); |
| 1054 EXPECT_FALSE(ProcessInController(hangul)); | 1054 EXPECT_FALSE(ProcessInController(hangul)); |
| 1055 DummyImeControlDelegate* delegate = new DummyImeControlDelegate; | 1055 DummyImeControlDelegate* delegate = new DummyImeControlDelegate; |
| 1056 GetController()->SetImeControlDelegate( | 1056 GetController()->SetImeControlDelegate( |
| 1057 scoped_ptr<ImeControlDelegate>(delegate).Pass()); | 1057 scoped_ptr<ImeControlDelegate>(delegate)); |
| 1058 EXPECT_EQ(0, delegate->handle_previous_ime_count()); | 1058 EXPECT_EQ(0, delegate->handle_previous_ime_count()); |
| 1059 EXPECT_TRUE(ProcessInController(control_space_down)); | 1059 EXPECT_TRUE(ProcessInController(control_space_down)); |
| 1060 EXPECT_EQ(1, delegate->handle_previous_ime_count()); | 1060 EXPECT_EQ(1, delegate->handle_previous_ime_count()); |
| 1061 EXPECT_TRUE(ProcessInController(control_space_up)); | 1061 EXPECT_TRUE(ProcessInController(control_space_up)); |
| 1062 EXPECT_EQ(1, delegate->handle_previous_ime_count()); | 1062 EXPECT_EQ(1, delegate->handle_previous_ime_count()); |
| 1063 EXPECT_EQ(0, delegate->handle_switch_ime_count()); | 1063 EXPECT_EQ(0, delegate->handle_switch_ime_count()); |
| 1064 EXPECT_TRUE(ProcessInController(convert)); | 1064 EXPECT_TRUE(ProcessInController(convert)); |
| 1065 EXPECT_EQ(1, delegate->handle_switch_ime_count()); | 1065 EXPECT_EQ(1, delegate->handle_switch_ime_count()); |
| 1066 EXPECT_TRUE(ProcessInController(non_convert)); | 1066 EXPECT_TRUE(ProcessInController(non_convert)); |
| 1067 EXPECT_EQ(2, delegate->handle_switch_ime_count()); | 1067 EXPECT_EQ(2, delegate->handle_switch_ime_count()); |
| 1068 EXPECT_TRUE(ProcessInController(wide_half_1)); | 1068 EXPECT_TRUE(ProcessInController(wide_half_1)); |
| 1069 EXPECT_EQ(3, delegate->handle_switch_ime_count()); | 1069 EXPECT_EQ(3, delegate->handle_switch_ime_count()); |
| 1070 EXPECT_TRUE(ProcessInController(wide_half_2)); | 1070 EXPECT_TRUE(ProcessInController(wide_half_2)); |
| 1071 EXPECT_EQ(4, delegate->handle_switch_ime_count()); | 1071 EXPECT_EQ(4, delegate->handle_switch_ime_count()); |
| 1072 EXPECT_TRUE(ProcessInController(hangul)); | 1072 EXPECT_TRUE(ProcessInController(hangul)); |
| 1073 EXPECT_EQ(5, delegate->handle_switch_ime_count()); | 1073 EXPECT_EQ(5, delegate->handle_switch_ime_count()); |
| 1074 } | 1074 } |
| 1075 | 1075 |
| 1076 // Test IME shortcuts that are triggered on key release. | 1076 // Test IME shortcuts that are triggered on key release. |
| 1077 { | 1077 { |
| 1078 const ui::Accelerator shift_alt_press(ui::VKEY_MENU, | 1078 const ui::Accelerator shift_alt_press(ui::VKEY_MENU, |
| 1079 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); | 1079 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); |
| 1080 const ReleaseAccelerator shift_alt(ui::VKEY_MENU, ui::EF_SHIFT_DOWN); | 1080 const ReleaseAccelerator shift_alt(ui::VKEY_MENU, ui::EF_SHIFT_DOWN); |
| 1081 const ui::Accelerator alt_shift_press(ui::VKEY_SHIFT, | 1081 const ui::Accelerator alt_shift_press(ui::VKEY_SHIFT, |
| 1082 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); | 1082 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); |
| 1083 const ReleaseAccelerator alt_shift(ui::VKEY_SHIFT, ui::EF_ALT_DOWN); | 1083 const ReleaseAccelerator alt_shift(ui::VKEY_SHIFT, ui::EF_ALT_DOWN); |
| 1084 | 1084 |
| 1085 DummyImeControlDelegate* delegate = new DummyImeControlDelegate; | 1085 DummyImeControlDelegate* delegate = new DummyImeControlDelegate; |
| 1086 GetController()->SetImeControlDelegate( | 1086 GetController()->SetImeControlDelegate( |
| 1087 scoped_ptr<ImeControlDelegate>(delegate).Pass()); | 1087 scoped_ptr<ImeControlDelegate>(delegate)); |
| 1088 EXPECT_EQ(0, delegate->handle_next_ime_count()); | 1088 EXPECT_EQ(0, delegate->handle_next_ime_count()); |
| 1089 EXPECT_FALSE(ProcessInController(shift_alt_press)); | 1089 EXPECT_FALSE(ProcessInController(shift_alt_press)); |
| 1090 EXPECT_TRUE(ProcessInController(shift_alt)); | 1090 EXPECT_TRUE(ProcessInController(shift_alt)); |
| 1091 EXPECT_EQ(1, delegate->handle_next_ime_count()); | 1091 EXPECT_EQ(1, delegate->handle_next_ime_count()); |
| 1092 EXPECT_FALSE(ProcessInController(alt_shift_press)); | 1092 EXPECT_FALSE(ProcessInController(alt_shift_press)); |
| 1093 EXPECT_TRUE(ProcessInController(alt_shift)); | 1093 EXPECT_TRUE(ProcessInController(alt_shift)); |
| 1094 EXPECT_EQ(2, delegate->handle_next_ime_count()); | 1094 EXPECT_EQ(2, delegate->handle_next_ime_count()); |
| 1095 | 1095 |
| 1096 // We should NOT switch IME when e.g. Shift+Alt+X is pressed and X is | 1096 // We should NOT switch IME when e.g. Shift+Alt+X is pressed and X is |
| 1097 // released. | 1097 // released. |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1185 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); | 1185 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); |
| 1186 EXPECT_FALSE(ProcessInController(shift_alt_space_press)); | 1186 EXPECT_FALSE(ProcessInController(shift_alt_space_press)); |
| 1187 } | 1187 } |
| 1188 | 1188 |
| 1189 // Makes sure that the next IME accelerators doesn't conflict with other | 1189 // Makes sure that the next IME accelerators doesn't conflict with other |
| 1190 // accelerators that contain Alt+Shift when the wrong sequence is pressed. | 1190 // accelerators that contain Alt+Shift when the wrong sequence is pressed. |
| 1191 // crbug.com/527154. | 1191 // crbug.com/527154. |
| 1192 TEST_F(AcceleratorControllerTest, ImeGlobalAcceleratorsNoConflict) { | 1192 TEST_F(AcceleratorControllerTest, ImeGlobalAcceleratorsNoConflict) { |
| 1193 DummyImeControlDelegate* delegate = new DummyImeControlDelegate; | 1193 DummyImeControlDelegate* delegate = new DummyImeControlDelegate; |
| 1194 GetController()->SetImeControlDelegate( | 1194 GetController()->SetImeControlDelegate( |
| 1195 scoped_ptr<ImeControlDelegate>(delegate).Pass()); | 1195 scoped_ptr<ImeControlDelegate>(delegate)); |
| 1196 ui::test::EventGenerator& generator = GetEventGenerator(); | 1196 ui::test::EventGenerator& generator = GetEventGenerator(); |
| 1197 | 1197 |
| 1198 // Correct sequence of a conflicting accelerator must not trigger next IME. | 1198 // Correct sequence of a conflicting accelerator must not trigger next IME. |
| 1199 // Alt (press) + Shift (press) + S (press) + S (release) + Shift (release) + | 1199 // Alt (press) + Shift (press) + S (press) + S (release) + Shift (release) + |
| 1200 // Alt (release). | 1200 // Alt (release). |
| 1201 generator.PressKey(ui::VKEY_MENU, ui::EF_ALT_DOWN); | 1201 generator.PressKey(ui::VKEY_MENU, ui::EF_ALT_DOWN); |
| 1202 generator.PressKey(ui::VKEY_SHIFT, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); | 1202 generator.PressKey(ui::VKEY_SHIFT, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); |
| 1203 generator.PressKey(ui::VKEY_S, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); | 1203 generator.PressKey(ui::VKEY_S, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); |
| 1204 generator.ReleaseKey(ui::VKEY_S, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); | 1204 generator.ReleaseKey(ui::VKEY_S, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); |
| 1205 generator.ReleaseKey(ui::VKEY_SHIFT, ui::EF_ALT_DOWN); | 1205 generator.ReleaseKey(ui::VKEY_SHIFT, ui::EF_ALT_DOWN); |
| (...skipping 372 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1578 EXPECT_TRUE(IsMessageCenterEmpty()); | 1578 EXPECT_TRUE(IsMessageCenterEmpty()); |
| 1579 | 1579 |
| 1580 // If the action is LOCK_SCREEN, we must reset the state by unlocking the | 1580 // If the action is LOCK_SCREEN, we must reset the state by unlocking the |
| 1581 // screen before we proceed testing the rest of accelerators. | 1581 // screen before we proceed testing the rest of accelerators. |
| 1582 ResetStateIfNeeded(); | 1582 ResetStateIfNeeded(); |
| 1583 } | 1583 } |
| 1584 } | 1584 } |
| 1585 #endif // defined(OS_CHROMEOS) | 1585 #endif // defined(OS_CHROMEOS) |
| 1586 | 1586 |
| 1587 } // namespace ash | 1587 } // namespace ash |
| OLD | NEW |