OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "chrome/browser/chromeos/events/event_rewriter.h" | 5 #include "chrome/browser/chromeos/events/event_rewriter.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "ash/shell.h" | 9 #include "ash/shell.h" |
10 #include "ash/sticky_keys/sticky_keys_controller.h" | 10 #include "ash/sticky_keys/sticky_keys_controller.h" |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
162 // First, test with a PC keyboard. | 162 // First, test with a PC keyboard. |
163 syncable_prefs::TestingPrefServiceSyncable prefs; | 163 syncable_prefs::TestingPrefServiceSyncable prefs; |
164 EventRewriter rewriter(NULL); | 164 EventRewriter rewriter(NULL); |
165 rewriter.KeyboardDeviceAddedForTesting(kKeyboardDeviceId, "PC Keyboard"); | 165 rewriter.KeyboardDeviceAddedForTesting(kKeyboardDeviceId, "PC Keyboard"); |
166 rewriter.set_last_keyboard_device_id_for_testing(kKeyboardDeviceId); | 166 rewriter.set_last_keyboard_device_id_for_testing(kKeyboardDeviceId); |
167 rewriter.set_pref_service_for_testing(&prefs); | 167 rewriter.set_pref_service_for_testing(&prefs); |
168 | 168 |
169 KeyTestCase pc_keyboard_tests[] = { | 169 KeyTestCase pc_keyboard_tests[] = { |
170 // VKEY_A, Alt modifier. | 170 // VKEY_A, Alt modifier. |
171 {ui::ET_KEY_PRESSED, | 171 {ui::ET_KEY_PRESSED, |
172 {ui::VKEY_A, ui::DomCode::KEY_A, ui::EF_ALT_DOWN, | 172 {ui::VKEY_A, ui::DomCode::US_A, ui::EF_ALT_DOWN, |
173 ui::DomKey::UNIDENTIFIED}, | 173 ui::DomKey::UNIDENTIFIED}, |
174 {ui::VKEY_A, ui::DomCode::KEY_A, ui::EF_ALT_DOWN, | 174 {ui::VKEY_A, ui::DomCode::US_A, ui::EF_ALT_DOWN, |
175 ui::DomKey::UNIDENTIFIED}}, | 175 ui::DomKey::UNIDENTIFIED}}, |
176 | 176 |
177 // VKEY_A, Win modifier. | 177 // VKEY_A, Win modifier. |
178 {ui::ET_KEY_PRESSED, | 178 {ui::ET_KEY_PRESSED, |
179 {ui::VKEY_A, ui::DomCode::KEY_A, ui::EF_COMMAND_DOWN, | 179 {ui::VKEY_A, ui::DomCode::US_A, ui::EF_COMMAND_DOWN, |
180 ui::DomKey::UNIDENTIFIED}, | 180 ui::DomKey::UNIDENTIFIED}, |
181 {ui::VKEY_A, ui::DomCode::KEY_A, ui::EF_COMMAND_DOWN, | 181 {ui::VKEY_A, ui::DomCode::US_A, ui::EF_COMMAND_DOWN, |
182 ui::DomKey::UNIDENTIFIED}}, | 182 ui::DomKey::UNIDENTIFIED}}, |
183 | 183 |
184 // VKEY_A, Alt+Win modifier. | 184 // VKEY_A, Alt+Win modifier. |
185 {ui::ET_KEY_PRESSED, | 185 {ui::ET_KEY_PRESSED, |
186 {ui::VKEY_A, ui::DomCode::KEY_A, ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN, | 186 {ui::VKEY_A, ui::DomCode::US_A, ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN, |
187 ui::DomKey::UNIDENTIFIED}, | 187 ui::DomKey::UNIDENTIFIED}, |
188 {ui::VKEY_A, ui::DomCode::KEY_A, ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN, | 188 {ui::VKEY_A, ui::DomCode::US_A, ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN, |
189 ui::DomKey::UNIDENTIFIED}}, | 189 ui::DomKey::UNIDENTIFIED}}, |
190 | 190 |
191 // VKEY_LWIN (left Windows key), Alt modifier. | 191 // VKEY_LWIN (left Windows key), Alt modifier. |
192 {ui::ET_KEY_PRESSED, | 192 {ui::ET_KEY_PRESSED, |
193 {ui::VKEY_LWIN, ui::DomCode::OS_LEFT, | 193 {ui::VKEY_LWIN, ui::DomCode::OS_LEFT, |
194 ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN, ui::DomKey::OS}, | 194 ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN, ui::DomKey::OS}, |
195 {ui::VKEY_LWIN, ui::DomCode::OS_LEFT, | 195 {ui::VKEY_LWIN, ui::DomCode::OS_LEFT, |
196 ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN, ui::DomKey::OS}}, | 196 ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN, ui::DomKey::OS}}, |
197 | 197 |
198 // VKEY_RWIN (right Windows key), Alt modifier. | 198 // VKEY_RWIN (right Windows key), Alt modifier. |
199 {ui::ET_KEY_PRESSED, | 199 {ui::ET_KEY_PRESSED, |
200 {ui::VKEY_RWIN, ui::DomCode::OS_RIGHT, | 200 {ui::VKEY_RWIN, ui::DomCode::OS_RIGHT, |
201 ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN, ui::DomKey::OS}, | 201 ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN, ui::DomKey::OS}, |
202 {ui::VKEY_RWIN, ui::DomCode::OS_RIGHT, | 202 {ui::VKEY_RWIN, ui::DomCode::OS_RIGHT, |
203 ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN, ui::DomKey::OS}}, | 203 ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN, ui::DomKey::OS}}, |
204 }; | 204 }; |
205 | 205 |
206 for (const auto& test : pc_keyboard_tests) { | 206 for (const auto& test : pc_keyboard_tests) { |
207 CheckKeyTestCase(&rewriter, test); | 207 CheckKeyTestCase(&rewriter, test); |
208 } | 208 } |
209 | 209 |
210 // An Apple keyboard reusing the ID, zero. | 210 // An Apple keyboard reusing the ID, zero. |
211 rewriter.KeyboardDeviceAddedForTesting(kKeyboardDeviceId, "Apple Keyboard"); | 211 rewriter.KeyboardDeviceAddedForTesting(kKeyboardDeviceId, "Apple Keyboard"); |
212 rewriter.set_last_keyboard_device_id_for_testing(kKeyboardDeviceId); | 212 rewriter.set_last_keyboard_device_id_for_testing(kKeyboardDeviceId); |
213 | 213 |
214 KeyTestCase apple_keyboard_tests[] = { | 214 KeyTestCase apple_keyboard_tests[] = { |
215 // VKEY_A, Alt modifier. | 215 // VKEY_A, Alt modifier. |
216 {ui::ET_KEY_PRESSED, | 216 {ui::ET_KEY_PRESSED, |
217 {ui::VKEY_A, ui::DomCode::KEY_A, ui::EF_ALT_DOWN, | 217 {ui::VKEY_A, ui::DomCode::US_A, ui::EF_ALT_DOWN, |
218 ui::DomKey::UNIDENTIFIED}, | 218 ui::DomKey::UNIDENTIFIED}, |
219 {ui::VKEY_A, ui::DomCode::KEY_A, ui::EF_ALT_DOWN, | 219 {ui::VKEY_A, ui::DomCode::US_A, ui::EF_ALT_DOWN, |
220 ui::DomKey::UNIDENTIFIED}}, | 220 ui::DomKey::UNIDENTIFIED}}, |
221 | 221 |
222 // VKEY_A, Win modifier. | 222 // VKEY_A, Win modifier. |
223 {ui::ET_KEY_PRESSED, | 223 {ui::ET_KEY_PRESSED, |
224 {ui::VKEY_A, ui::DomCode::KEY_A, ui::EF_COMMAND_DOWN, | 224 {ui::VKEY_A, ui::DomCode::US_A, ui::EF_COMMAND_DOWN, |
225 ui::DomKey::UNIDENTIFIED}, | 225 ui::DomKey::UNIDENTIFIED}, |
226 {ui::VKEY_A, ui::DomCode::KEY_A, ui::EF_CONTROL_DOWN, | 226 {ui::VKEY_A, ui::DomCode::US_A, ui::EF_CONTROL_DOWN, |
227 ui::DomKey::Constant<'a'>::Character}}, | 227 ui::DomKey::Constant<'a'>::Character}}, |
228 | 228 |
229 // VKEY_A, Alt+Win modifier. | 229 // VKEY_A, Alt+Win modifier. |
230 {ui::ET_KEY_PRESSED, | 230 {ui::ET_KEY_PRESSED, |
231 {ui::VKEY_A, ui::DomCode::KEY_A, ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN, | 231 {ui::VKEY_A, ui::DomCode::US_A, ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN, |
232 ui::DomKey::UNIDENTIFIED}, | 232 ui::DomKey::UNIDENTIFIED}, |
233 {ui::VKEY_A, ui::DomCode::KEY_A, ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, | 233 {ui::VKEY_A, ui::DomCode::US_A, ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, |
234 ui::DomKey::Constant<'a'>::Character}}, | 234 ui::DomKey::Constant<'a'>::Character}}, |
235 | 235 |
236 // VKEY_LWIN (left Windows key), Alt modifier. | 236 // VKEY_LWIN (left Windows key), Alt modifier. |
237 {ui::ET_KEY_PRESSED, | 237 {ui::ET_KEY_PRESSED, |
238 {ui::VKEY_LWIN, ui::DomCode::OS_LEFT, | 238 {ui::VKEY_LWIN, ui::DomCode::OS_LEFT, |
239 ui::EF_COMMAND_DOWN | ui::EF_ALT_DOWN, ui::DomKey::OS}, | 239 ui::EF_COMMAND_DOWN | ui::EF_ALT_DOWN, ui::DomKey::OS}, |
240 {ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, | 240 {ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, |
241 ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN, ui::DomKey::CONTROL}}, | 241 ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN, ui::DomKey::CONTROL}}, |
242 | 242 |
243 // VKEY_RWIN (right Windows key), Alt modifier. | 243 // VKEY_RWIN (right Windows key), Alt modifier. |
(...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
618 | 618 |
619 // Release Search with Caps Lock mask. Confirm the event is not rewritten. | 619 // Release Search with Caps Lock mask. Confirm the event is not rewritten. |
620 {ui::ET_KEY_RELEASED, | 620 {ui::ET_KEY_RELEASED, |
621 {ui::VKEY_LWIN, ui::DomCode::OS_LEFT, ui::EF_CAPS_LOCK_DOWN, | 621 {ui::VKEY_LWIN, ui::DomCode::OS_LEFT, ui::EF_CAPS_LOCK_DOWN, |
622 ui::DomKey::OS}, | 622 ui::DomKey::OS}, |
623 {ui::VKEY_LWIN, ui::DomCode::OS_LEFT, ui::EF_CAPS_LOCK_DOWN, | 623 {ui::VKEY_LWIN, ui::DomCode::OS_LEFT, ui::EF_CAPS_LOCK_DOWN, |
624 ui::DomKey::OS}}, | 624 ui::DomKey::OS}}, |
625 | 625 |
626 // Press Shift+Ctrl+Alt+Search+A. Confirm the event is not rewritten. | 626 // Press Shift+Ctrl+Alt+Search+A. Confirm the event is not rewritten. |
627 {ui::ET_KEY_PRESSED, | 627 {ui::ET_KEY_PRESSED, |
628 {ui::VKEY_B, ui::DomCode::KEY_B, | 628 {ui::VKEY_B, ui::DomCode::US_B, |
629 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | | 629 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | |
630 ui::EF_COMMAND_DOWN, | 630 ui::EF_COMMAND_DOWN, |
631 ui::DomKey::Constant<'B'>::Character}, | 631 ui::DomKey::Constant<'B'>::Character}, |
632 {ui::VKEY_B, ui::DomCode::KEY_B, | 632 {ui::VKEY_B, ui::DomCode::US_B, |
633 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | | 633 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | |
634 ui::EF_COMMAND_DOWN, | 634 ui::EF_COMMAND_DOWN, |
635 ui::DomKey::Constant<'B'>::Character}}, | 635 ui::DomKey::Constant<'B'>::Character}}, |
636 }; | 636 }; |
637 | 637 |
638 for (const auto& test : tests) { | 638 for (const auto& test : tests) { |
639 CheckKeyTestCase(&rewriter, test); | 639 CheckKeyTestCase(&rewriter, test); |
640 } | 640 } |
641 } | 641 } |
642 | 642 |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
681 // without any modifiers. | 681 // without any modifiers. |
682 {ui::ET_KEY_PRESSED, | 682 {ui::ET_KEY_PRESSED, |
683 {ui::VKEY_LWIN, ui::DomCode::OS_LEFT, ui::EF_CONTROL_DOWN, | 683 {ui::VKEY_LWIN, ui::DomCode::OS_LEFT, ui::EF_CONTROL_DOWN, |
684 ui::DomKey::OS}, | 684 ui::DomKey::OS}, |
685 {ui::VKEY_UNKNOWN, ui::DomCode::NONE, ui::EF_NONE, | 685 {ui::VKEY_UNKNOWN, ui::DomCode::NONE, ui::EF_NONE, |
686 ui::DomKey::UNIDENTIFIED}}, | 686 ui::DomKey::UNIDENTIFIED}}, |
687 | 687 |
688 // Press Control+Search+a. Confirm the event is now VKEY_A without any | 688 // Press Control+Search+a. Confirm the event is now VKEY_A without any |
689 // modifiers. | 689 // modifiers. |
690 {ui::ET_KEY_PRESSED, | 690 {ui::ET_KEY_PRESSED, |
691 {ui::VKEY_A, ui::DomCode::KEY_A, ui::EF_CONTROL_DOWN, | 691 {ui::VKEY_A, ui::DomCode::US_A, ui::EF_CONTROL_DOWN, |
692 ui::DomKey::Constant<'a'>::Character}, | 692 ui::DomKey::Constant<'a'>::Character}, |
693 {ui::VKEY_A, ui::DomCode::KEY_A, ui::EF_NONE, | 693 {ui::VKEY_A, ui::DomCode::US_A, ui::EF_NONE, |
694 ui::DomKey::Constant<'a'>::Character}}, | 694 ui::DomKey::Constant<'a'>::Character}}, |
695 | 695 |
696 // Press Control+Search+Alt+a. Confirm the event is now VKEY_A only with | 696 // Press Control+Search+Alt+a. Confirm the event is now VKEY_A only with |
697 // the Alt modifier. | 697 // the Alt modifier. |
698 {ui::ET_KEY_PRESSED, | 698 {ui::ET_KEY_PRESSED, |
699 {ui::VKEY_A, ui::DomCode::KEY_A, ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN, | 699 {ui::VKEY_A, ui::DomCode::US_A, ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN, |
700 ui::DomKey::Constant<'a'>::Character}, | 700 ui::DomKey::Constant<'a'>::Character}, |
701 {ui::VKEY_A, ui::DomCode::KEY_A, ui::EF_ALT_DOWN, | 701 {ui::VKEY_A, ui::DomCode::US_A, ui::EF_ALT_DOWN, |
702 ui::DomKey::Constant<'a'>::Character}}, | 702 ui::DomKey::Constant<'a'>::Character}}, |
703 }; | 703 }; |
704 | 704 |
705 for (const auto& test : disabled_modifier_tests) { | 705 for (const auto& test : disabled_modifier_tests) { |
706 CheckKeyTestCase(&rewriter, test); | 706 CheckKeyTestCase(&rewriter, test); |
707 } | 707 } |
708 | 708 |
709 // Remap Alt to Control. | 709 // Remap Alt to Control. |
710 IntegerPrefMember alt; | 710 IntegerPrefMember alt; |
711 alt.Init(prefs::kLanguageRemapAltKeyTo, &prefs); | 711 alt.Init(prefs::kLanguageRemapAltKeyTo, &prefs); |
712 alt.SetValue(chromeos::input_method::kControlKey); | 712 alt.SetValue(chromeos::input_method::kControlKey); |
713 | 713 |
714 KeyTestCase tests[] = { | 714 KeyTestCase tests[] = { |
715 // Press left Alt. Confirm the event is now VKEY_CONTROL | 715 // Press left Alt. Confirm the event is now VKEY_CONTROL |
716 // even though the Control key itself is disabled. | 716 // even though the Control key itself is disabled. |
717 {ui::ET_KEY_PRESSED, | 717 {ui::ET_KEY_PRESSED, |
718 {ui::VKEY_MENU, ui::DomCode::ALT_LEFT, ui::EF_ALT_DOWN, ui::DomKey::ALT}, | 718 {ui::VKEY_MENU, ui::DomCode::ALT_LEFT, ui::EF_ALT_DOWN, ui::DomKey::ALT}, |
719 {ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, ui::EF_CONTROL_DOWN, | 719 {ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, ui::EF_CONTROL_DOWN, |
720 ui::DomKey::CONTROL}}, | 720 ui::DomKey::CONTROL}}, |
721 | 721 |
722 // Press Alt+a. Confirm the event is now Control+a even though the Control | 722 // Press Alt+a. Confirm the event is now Control+a even though the Control |
723 // key itself is disabled. | 723 // key itself is disabled. |
724 {ui::ET_KEY_PRESSED, | 724 {ui::ET_KEY_PRESSED, |
725 {ui::VKEY_A, ui::DomCode::KEY_A, ui::EF_ALT_DOWN, | 725 {ui::VKEY_A, ui::DomCode::US_A, ui::EF_ALT_DOWN, |
726 ui::DomKey::Constant<'a'>::Character}, | 726 ui::DomKey::Constant<'a'>::Character}, |
727 {ui::VKEY_A, ui::DomCode::KEY_A, ui::EF_CONTROL_DOWN, | 727 {ui::VKEY_A, ui::DomCode::US_A, ui::EF_CONTROL_DOWN, |
728 ui::DomKey::Constant<'a'>::Character}}, | 728 ui::DomKey::Constant<'a'>::Character}}, |
729 }; | 729 }; |
730 | 730 |
731 for (const auto& test : tests) { | 731 for (const auto& test : tests) { |
732 CheckKeyTestCase(&rewriter, test); | 732 CheckKeyTestCase(&rewriter, test); |
733 } | 733 } |
734 } | 734 } |
735 | 735 |
736 TEST_F(EventRewriterTest, TestRewriteModifiersRemapToControl) { | 736 TEST_F(EventRewriterTest, TestRewriteModifiersRemapToControl) { |
737 // Remap Search to Control. | 737 // Remap Search to Control. |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
791 {ui::VKEY_LWIN, ui::DomCode::OS_LEFT, | 791 {ui::VKEY_LWIN, ui::DomCode::OS_LEFT, |
792 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | | 792 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | |
793 ui::EF_COMMAND_DOWN, | 793 ui::EF_COMMAND_DOWN, |
794 ui::DomKey::OS}, | 794 ui::DomKey::OS}, |
795 {ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, | 795 {ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, |
796 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, ui::DomKey::CONTROL}}, | 796 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, ui::DomKey::CONTROL}}, |
797 | 797 |
798 // Press Shift+Control+Alt+Search+B. Confirm the event is now B with Shift | 798 // Press Shift+Control+Alt+Search+B. Confirm the event is now B with Shift |
799 // and Control modifiers. | 799 // and Control modifiers. |
800 {ui::ET_KEY_PRESSED, | 800 {ui::ET_KEY_PRESSED, |
801 {ui::VKEY_B, ui::DomCode::KEY_B, | 801 {ui::VKEY_B, ui::DomCode::US_B, |
802 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | | 802 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | |
803 ui::EF_COMMAND_DOWN, | 803 ui::EF_COMMAND_DOWN, |
804 ui::DomKey::Constant<'B'>::Character}, | 804 ui::DomKey::Constant<'B'>::Character}, |
805 {ui::VKEY_B, ui::DomCode::KEY_B, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, | 805 {ui::VKEY_B, ui::DomCode::US_B, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, |
806 ui::DomKey::Constant<'B'>::Character}}, | 806 ui::DomKey::Constant<'B'>::Character}}, |
807 }; | 807 }; |
808 | 808 |
809 for (const auto& test : sa_tests) { | 809 for (const auto& test : sa_tests) { |
810 CheckKeyTestCase(&rewriter, test); | 810 CheckKeyTestCase(&rewriter, test); |
811 } | 811 } |
812 } | 812 } |
813 | 813 |
814 TEST_F(EventRewriterTest, TestRewriteModifiersRemapToEscape) { | 814 TEST_F(EventRewriterTest, TestRewriteModifiersRemapToEscape) { |
815 // Remap Search to ESC. | 815 // Remap Search to ESC. |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
920 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | | 920 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | |
921 ui::EF_COMMAND_DOWN, | 921 ui::EF_COMMAND_DOWN, |
922 ui::DomKey::OS}, | 922 ui::DomKey::OS}, |
923 {ui::VKEY_MENU, ui::DomCode::ALT_LEFT, | 923 {ui::VKEY_MENU, ui::DomCode::ALT_LEFT, |
924 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | | 924 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | |
925 ui::EF_COMMAND_DOWN, | 925 ui::EF_COMMAND_DOWN, |
926 ui::DomKey::ALT}}, | 926 ui::DomKey::ALT}}, |
927 | 927 |
928 // Press Shift+Control+Alt+Search+B | 928 // Press Shift+Control+Alt+Search+B |
929 {ui::ET_KEY_PRESSED, | 929 {ui::ET_KEY_PRESSED, |
930 {ui::VKEY_B, ui::DomCode::KEY_B, | 930 {ui::VKEY_B, ui::DomCode::US_B, |
931 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | | 931 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | |
932 ui::EF_COMMAND_DOWN, | 932 ui::EF_COMMAND_DOWN, |
933 ui::DomKey::Constant<'B'>::Character}, | 933 ui::DomKey::Constant<'B'>::Character}, |
934 {ui::VKEY_B, ui::DomCode::KEY_B, | 934 {ui::VKEY_B, ui::DomCode::US_B, |
935 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | | 935 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | |
936 ui::EF_COMMAND_DOWN, | 936 ui::EF_COMMAND_DOWN, |
937 ui::DomKey::Constant<'B'>::Character}}, | 937 ui::DomKey::Constant<'B'>::Character}}, |
938 }; | 938 }; |
939 | 939 |
940 for (const auto& test : c2s_tests) { | 940 for (const auto& test : c2s_tests) { |
941 CheckKeyTestCase(&rewriter, test); | 941 CheckKeyTestCase(&rewriter, test); |
942 } | 942 } |
943 } | 943 } |
944 | 944 |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1076 ui::DomKey::CONTROL}}, | 1076 ui::DomKey::CONTROL}}, |
1077 | 1077 |
1078 {ui::ET_KEY_RELEASED, | 1078 {ui::ET_KEY_RELEASED, |
1079 {ui::VKEY_F15, ui::DomCode::F15, ui::EF_NONE, ui::DomKey::F15}, | 1079 {ui::VKEY_F15, ui::DomCode::F15, ui::EF_NONE, ui::DomKey::F15}, |
1080 {ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, ui::EF_NONE, | 1080 {ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, ui::EF_NONE, |
1081 ui::DomKey::CONTROL}}, | 1081 ui::DomKey::CONTROL}}, |
1082 | 1082 |
1083 // However, Mod2Mask should not be rewritten to CtrlMask when | 1083 // However, Mod2Mask should not be rewritten to CtrlMask when |
1084 // --has-chromeos-diamond-key is not specified. | 1084 // --has-chromeos-diamond-key is not specified. |
1085 {ui::ET_KEY_PRESSED, | 1085 {ui::ET_KEY_PRESSED, |
1086 {ui::VKEY_A, ui::DomCode::KEY_A, ui::EF_NONE, | 1086 {ui::VKEY_A, ui::DomCode::US_A, ui::EF_NONE, |
1087 ui::DomKey::Constant<'a'>::Character}, | 1087 ui::DomKey::Constant<'a'>::Character}, |
1088 {ui::VKEY_A, ui::DomCode::KEY_A, ui::EF_NONE, | 1088 {ui::VKEY_A, ui::DomCode::US_A, ui::EF_NONE, |
1089 ui::DomKey::Constant<'a'>::Character}}, | 1089 ui::DomKey::Constant<'a'>::Character}}, |
1090 }; | 1090 }; |
1091 | 1091 |
1092 for (const auto& test : tests) { | 1092 for (const auto& test : tests) { |
1093 CheckKeyTestCase(&rewriter, test); | 1093 CheckKeyTestCase(&rewriter, test); |
1094 } | 1094 } |
1095 } | 1095 } |
1096 | 1096 |
1097 TEST_F(EventRewriterTest, TestRewriteDiamondKeyWithFlag) { | 1097 TEST_F(EventRewriterTest, TestRewriteDiamondKeyWithFlag) { |
1098 const base::CommandLine original_cl(*base::CommandLine::ForCurrentProcess()); | 1098 const base::CommandLine original_cl(*base::CommandLine::ForCurrentProcess()); |
(...skipping 11 matching lines...) Expand all Loading... |
1110 | 1110 |
1111 // By default, F15 should work as Control. | 1111 // By default, F15 should work as Control. |
1112 EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_PRESSED, ui::VKEY_CONTROL, | 1112 EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_PRESSED, ui::VKEY_CONTROL, |
1113 ui::DomCode::CONTROL_LEFT, | 1113 ui::DomCode::CONTROL_LEFT, |
1114 ui::EF_CONTROL_DOWN, ui::DomKey::CONTROL), | 1114 ui::EF_CONTROL_DOWN, ui::DomKey::CONTROL), |
1115 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_PRESSED, | 1115 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_PRESSED, |
1116 ui::VKEY_F15, ui::DomCode::F15, | 1116 ui::VKEY_F15, ui::DomCode::F15, |
1117 ui::EF_NONE, ui::DomKey::F15)); | 1117 ui::EF_NONE, ui::DomKey::F15)); |
1118 // Check that Control is applied to a subsequent key press. | 1118 // Check that Control is applied to a subsequent key press. |
1119 EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_PRESSED, ui::VKEY_A, | 1119 EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_PRESSED, ui::VKEY_A, |
1120 ui::DomCode::KEY_A, ui::EF_CONTROL_DOWN, | 1120 ui::DomCode::US_A, ui::EF_CONTROL_DOWN, |
1121 ui::DomKey::Constant<'a'>::Character), | 1121 ui::DomKey::Constant<'a'>::Character), |
1122 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_PRESSED, ui::VKEY_A, | 1122 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_PRESSED, ui::VKEY_A, |
1123 ui::DomCode::KEY_A, ui::EF_NONE, | 1123 ui::DomCode::US_A, ui::EF_NONE, |
1124 ui::DomKey::Constant<'a'>::Character)); | 1124 ui::DomKey::Constant<'a'>::Character)); |
1125 // Release F15 | 1125 // Release F15 |
1126 EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_RELEASED, ui::VKEY_CONTROL, | 1126 EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_RELEASED, ui::VKEY_CONTROL, |
1127 ui::DomCode::CONTROL_LEFT, ui::EF_NONE, | 1127 ui::DomCode::CONTROL_LEFT, ui::EF_NONE, |
1128 ui::DomKey::CONTROL), | 1128 ui::DomKey::CONTROL), |
1129 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_RELEASED, | 1129 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_RELEASED, |
1130 ui::VKEY_F15, ui::DomCode::F15, | 1130 ui::VKEY_F15, ui::DomCode::F15, |
1131 ui::EF_NONE, ui::DomKey::F15)); | 1131 ui::EF_NONE, ui::DomKey::F15)); |
1132 // Check that Control is no longer applied to a subsequent key press. | 1132 // Check that Control is no longer applied to a subsequent key press. |
1133 EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_PRESSED, ui::VKEY_A, | 1133 EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_PRESSED, ui::VKEY_A, |
1134 ui::DomCode::KEY_A, ui::EF_NONE, | 1134 ui::DomCode::US_A, ui::EF_NONE, |
1135 ui::DomKey::Constant<'a'>::Character), | 1135 ui::DomKey::Constant<'a'>::Character), |
1136 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_PRESSED, ui::VKEY_A, | 1136 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_PRESSED, ui::VKEY_A, |
1137 ui::DomCode::KEY_A, ui::EF_NONE, | 1137 ui::DomCode::US_A, ui::EF_NONE, |
1138 ui::DomKey::Constant<'a'>::Character)); | 1138 ui::DomKey::Constant<'a'>::Character)); |
1139 | 1139 |
1140 IntegerPrefMember diamond; | 1140 IntegerPrefMember diamond; |
1141 diamond.Init(prefs::kLanguageRemapDiamondKeyTo, &prefs); | 1141 diamond.Init(prefs::kLanguageRemapDiamondKeyTo, &prefs); |
1142 diamond.SetValue(chromeos::input_method::kVoidKey); | 1142 diamond.SetValue(chromeos::input_method::kVoidKey); |
1143 | 1143 |
1144 EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_PRESSED, ui::VKEY_UNKNOWN, | 1144 EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_PRESSED, ui::VKEY_UNKNOWN, |
1145 ui::DomCode::NONE, ui::EF_NONE, | 1145 ui::DomCode::NONE, ui::EF_NONE, |
1146 ui::DomKey::UNIDENTIFIED), | 1146 ui::DomKey::UNIDENTIFIED), |
1147 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_PRESSED, | 1147 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_PRESSED, |
1148 ui::VKEY_F15, ui::DomCode::F15, | 1148 ui::VKEY_F15, ui::DomCode::F15, |
1149 ui::EF_NONE, ui::DomKey::F15)); | 1149 ui::EF_NONE, ui::DomKey::F15)); |
1150 // Check that no modifier is applied to another key. | 1150 // Check that no modifier is applied to another key. |
1151 EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_PRESSED, ui::VKEY_A, | 1151 EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_PRESSED, ui::VKEY_A, |
1152 ui::DomCode::KEY_A, ui::EF_NONE, | 1152 ui::DomCode::US_A, ui::EF_NONE, |
1153 ui::DomKey::Constant<'a'>::Character), | 1153 ui::DomKey::Constant<'a'>::Character), |
1154 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_PRESSED, ui::VKEY_A, | 1154 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_PRESSED, ui::VKEY_A, |
1155 ui::DomCode::KEY_A, ui::EF_NONE, | 1155 ui::DomCode::US_A, ui::EF_NONE, |
1156 ui::DomKey::Constant<'a'>::Character)); | 1156 ui::DomKey::Constant<'a'>::Character)); |
1157 | 1157 |
1158 diamond.SetValue(chromeos::input_method::kControlKey); | 1158 diamond.SetValue(chromeos::input_method::kControlKey); |
1159 | 1159 |
1160 EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_PRESSED, ui::VKEY_CONTROL, | 1160 EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_PRESSED, ui::VKEY_CONTROL, |
1161 ui::DomCode::CONTROL_LEFT, | 1161 ui::DomCode::CONTROL_LEFT, |
1162 ui::EF_CONTROL_DOWN, ui::DomKey::CONTROL), | 1162 ui::EF_CONTROL_DOWN, ui::DomKey::CONTROL), |
1163 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_PRESSED, | 1163 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_PRESSED, |
1164 ui::VKEY_F15, ui::DomCode::F15, | 1164 ui::VKEY_F15, ui::DomCode::F15, |
1165 ui::EF_NONE, ui::DomKey::F15)); | 1165 ui::EF_NONE, ui::DomKey::F15)); |
1166 // Check that Control is applied to a subsequent key press. | 1166 // Check that Control is applied to a subsequent key press. |
1167 EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_PRESSED, ui::VKEY_A, | 1167 EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_PRESSED, ui::VKEY_A, |
1168 ui::DomCode::KEY_A, ui::EF_CONTROL_DOWN, | 1168 ui::DomCode::US_A, ui::EF_CONTROL_DOWN, |
1169 ui::DomKey::Constant<'a'>::Character), | 1169 ui::DomKey::Constant<'a'>::Character), |
1170 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_PRESSED, ui::VKEY_A, | 1170 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_PRESSED, ui::VKEY_A, |
1171 ui::DomCode::KEY_A, ui::EF_NONE, | 1171 ui::DomCode::US_A, ui::EF_NONE, |
1172 ui::DomKey::Constant<'a'>::Character)); | 1172 ui::DomKey::Constant<'a'>::Character)); |
1173 // Release F15 | 1173 // Release F15 |
1174 EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_RELEASED, ui::VKEY_CONTROL, | 1174 EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_RELEASED, ui::VKEY_CONTROL, |
1175 ui::DomCode::CONTROL_LEFT, ui::EF_NONE, | 1175 ui::DomCode::CONTROL_LEFT, ui::EF_NONE, |
1176 ui::DomKey::CONTROL), | 1176 ui::DomKey::CONTROL), |
1177 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_RELEASED, | 1177 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_RELEASED, |
1178 ui::VKEY_F15, ui::DomCode::F15, | 1178 ui::VKEY_F15, ui::DomCode::F15, |
1179 ui::EF_NONE, ui::DomKey::F15)); | 1179 ui::EF_NONE, ui::DomKey::F15)); |
1180 // Check that Control is no longer applied to a subsequent key press. | 1180 // Check that Control is no longer applied to a subsequent key press. |
1181 EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_PRESSED, ui::VKEY_A, | 1181 EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_PRESSED, ui::VKEY_A, |
1182 ui::DomCode::KEY_A, ui::EF_NONE, | 1182 ui::DomCode::US_A, ui::EF_NONE, |
1183 ui::DomKey::Constant<'a'>::Character), | 1183 ui::DomKey::Constant<'a'>::Character), |
1184 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_PRESSED, ui::VKEY_A, | 1184 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_PRESSED, ui::VKEY_A, |
1185 ui::DomCode::KEY_A, ui::EF_NONE, | 1185 ui::DomCode::US_A, ui::EF_NONE, |
1186 ui::DomKey::Constant<'a'>::Character)); | 1186 ui::DomKey::Constant<'a'>::Character)); |
1187 | 1187 |
1188 diamond.SetValue(chromeos::input_method::kAltKey); | 1188 diamond.SetValue(chromeos::input_method::kAltKey); |
1189 | 1189 |
1190 EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_PRESSED, ui::VKEY_MENU, | 1190 EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_PRESSED, ui::VKEY_MENU, |
1191 ui::DomCode::ALT_LEFT, ui::EF_ALT_DOWN, | 1191 ui::DomCode::ALT_LEFT, ui::EF_ALT_DOWN, |
1192 ui::DomKey::ALT), | 1192 ui::DomKey::ALT), |
1193 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_PRESSED, | 1193 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_PRESSED, |
1194 ui::VKEY_F15, ui::DomCode::F15, | 1194 ui::VKEY_F15, ui::DomCode::F15, |
1195 ui::EF_NONE, ui::DomKey::F15)); | 1195 ui::EF_NONE, ui::DomKey::F15)); |
1196 // Check that Alt is applied to a subsequent key press. | 1196 // Check that Alt is applied to a subsequent key press. |
1197 EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_PRESSED, ui::VKEY_A, | 1197 EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_PRESSED, ui::VKEY_A, |
1198 ui::DomCode::KEY_A, ui::EF_ALT_DOWN, | 1198 ui::DomCode::US_A, ui::EF_ALT_DOWN, |
1199 ui::DomKey::Constant<'a'>::Character), | 1199 ui::DomKey::Constant<'a'>::Character), |
1200 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_PRESSED, ui::VKEY_A, | 1200 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_PRESSED, ui::VKEY_A, |
1201 ui::DomCode::KEY_A, ui::EF_NONE, | 1201 ui::DomCode::US_A, ui::EF_NONE, |
1202 ui::DomKey::Constant<'a'>::Character)); | 1202 ui::DomKey::Constant<'a'>::Character)); |
1203 // Release F15 | 1203 // Release F15 |
1204 EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_RELEASED, ui::VKEY_MENU, | 1204 EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_RELEASED, ui::VKEY_MENU, |
1205 ui::DomCode::ALT_LEFT, ui::EF_NONE, | 1205 ui::DomCode::ALT_LEFT, ui::EF_NONE, |
1206 ui::DomKey::ALT), | 1206 ui::DomKey::ALT), |
1207 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_RELEASED, | 1207 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_RELEASED, |
1208 ui::VKEY_F15, ui::DomCode::F15, | 1208 ui::VKEY_F15, ui::DomCode::F15, |
1209 ui::EF_NONE, ui::DomKey::F15)); | 1209 ui::EF_NONE, ui::DomKey::F15)); |
1210 // Check that Alt is no longer applied to a subsequent key press. | 1210 // Check that Alt is no longer applied to a subsequent key press. |
1211 EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_PRESSED, ui::VKEY_A, | 1211 EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_PRESSED, ui::VKEY_A, |
1212 ui::DomCode::KEY_A, ui::EF_NONE, | 1212 ui::DomCode::US_A, ui::EF_NONE, |
1213 ui::DomKey::Constant<'a'>::Character), | 1213 ui::DomKey::Constant<'a'>::Character), |
1214 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_PRESSED, ui::VKEY_A, | 1214 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_PRESSED, ui::VKEY_A, |
1215 ui::DomCode::KEY_A, ui::EF_NONE, | 1215 ui::DomCode::US_A, ui::EF_NONE, |
1216 ui::DomKey::Constant<'a'>::Character)); | 1216 ui::DomKey::Constant<'a'>::Character)); |
1217 | 1217 |
1218 diamond.SetValue(chromeos::input_method::kCapsLockKey); | 1218 diamond.SetValue(chromeos::input_method::kCapsLockKey); |
1219 | 1219 |
1220 EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_PRESSED, ui::VKEY_CAPITAL, | 1220 EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_PRESSED, ui::VKEY_CAPITAL, |
1221 ui::DomCode::CAPS_LOCK, | 1221 ui::DomCode::CAPS_LOCK, |
1222 ui::EF_CAPS_LOCK_DOWN | ui::EF_MOD3_DOWN, | 1222 ui::EF_CAPS_LOCK_DOWN | ui::EF_MOD3_DOWN, |
1223 ui::DomKey::CAPS_LOCK), | 1223 ui::DomKey::CAPS_LOCK), |
1224 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_PRESSED, | 1224 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_PRESSED, |
1225 ui::VKEY_F15, ui::DomCode::F15, | 1225 ui::VKEY_F15, ui::DomCode::F15, |
1226 ui::EF_NONE, ui::DomKey::F15)); | 1226 ui::EF_NONE, ui::DomKey::F15)); |
1227 // Check that Caps is applied to a subsequent key press. | 1227 // Check that Caps is applied to a subsequent key press. |
1228 EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_PRESSED, ui::VKEY_A, | 1228 EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_PRESSED, ui::VKEY_A, |
1229 ui::DomCode::KEY_A, | 1229 ui::DomCode::US_A, |
1230 ui::EF_CAPS_LOCK_DOWN | ui::EF_MOD3_DOWN, | 1230 ui::EF_CAPS_LOCK_DOWN | ui::EF_MOD3_DOWN, |
1231 ui::DomKey::Constant<'A'>::Character), | 1231 ui::DomKey::Constant<'A'>::Character), |
1232 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_PRESSED, ui::VKEY_A, | 1232 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_PRESSED, ui::VKEY_A, |
1233 ui::DomCode::KEY_A, ui::EF_NONE, | 1233 ui::DomCode::US_A, ui::EF_NONE, |
1234 ui::DomKey::Constant<'a'>::Character)); | 1234 ui::DomKey::Constant<'a'>::Character)); |
1235 // Release F15 | 1235 // Release F15 |
1236 EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_RELEASED, ui::VKEY_CAPITAL, | 1236 EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_RELEASED, ui::VKEY_CAPITAL, |
1237 ui::DomCode::CAPS_LOCK, ui::EF_NONE, | 1237 ui::DomCode::CAPS_LOCK, ui::EF_NONE, |
1238 ui::DomKey::CAPS_LOCK), | 1238 ui::DomKey::CAPS_LOCK), |
1239 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_RELEASED, | 1239 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_RELEASED, |
1240 ui::VKEY_F15, ui::DomCode::F15, | 1240 ui::VKEY_F15, ui::DomCode::F15, |
1241 ui::EF_NONE, ui::DomKey::F15)); | 1241 ui::EF_NONE, ui::DomKey::F15)); |
1242 // Check that Control is no longer applied to a subsequent key press. | 1242 // Check that Control is no longer applied to a subsequent key press. |
1243 EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_PRESSED, ui::VKEY_A, | 1243 EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_PRESSED, ui::VKEY_A, |
1244 ui::DomCode::KEY_A, ui::EF_NONE, | 1244 ui::DomCode::US_A, ui::EF_NONE, |
1245 ui::DomKey::Constant<'a'>::Character), | 1245 ui::DomKey::Constant<'a'>::Character), |
1246 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_PRESSED, ui::VKEY_A, | 1246 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_PRESSED, ui::VKEY_A, |
1247 ui::DomCode::KEY_A, ui::EF_NONE, | 1247 ui::DomCode::US_A, ui::EF_NONE, |
1248 ui::DomKey::Constant<'a'>::Character)); | 1248 ui::DomKey::Constant<'a'>::Character)); |
1249 | 1249 |
1250 *base::CommandLine::ForCurrentProcess() = original_cl; | 1250 *base::CommandLine::ForCurrentProcess() = original_cl; |
1251 } | 1251 } |
1252 | 1252 |
1253 TEST_F(EventRewriterTest, TestRewriteCapsLockToControl) { | 1253 TEST_F(EventRewriterTest, TestRewriteCapsLockToControl) { |
1254 // Remap CapsLock to Control. | 1254 // Remap CapsLock to Control. |
1255 syncable_prefs::TestingPrefServiceSyncable prefs; | 1255 syncable_prefs::TestingPrefServiceSyncable prefs; |
1256 chromeos::Preferences::RegisterProfilePrefs(prefs.registry()); | 1256 chromeos::Preferences::RegisterProfilePrefs(prefs.registry()); |
1257 IntegerPrefMember control; | 1257 IntegerPrefMember control; |
1258 control.Init(prefs::kLanguageRemapCapsLockKeyTo, &prefs); | 1258 control.Init(prefs::kLanguageRemapCapsLockKeyTo, &prefs); |
1259 control.SetValue(chromeos::input_method::kControlKey); | 1259 control.SetValue(chromeos::input_method::kControlKey); |
1260 | 1260 |
1261 EventRewriter rewriter(NULL); | 1261 EventRewriter rewriter(NULL); |
1262 rewriter.KeyboardDeviceAddedForTesting(kKeyboardDeviceId, "PC Keyboard"); | 1262 rewriter.KeyboardDeviceAddedForTesting(kKeyboardDeviceId, "PC Keyboard"); |
1263 rewriter.set_pref_service_for_testing(&prefs); | 1263 rewriter.set_pref_service_for_testing(&prefs); |
1264 | 1264 |
1265 KeyTestCase tests[] = { | 1265 KeyTestCase tests[] = { |
1266 // Press CapsLock+a. Confirm that Mod3Mask is rewritten to ControlMask. | 1266 // Press CapsLock+a. Confirm that Mod3Mask is rewritten to ControlMask. |
1267 // On Chrome OS, CapsLock works as a Mod3 modifier. | 1267 // On Chrome OS, CapsLock works as a Mod3 modifier. |
1268 {ui::ET_KEY_PRESSED, | 1268 {ui::ET_KEY_PRESSED, |
1269 {ui::VKEY_A, ui::DomCode::KEY_A, ui::EF_MOD3_DOWN, | 1269 {ui::VKEY_A, ui::DomCode::US_A, ui::EF_MOD3_DOWN, |
1270 ui::DomKey::Constant<'a'>::Character}, | 1270 ui::DomKey::Constant<'a'>::Character}, |
1271 {ui::VKEY_A, ui::DomCode::KEY_A, ui::EF_CONTROL_DOWN, | 1271 {ui::VKEY_A, ui::DomCode::US_A, ui::EF_CONTROL_DOWN, |
1272 ui::DomKey::Constant<'a'>::Character}}, | 1272 ui::DomKey::Constant<'a'>::Character}}, |
1273 | 1273 |
1274 // Press Control+CapsLock+a. Confirm that Mod3Mask is rewritten to | 1274 // Press Control+CapsLock+a. Confirm that Mod3Mask is rewritten to |
1275 // ControlMask | 1275 // ControlMask |
1276 {ui::ET_KEY_PRESSED, | 1276 {ui::ET_KEY_PRESSED, |
1277 {ui::VKEY_A, ui::DomCode::KEY_A, ui::EF_CONTROL_DOWN | ui::EF_MOD3_DOWN, | 1277 {ui::VKEY_A, ui::DomCode::US_A, ui::EF_CONTROL_DOWN | ui::EF_MOD3_DOWN, |
1278 ui::DomKey::Constant<'a'>::Character}, | 1278 ui::DomKey::Constant<'a'>::Character}, |
1279 {ui::VKEY_A, ui::DomCode::KEY_A, ui::EF_CONTROL_DOWN, | 1279 {ui::VKEY_A, ui::DomCode::US_A, ui::EF_CONTROL_DOWN, |
1280 ui::DomKey::Constant<'a'>::Character}}, | 1280 ui::DomKey::Constant<'a'>::Character}}, |
1281 | 1281 |
1282 // Press Alt+CapsLock+a. Confirm that Mod3Mask is rewritten to | 1282 // Press Alt+CapsLock+a. Confirm that Mod3Mask is rewritten to |
1283 // ControlMask. | 1283 // ControlMask. |
1284 {ui::ET_KEY_PRESSED, | 1284 {ui::ET_KEY_PRESSED, |
1285 {ui::VKEY_A, ui::DomCode::KEY_A, ui::EF_ALT_DOWN | ui::EF_MOD3_DOWN, | 1285 {ui::VKEY_A, ui::DomCode::US_A, ui::EF_ALT_DOWN | ui::EF_MOD3_DOWN, |
1286 ui::DomKey::Constant<'a'>::Character}, | 1286 ui::DomKey::Constant<'a'>::Character}, |
1287 {ui::VKEY_A, ui::DomCode::KEY_A, ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, | 1287 {ui::VKEY_A, ui::DomCode::US_A, ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, |
1288 ui::DomKey::Constant<'a'>::Character}}, | 1288 ui::DomKey::Constant<'a'>::Character}}, |
1289 }; | 1289 }; |
1290 | 1290 |
1291 for (const auto& test : tests) { | 1291 for (const auto& test : tests) { |
1292 CheckKeyTestCase(&rewriter, test); | 1292 CheckKeyTestCase(&rewriter, test); |
1293 } | 1293 } |
1294 } | 1294 } |
1295 | 1295 |
1296 TEST_F(EventRewriterTest, TestRewriteCapsLockMod3InUse) { | 1296 TEST_F(EventRewriterTest, TestRewriteCapsLockMod3InUse) { |
1297 // Remap CapsLock to Control. | 1297 // Remap CapsLock to Control. |
1298 syncable_prefs::TestingPrefServiceSyncable prefs; | 1298 syncable_prefs::TestingPrefServiceSyncable prefs; |
1299 chromeos::Preferences::RegisterProfilePrefs(prefs.registry()); | 1299 chromeos::Preferences::RegisterProfilePrefs(prefs.registry()); |
1300 IntegerPrefMember control; | 1300 IntegerPrefMember control; |
1301 control.Init(prefs::kLanguageRemapCapsLockKeyTo, &prefs); | 1301 control.Init(prefs::kLanguageRemapCapsLockKeyTo, &prefs); |
1302 control.SetValue(chromeos::input_method::kControlKey); | 1302 control.SetValue(chromeos::input_method::kControlKey); |
1303 | 1303 |
1304 EventRewriter rewriter(NULL); | 1304 EventRewriter rewriter(NULL); |
1305 rewriter.KeyboardDeviceAddedForTesting(kKeyboardDeviceId, "PC Keyboard"); | 1305 rewriter.KeyboardDeviceAddedForTesting(kKeyboardDeviceId, "PC Keyboard"); |
1306 rewriter.set_pref_service_for_testing(&prefs); | 1306 rewriter.set_pref_service_for_testing(&prefs); |
1307 input_method_manager_mock_->set_mod3_used(true); | 1307 input_method_manager_mock_->set_mod3_used(true); |
1308 | 1308 |
1309 // Press CapsLock+a. Confirm that Mod3Mask is NOT rewritten to ControlMask | 1309 // Press CapsLock+a. Confirm that Mod3Mask is NOT rewritten to ControlMask |
1310 // when Mod3Mask is already in use by the current XKB layout. | 1310 // when Mod3Mask is already in use by the current XKB layout. |
1311 EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_PRESSED, ui::VKEY_A, | 1311 EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_PRESSED, ui::VKEY_A, |
1312 ui::DomCode::KEY_A, ui::EF_NONE, | 1312 ui::DomCode::US_A, ui::EF_NONE, |
1313 ui::DomKey::Constant<'a'>::Character), | 1313 ui::DomKey::Constant<'a'>::Character), |
1314 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_PRESSED, ui::VKEY_A, | 1314 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_PRESSED, ui::VKEY_A, |
1315 ui::DomCode::KEY_A, ui::EF_NONE, | 1315 ui::DomCode::US_A, ui::EF_NONE, |
1316 ui::DomKey::Constant<'a'>::Character)); | 1316 ui::DomKey::Constant<'a'>::Character)); |
1317 | 1317 |
1318 input_method_manager_mock_->set_mod3_used(false); | 1318 input_method_manager_mock_->set_mod3_used(false); |
1319 } | 1319 } |
1320 | 1320 |
1321 TEST_F(EventRewriterTest, TestRewriteExtendedKeys) { | 1321 TEST_F(EventRewriterTest, TestRewriteExtendedKeys) { |
1322 syncable_prefs::TestingPrefServiceSyncable prefs; | 1322 syncable_prefs::TestingPrefServiceSyncable prefs; |
1323 chromeos::Preferences::RegisterProfilePrefs(prefs.registry()); | 1323 chromeos::Preferences::RegisterProfilePrefs(prefs.registry()); |
1324 EventRewriter rewriter(NULL); | 1324 EventRewriter rewriter(NULL); |
1325 rewriter.KeyboardDeviceAddedForTesting(kKeyboardDeviceId, "PC Keyboard"); | 1325 rewriter.KeyboardDeviceAddedForTesting(kKeyboardDeviceId, "PC Keyboard"); |
(...skipping 975 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2301 SendActivateStickyKeyPattern(ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, | 2301 SendActivateStickyKeyPattern(ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, |
2302 ui::DomKey::CONTROL); | 2302 ui::DomKey::CONTROL); |
2303 PopEvents(&events); | 2303 PopEvents(&events); |
2304 EXPECT_EQ(1u, events.size()); | 2304 EXPECT_EQ(1u, events.size()); |
2305 EXPECT_EQ(ui::ET_KEY_PRESSED, events[0]->type()); | 2305 EXPECT_EQ(ui::ET_KEY_PRESSED, events[0]->type()); |
2306 EXPECT_EQ(ui::VKEY_CONTROL, | 2306 EXPECT_EQ(ui::VKEY_CONTROL, |
2307 static_cast<ui::KeyEvent*>(events[0])->key_code()); | 2307 static_cast<ui::KeyEvent*>(events[0])->key_code()); |
2308 | 2308 |
2309 // Test key press event is correctly modified and modifier release | 2309 // Test key press event is correctly modified and modifier release |
2310 // event is sent. | 2310 // event is sent. |
2311 ui::KeyEvent press(ui::ET_KEY_PRESSED, ui::VKEY_C, ui::DomCode::KEY_C, | 2311 ui::KeyEvent press(ui::ET_KEY_PRESSED, ui::VKEY_C, ui::DomCode::US_C, |
2312 ui::EF_NONE, ui::DomKey::Constant<'c'>::Character, | 2312 ui::EF_NONE, ui::DomKey::Constant<'c'>::Character, |
2313 ui::EventTimeForNow()); | 2313 ui::EventTimeForNow()); |
2314 ui::EventDispatchDetails details = Send(&press); | 2314 ui::EventDispatchDetails details = Send(&press); |
2315 PopEvents(&events); | 2315 PopEvents(&events); |
2316 EXPECT_EQ(2u, events.size()); | 2316 EXPECT_EQ(2u, events.size()); |
2317 EXPECT_EQ(ui::ET_KEY_PRESSED, events[0]->type()); | 2317 EXPECT_EQ(ui::ET_KEY_PRESSED, events[0]->type()); |
2318 EXPECT_EQ(ui::VKEY_C, static_cast<ui::KeyEvent*>(events[0])->key_code()); | 2318 EXPECT_EQ(ui::VKEY_C, static_cast<ui::KeyEvent*>(events[0])->key_code()); |
2319 EXPECT_TRUE(events[0]->flags() & ui::EF_CONTROL_DOWN); | 2319 EXPECT_TRUE(events[0]->flags() & ui::EF_CONTROL_DOWN); |
2320 EXPECT_EQ(ui::ET_KEY_RELEASED, events[1]->type()); | 2320 EXPECT_EQ(ui::ET_KEY_RELEASED, events[1]->type()); |
2321 EXPECT_EQ(ui::VKEY_CONTROL, | 2321 EXPECT_EQ(ui::VKEY_CONTROL, |
2322 static_cast<ui::KeyEvent*>(events[1])->key_code()); | 2322 static_cast<ui::KeyEvent*>(events[1])->key_code()); |
2323 | 2323 |
2324 // Test key release event is not modified. | 2324 // Test key release event is not modified. |
2325 ui::KeyEvent release(ui::ET_KEY_RELEASED, ui::VKEY_C, ui::DomCode::KEY_C, | 2325 ui::KeyEvent release(ui::ET_KEY_RELEASED, ui::VKEY_C, ui::DomCode::US_C, |
2326 ui::EF_NONE, ui::DomKey::Constant<'c'>::Character, | 2326 ui::EF_NONE, ui::DomKey::Constant<'c'>::Character, |
2327 ui::EventTimeForNow()); | 2327 ui::EventTimeForNow()); |
2328 details = Send(&release); | 2328 details = Send(&release); |
2329 ASSERT_FALSE(details.dispatcher_destroyed); | 2329 ASSERT_FALSE(details.dispatcher_destroyed); |
2330 PopEvents(&events); | 2330 PopEvents(&events); |
2331 EXPECT_EQ(1u, events.size()); | 2331 EXPECT_EQ(1u, events.size()); |
2332 EXPECT_EQ(ui::ET_KEY_RELEASED, events[0]->type()); | 2332 EXPECT_EQ(ui::ET_KEY_RELEASED, events[0]->type()); |
2333 EXPECT_EQ(ui::VKEY_C, static_cast<ui::KeyEvent*>(events[0])->key_code()); | 2333 EXPECT_EQ(ui::VKEY_C, static_cast<ui::KeyEvent*>(events[0])->key_code()); |
2334 EXPECT_FALSE(events[0]->flags() & ui::EF_CONTROL_DOWN); | 2334 EXPECT_FALSE(events[0]->flags() & ui::EF_CONTROL_DOWN); |
2335 } | 2335 } |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2430 overlay_->GetModifierKeyState(ui::EF_CONTROL_DOWN)); | 2430 overlay_->GetModifierKeyState(ui::EF_CONTROL_DOWN)); |
2431 | 2431 |
2432 // Pressing modifier key should show overlay. | 2432 // Pressing modifier key should show overlay. |
2433 SendActivateStickyKeyPattern(ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, | 2433 SendActivateStickyKeyPattern(ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, |
2434 ui::DomKey::CONTROL); | 2434 ui::DomKey::CONTROL); |
2435 EXPECT_TRUE(overlay_->is_visible()); | 2435 EXPECT_TRUE(overlay_->is_visible()); |
2436 EXPECT_EQ(ash::STICKY_KEY_STATE_ENABLED, | 2436 EXPECT_EQ(ash::STICKY_KEY_STATE_ENABLED, |
2437 overlay_->GetModifierKeyState(ui::EF_CONTROL_DOWN)); | 2437 overlay_->GetModifierKeyState(ui::EF_CONTROL_DOWN)); |
2438 | 2438 |
2439 // Pressing a normal key should hide overlay. | 2439 // Pressing a normal key should hide overlay. |
2440 SendActivateStickyKeyPattern(ui::VKEY_T, ui::DomCode::KEY_T, | 2440 SendActivateStickyKeyPattern(ui::VKEY_T, ui::DomCode::US_T, |
2441 ui::DomKey::Constant<'t'>::Character); | 2441 ui::DomKey::Constant<'t'>::Character); |
2442 EXPECT_FALSE(overlay_->is_visible()); | 2442 EXPECT_FALSE(overlay_->is_visible()); |
2443 EXPECT_EQ(ash::STICKY_KEY_STATE_DISABLED, | 2443 EXPECT_EQ(ash::STICKY_KEY_STATE_DISABLED, |
2444 overlay_->GetModifierKeyState(ui::EF_CONTROL_DOWN)); | 2444 overlay_->GetModifierKeyState(ui::EF_CONTROL_DOWN)); |
2445 } | 2445 } |
2446 | 2446 |
2447 TEST_F(StickyKeysOverlayTest, TwoModifiersEnabled) { | 2447 TEST_F(StickyKeysOverlayTest, TwoModifiersEnabled) { |
2448 EXPECT_FALSE(overlay_->is_visible()); | 2448 EXPECT_FALSE(overlay_->is_visible()); |
2449 EXPECT_EQ(ash::STICKY_KEY_STATE_DISABLED, | 2449 EXPECT_EQ(ash::STICKY_KEY_STATE_DISABLED, |
2450 overlay_->GetModifierKeyState(ui::EF_CONTROL_DOWN)); | 2450 overlay_->GetModifierKeyState(ui::EF_CONTROL_DOWN)); |
2451 EXPECT_EQ(ash::STICKY_KEY_STATE_DISABLED, | 2451 EXPECT_EQ(ash::STICKY_KEY_STATE_DISABLED, |
2452 overlay_->GetModifierKeyState(ui::EF_SHIFT_DOWN)); | 2452 overlay_->GetModifierKeyState(ui::EF_SHIFT_DOWN)); |
2453 | 2453 |
2454 // Pressing two modifiers should show overlay. | 2454 // Pressing two modifiers should show overlay. |
2455 SendActivateStickyKeyPattern(ui::VKEY_SHIFT, ui::DomCode::SHIFT_LEFT, | 2455 SendActivateStickyKeyPattern(ui::VKEY_SHIFT, ui::DomCode::SHIFT_LEFT, |
2456 ui::DomKey::SHIFT); | 2456 ui::DomKey::SHIFT); |
2457 SendActivateStickyKeyPattern(ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, | 2457 SendActivateStickyKeyPattern(ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, |
2458 ui::DomKey::CONTROL); | 2458 ui::DomKey::CONTROL); |
2459 EXPECT_TRUE(overlay_->is_visible()); | 2459 EXPECT_TRUE(overlay_->is_visible()); |
2460 EXPECT_EQ(ash::STICKY_KEY_STATE_ENABLED, | 2460 EXPECT_EQ(ash::STICKY_KEY_STATE_ENABLED, |
2461 overlay_->GetModifierKeyState(ui::EF_SHIFT_DOWN)); | 2461 overlay_->GetModifierKeyState(ui::EF_SHIFT_DOWN)); |
2462 EXPECT_EQ(ash::STICKY_KEY_STATE_ENABLED, | 2462 EXPECT_EQ(ash::STICKY_KEY_STATE_ENABLED, |
2463 overlay_->GetModifierKeyState(ui::EF_CONTROL_DOWN)); | 2463 overlay_->GetModifierKeyState(ui::EF_CONTROL_DOWN)); |
2464 | 2464 |
2465 // Pressing a normal key should hide overlay. | 2465 // Pressing a normal key should hide overlay. |
2466 SendActivateStickyKeyPattern(ui::VKEY_N, ui::DomCode::KEY_N, | 2466 SendActivateStickyKeyPattern(ui::VKEY_N, ui::DomCode::US_N, |
2467 ui::DomKey::Constant<'n'>::Character); | 2467 ui::DomKey::Constant<'n'>::Character); |
2468 EXPECT_FALSE(overlay_->is_visible()); | 2468 EXPECT_FALSE(overlay_->is_visible()); |
2469 EXPECT_EQ(ash::STICKY_KEY_STATE_DISABLED, | 2469 EXPECT_EQ(ash::STICKY_KEY_STATE_DISABLED, |
2470 overlay_->GetModifierKeyState(ui::EF_CONTROL_DOWN)); | 2470 overlay_->GetModifierKeyState(ui::EF_CONTROL_DOWN)); |
2471 EXPECT_EQ(ash::STICKY_KEY_STATE_DISABLED, | 2471 EXPECT_EQ(ash::STICKY_KEY_STATE_DISABLED, |
2472 overlay_->GetModifierKeyState(ui::EF_SHIFT_DOWN)); | 2472 overlay_->GetModifierKeyState(ui::EF_SHIFT_DOWN)); |
2473 } | 2473 } |
2474 | 2474 |
2475 TEST_F(StickyKeysOverlayTest, LockedModifier) { | 2475 TEST_F(StickyKeysOverlayTest, LockedModifier) { |
2476 EXPECT_FALSE(overlay_->is_visible()); | 2476 EXPECT_FALSE(overlay_->is_visible()); |
2477 EXPECT_EQ(ash::STICKY_KEY_STATE_DISABLED, | 2477 EXPECT_EQ(ash::STICKY_KEY_STATE_DISABLED, |
2478 overlay_->GetModifierKeyState(ui::EF_ALT_DOWN)); | 2478 overlay_->GetModifierKeyState(ui::EF_ALT_DOWN)); |
2479 | 2479 |
2480 // Pressing a modifier key twice should lock modifier and show overlay. | 2480 // Pressing a modifier key twice should lock modifier and show overlay. |
2481 SendActivateStickyKeyPattern(ui::VKEY_LMENU, ui::DomCode::ALT_LEFT, | 2481 SendActivateStickyKeyPattern(ui::VKEY_LMENU, ui::DomCode::ALT_LEFT, |
2482 ui::DomKey::ALT); | 2482 ui::DomKey::ALT); |
2483 SendActivateStickyKeyPattern(ui::VKEY_LMENU, ui::DomCode::ALT_LEFT, | 2483 SendActivateStickyKeyPattern(ui::VKEY_LMENU, ui::DomCode::ALT_LEFT, |
2484 ui::DomKey::ALT); | 2484 ui::DomKey::ALT); |
2485 EXPECT_TRUE(overlay_->is_visible()); | 2485 EXPECT_TRUE(overlay_->is_visible()); |
2486 EXPECT_EQ(ash::STICKY_KEY_STATE_LOCKED, | 2486 EXPECT_EQ(ash::STICKY_KEY_STATE_LOCKED, |
2487 overlay_->GetModifierKeyState(ui::EF_ALT_DOWN)); | 2487 overlay_->GetModifierKeyState(ui::EF_ALT_DOWN)); |
2488 | 2488 |
2489 // Pressing a normal key should not hide overlay. | 2489 // Pressing a normal key should not hide overlay. |
2490 SendActivateStickyKeyPattern(ui::VKEY_D, ui::DomCode::KEY_D, | 2490 SendActivateStickyKeyPattern(ui::VKEY_D, ui::DomCode::US_D, |
2491 ui::DomKey::Constant<'d'>::Character); | 2491 ui::DomKey::Constant<'d'>::Character); |
2492 EXPECT_TRUE(overlay_->is_visible()); | 2492 EXPECT_TRUE(overlay_->is_visible()); |
2493 EXPECT_EQ(ash::STICKY_KEY_STATE_LOCKED, | 2493 EXPECT_EQ(ash::STICKY_KEY_STATE_LOCKED, |
2494 overlay_->GetModifierKeyState(ui::EF_ALT_DOWN)); | 2494 overlay_->GetModifierKeyState(ui::EF_ALT_DOWN)); |
2495 } | 2495 } |
2496 | 2496 |
2497 TEST_F(StickyKeysOverlayTest, LockedAndNormalModifier) { | 2497 TEST_F(StickyKeysOverlayTest, LockedAndNormalModifier) { |
2498 EXPECT_FALSE(overlay_->is_visible()); | 2498 EXPECT_FALSE(overlay_->is_visible()); |
2499 EXPECT_EQ(ash::STICKY_KEY_STATE_DISABLED, | 2499 EXPECT_EQ(ash::STICKY_KEY_STATE_DISABLED, |
2500 overlay_->GetModifierKeyState(ui::EF_CONTROL_DOWN)); | 2500 overlay_->GetModifierKeyState(ui::EF_CONTROL_DOWN)); |
(...skipping 12 matching lines...) Expand all Loading... |
2513 // Pressing another modifier key should still show overlay. | 2513 // Pressing another modifier key should still show overlay. |
2514 SendActivateStickyKeyPattern(ui::VKEY_SHIFT, ui::DomCode::SHIFT_LEFT, | 2514 SendActivateStickyKeyPattern(ui::VKEY_SHIFT, ui::DomCode::SHIFT_LEFT, |
2515 ui::DomKey::SHIFT); | 2515 ui::DomKey::SHIFT); |
2516 EXPECT_TRUE(overlay_->is_visible()); | 2516 EXPECT_TRUE(overlay_->is_visible()); |
2517 EXPECT_EQ(ash::STICKY_KEY_STATE_LOCKED, | 2517 EXPECT_EQ(ash::STICKY_KEY_STATE_LOCKED, |
2518 overlay_->GetModifierKeyState(ui::EF_CONTROL_DOWN)); | 2518 overlay_->GetModifierKeyState(ui::EF_CONTROL_DOWN)); |
2519 EXPECT_EQ(ash::STICKY_KEY_STATE_ENABLED, | 2519 EXPECT_EQ(ash::STICKY_KEY_STATE_ENABLED, |
2520 overlay_->GetModifierKeyState(ui::EF_SHIFT_DOWN)); | 2520 overlay_->GetModifierKeyState(ui::EF_SHIFT_DOWN)); |
2521 | 2521 |
2522 // Pressing a normal key should not hide overlay but disable normal modifier. | 2522 // Pressing a normal key should not hide overlay but disable normal modifier. |
2523 SendActivateStickyKeyPattern(ui::VKEY_D, ui::DomCode::KEY_D, | 2523 SendActivateStickyKeyPattern(ui::VKEY_D, ui::DomCode::US_D, |
2524 ui::DomKey::Constant<'d'>::Character); | 2524 ui::DomKey::Constant<'d'>::Character); |
2525 EXPECT_TRUE(overlay_->is_visible()); | 2525 EXPECT_TRUE(overlay_->is_visible()); |
2526 EXPECT_EQ(ash::STICKY_KEY_STATE_LOCKED, | 2526 EXPECT_EQ(ash::STICKY_KEY_STATE_LOCKED, |
2527 overlay_->GetModifierKeyState(ui::EF_CONTROL_DOWN)); | 2527 overlay_->GetModifierKeyState(ui::EF_CONTROL_DOWN)); |
2528 EXPECT_EQ(ash::STICKY_KEY_STATE_DISABLED, | 2528 EXPECT_EQ(ash::STICKY_KEY_STATE_DISABLED, |
2529 overlay_->GetModifierKeyState(ui::EF_SHIFT_DOWN)); | 2529 overlay_->GetModifierKeyState(ui::EF_SHIFT_DOWN)); |
2530 } | 2530 } |
2531 | 2531 |
2532 TEST_F(StickyKeysOverlayTest, ModifiersDisabled) { | 2532 TEST_F(StickyKeysOverlayTest, ModifiersDisabled) { |
2533 EXPECT_FALSE(overlay_->is_visible()); | 2533 EXPECT_FALSE(overlay_->is_visible()); |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2617 EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_ALTGR_DOWN)); | 2617 EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_ALTGR_DOWN)); |
2618 EXPECT_TRUE(overlay_->GetModifierVisible(ui::EF_MOD3_DOWN)); | 2618 EXPECT_TRUE(overlay_->GetModifierVisible(ui::EF_MOD3_DOWN)); |
2619 | 2619 |
2620 // Turn off AltGr and Mod3. | 2620 // Turn off AltGr and Mod3. |
2621 sticky_keys_controller_->SetModifiersEnabled(false, false); | 2621 sticky_keys_controller_->SetModifiersEnabled(false, false); |
2622 EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_ALTGR_DOWN)); | 2622 EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_ALTGR_DOWN)); |
2623 EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_MOD3_DOWN)); | 2623 EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_MOD3_DOWN)); |
2624 } | 2624 } |
2625 | 2625 |
2626 } // namespace chromeos | 2626 } // namespace chromeos |
OLD | NEW |