Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(136)

Side by Side Diff: chrome/browser/chromeos/events/event_rewriter_unittest.cc

Issue 2250473006: Settings to remap Backspace and Escape keys (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@KeyboardRemapToCapsLockBackspace
Patch Set: rebase Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/common/wm/window_state.h" 9 #include "ash/common/wm/window_state.h"
10 #include "ash/shell.h" 10 #include "ash/shell.h"
(...skipping 587 matching lines...) Expand 10 before | Expand all | Expand 10 after
598 rewriter.set_pref_service_for_testing(&prefs); 598 rewriter.set_pref_service_for_testing(&prefs);
599 599
600 KeyTestCase tests[] = { 600 KeyTestCase tests[] = {
601 // Press Alt with Shift. Confirm the event is not rewritten. 601 // Press Alt with Shift. Confirm the event is not rewritten.
602 {ui::ET_KEY_PRESSED, 602 {ui::ET_KEY_PRESSED,
603 {ui::VKEY_MENU, ui::DomCode::ALT_LEFT, 603 {ui::VKEY_MENU, ui::DomCode::ALT_LEFT,
604 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, ui::DomKey::ALT}, 604 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, ui::DomKey::ALT},
605 {ui::VKEY_MENU, ui::DomCode::ALT_LEFT, 605 {ui::VKEY_MENU, ui::DomCode::ALT_LEFT,
606 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, ui::DomKey::ALT}}, 606 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, ui::DomKey::ALT}},
607 607
608 // Press Escape with Alt and Shift. Confirm the event is not rewritten.
609 {ui::ET_KEY_PRESSED,
610 {ui::VKEY_ESCAPE, ui::DomCode::ESCAPE,
611 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, ui::DomKey::ESCAPE},
612 {ui::VKEY_ESCAPE, ui::DomCode::ESCAPE,
613 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, ui::DomKey::ESCAPE}},
614
608 // Press Search with Caps Lock mask. Confirm the event is not rewritten. 615 // Press Search with Caps Lock mask. Confirm the event is not rewritten.
609 {ui::ET_KEY_PRESSED, 616 {ui::ET_KEY_PRESSED,
610 {ui::VKEY_LWIN, ui::DomCode::META_LEFT, 617 {ui::VKEY_LWIN, ui::DomCode::META_LEFT,
611 ui::EF_CAPS_LOCK_ON | ui::EF_COMMAND_DOWN, ui::DomKey::META}, 618 ui::EF_CAPS_LOCK_ON | ui::EF_COMMAND_DOWN, ui::DomKey::META},
612 {ui::VKEY_LWIN, ui::DomCode::META_LEFT, 619 {ui::VKEY_LWIN, ui::DomCode::META_LEFT,
613 ui::EF_CAPS_LOCK_ON | ui::EF_COMMAND_DOWN, ui::DomKey::META}}, 620 ui::EF_CAPS_LOCK_ON | ui::EF_COMMAND_DOWN, ui::DomKey::META}},
614 621
615 // Release Search with Caps Lock mask. Confirm the event is not rewritten. 622 // Release Search with Caps Lock mask. Confirm the event is not rewritten.
616 {ui::ET_KEY_RELEASED, 623 {ui::ET_KEY_RELEASED,
617 {ui::VKEY_LWIN, ui::DomCode::META_LEFT, ui::EF_CAPS_LOCK_ON, 624 {ui::VKEY_LWIN, ui::DomCode::META_LEFT, ui::EF_CAPS_LOCK_ON,
618 ui::DomKey::META}, 625 ui::DomKey::META},
619 {ui::VKEY_LWIN, ui::DomCode::META_LEFT, ui::EF_CAPS_LOCK_ON, 626 {ui::VKEY_LWIN, ui::DomCode::META_LEFT, ui::EF_CAPS_LOCK_ON,
620 ui::DomKey::META}}, 627 ui::DomKey::META}},
621 628
622 // Press Shift+Ctrl+Alt+Search+A. Confirm the event is not rewritten. 629 // Press Shift+Ctrl+Alt+Search+Escape. Confirm the event is not rewritten.
630 {ui::ET_KEY_PRESSED,
631 {ui::VKEY_ESCAPE, ui::DomCode::ESCAPE,
632 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN |
633 ui::EF_COMMAND_DOWN,
634 ui::DomKey::ESCAPE},
635 {ui::VKEY_ESCAPE, ui::DomCode::ESCAPE,
636 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN |
637 ui::EF_COMMAND_DOWN,
638 ui::DomKey::ESCAPE}},
639
640 // Press Shift+Ctrl+Alt+Search+B. Confirm the event is not rewritten.
623 {ui::ET_KEY_PRESSED, 641 {ui::ET_KEY_PRESSED,
624 {ui::VKEY_B, ui::DomCode::US_B, 642 {ui::VKEY_B, ui::DomCode::US_B,
625 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | 643 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN |
626 ui::EF_COMMAND_DOWN, 644 ui::EF_COMMAND_DOWN,
627 ui::DomKey::Constant<'B'>::Character}, 645 ui::DomKey::Constant<'B'>::Character},
628 {ui::VKEY_B, ui::DomCode::US_B, 646 {ui::VKEY_B, ui::DomCode::US_B,
629 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | 647 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN |
630 ui::EF_COMMAND_DOWN, 648 ui::EF_COMMAND_DOWN,
631 ui::DomKey::Constant<'B'>::Character}}, 649 ui::DomKey::Constant<'B'>::Character}},
632 }; 650 };
633 651
634 for (const auto& test : tests) { 652 for (const auto& test : tests) {
635 CheckKeyTestCase(&rewriter, test); 653 CheckKeyTestCase(&rewriter, test);
636 } 654 }
637 } 655 }
638 656
639 TEST_F(EventRewriterTest, TestRewriteModifiersDisableSome) { 657 TEST_F(EventRewriterTest, TestRewriteModifiersDisableSome) {
640 // Disable Search and Control keys. 658 // Disable Search, Control and Escape keys.
641 syncable_prefs::TestingPrefServiceSyncable prefs; 659 syncable_prefs::TestingPrefServiceSyncable prefs;
642 chromeos::Preferences::RegisterProfilePrefs(prefs.registry()); 660 chromeos::Preferences::RegisterProfilePrefs(prefs.registry());
643 IntegerPrefMember search; 661 IntegerPrefMember search;
644 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs); 662 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs);
645 search.SetValue(chromeos::input_method::kVoidKey); 663 search.SetValue(chromeos::input_method::kVoidKey);
646 IntegerPrefMember control; 664 IntegerPrefMember control;
647 control.Init(prefs::kLanguageRemapControlKeyTo, &prefs); 665 control.Init(prefs::kLanguageRemapControlKeyTo, &prefs);
648 control.SetValue(chromeos::input_method::kVoidKey); 666 control.SetValue(chromeos::input_method::kVoidKey);
667 IntegerPrefMember escape;
668 escape.Init(prefs::kLanguageRemapEscapeKeyTo, &prefs);
669 escape.SetValue(chromeos::input_method::kVoidKey);
649 670
650 EventRewriter rewriter(NULL); 671 EventRewriter rewriter(NULL);
651 rewriter.KeyboardDeviceAddedForTesting(kKeyboardDeviceId, "PC Keyboard"); 672 rewriter.KeyboardDeviceAddedForTesting(kKeyboardDeviceId, "PC Keyboard");
652 rewriter.set_pref_service_for_testing(&prefs); 673 rewriter.set_pref_service_for_testing(&prefs);
653 674
654 KeyTestCase disabled_modifier_tests[] = { 675 KeyTestCase disabled_modifier_tests[] = {
655 // Press Alt with Shift. This key press shouldn't be affected by the 676 // Press Alt with Shift. This key press shouldn't be affected by the
656 // pref. Confirm the event is not rewritten. 677 // pref. Confirm the event is not rewritten.
657 {ui::ET_KEY_PRESSED, 678 {ui::ET_KEY_PRESSED,
658 {ui::VKEY_MENU, ui::DomCode::ALT_LEFT, 679 {ui::VKEY_MENU, ui::DomCode::ALT_LEFT,
659 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, ui::DomKey::ALT}, 680 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, ui::DomKey::ALT},
660 {ui::VKEY_MENU, ui::DomCode::ALT_LEFT, 681 {ui::VKEY_MENU, ui::DomCode::ALT_LEFT,
661 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, ui::DomKey::ALT}}, 682 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, ui::DomKey::ALT}},
662 683
663 // Press Search. Confirm the event is now VKEY_UNKNOWN. 684 // Press Search. Confirm the event is now VKEY_UNKNOWN.
664 {ui::ET_KEY_PRESSED, 685 {ui::ET_KEY_PRESSED,
665 {ui::VKEY_LWIN, ui::DomCode::META_LEFT, ui::EF_NONE, ui::DomKey::META}, 686 {ui::VKEY_LWIN, ui::DomCode::META_LEFT, ui::EF_NONE, ui::DomKey::META},
666 {ui::VKEY_UNKNOWN, ui::DomCode::NONE, ui::EF_NONE, 687 {ui::VKEY_UNKNOWN, ui::DomCode::NONE, ui::EF_NONE,
667 ui::DomKey::UNIDENTIFIED}}, 688 ui::DomKey::UNIDENTIFIED}},
668 689
669 // Press Control. Confirm the event is now VKEY_UNKNOWN. 690 // Press Control. Confirm the event is now VKEY_UNKNOWN.
670 {ui::ET_KEY_PRESSED, 691 {ui::ET_KEY_PRESSED,
671 {ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, ui::EF_CONTROL_DOWN, 692 {ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, ui::EF_CONTROL_DOWN,
672 ui::DomKey::CONTROL}, 693 ui::DomKey::CONTROL},
673 {ui::VKEY_UNKNOWN, ui::DomCode::NONE, ui::EF_NONE, 694 {ui::VKEY_UNKNOWN, ui::DomCode::NONE, ui::EF_NONE,
674 ui::DomKey::UNIDENTIFIED}}, 695 ui::DomKey::UNIDENTIFIED}},
675 696
697 // Press Escape. Confirm the event is now VKEY_UNKNOWN.
698 {ui::ET_KEY_PRESSED,
699 {ui::VKEY_ESCAPE, ui::DomCode::ESCAPE, ui::EF_NONE, ui::DomKey::ESCAPE},
700 {ui::VKEY_UNKNOWN, ui::DomCode::NONE, ui::EF_NONE,
701 ui::DomKey::UNIDENTIFIED}},
702
676 // Press Control+Search. Confirm the event is now VKEY_UNKNOWN 703 // Press Control+Search. Confirm the event is now VKEY_UNKNOWN
677 // without any modifiers. 704 // without any modifiers.
678 {ui::ET_KEY_PRESSED, 705 {ui::ET_KEY_PRESSED,
679 {ui::VKEY_LWIN, ui::DomCode::META_LEFT, ui::EF_CONTROL_DOWN, 706 {ui::VKEY_LWIN, ui::DomCode::META_LEFT, ui::EF_CONTROL_DOWN,
680 ui::DomKey::META}, 707 ui::DomKey::META},
681 {ui::VKEY_UNKNOWN, ui::DomCode::NONE, ui::EF_NONE, 708 {ui::VKEY_UNKNOWN, ui::DomCode::NONE, ui::EF_NONE,
682 ui::DomKey::UNIDENTIFIED}}, 709 ui::DomKey::UNIDENTIFIED}},
683 710
684 // Press Control+Search+a. Confirm the event is now VKEY_A without any 711 // Press Control+Search+a. Confirm the event is now VKEY_A without any
685 // modifiers. 712 // modifiers.
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
801 {ui::VKEY_B, ui::DomCode::US_B, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, 828 {ui::VKEY_B, ui::DomCode::US_B, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN,
802 ui::DomKey::Constant<'B'>::Character}}, 829 ui::DomKey::Constant<'B'>::Character}},
803 }; 830 };
804 831
805 for (const auto& test : sa_tests) { 832 for (const auto& test : sa_tests) {
806 CheckKeyTestCase(&rewriter, test); 833 CheckKeyTestCase(&rewriter, test);
807 } 834 }
808 } 835 }
809 836
810 TEST_F(EventRewriterTest, TestRewriteModifiersRemapToEscape) { 837 TEST_F(EventRewriterTest, TestRewriteModifiersRemapToEscape) {
811 // Remap Search to ESC. 838 // Remap Search to Escape.
812 syncable_prefs::TestingPrefServiceSyncable prefs; 839 syncable_prefs::TestingPrefServiceSyncable prefs;
813 chromeos::Preferences::RegisterProfilePrefs(prefs.registry()); 840 chromeos::Preferences::RegisterProfilePrefs(prefs.registry());
814 IntegerPrefMember search; 841 IntegerPrefMember search;
815 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs); 842 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs);
816 search.SetValue(chromeos::input_method::kEscapeKey); 843 search.SetValue(chromeos::input_method::kEscapeKey);
817 844
818 EventRewriter rewriter(NULL); 845 EventRewriter rewriter(NULL);
819 rewriter.KeyboardDeviceAddedForTesting(kKeyboardDeviceId, "PC Keyboard"); 846 rewriter.KeyboardDeviceAddedForTesting(kKeyboardDeviceId, "PC Keyboard");
820 rewriter.set_pref_service_for_testing(&prefs); 847 rewriter.set_pref_service_for_testing(&prefs);
821 848
822 KeyTestCase tests[] = { 849 KeyTestCase tests[] = {
823 // Press Search. Confirm the event is now VKEY_ESCAPE. 850 // Press Search. Confirm the event is now VKEY_ESCAPE.
824 {ui::ET_KEY_PRESSED, 851 {ui::ET_KEY_PRESSED,
825 {ui::VKEY_LWIN, ui::DomCode::META_LEFT, ui::EF_COMMAND_DOWN, 852 {ui::VKEY_LWIN, ui::DomCode::META_LEFT, ui::EF_COMMAND_DOWN,
826 ui::DomKey::META}, 853 ui::DomKey::META},
827 {ui::VKEY_ESCAPE, ui::DomCode::ESCAPE, ui::EF_NONE, ui::DomKey::ESCAPE}}, 854 {ui::VKEY_ESCAPE, ui::DomCode::ESCAPE, ui::EF_NONE, ui::DomKey::ESCAPE}},
828 }; 855 };
829 856
830 for (const auto& test : tests) { 857 for (const auto& test : tests) {
831 CheckKeyTestCase(&rewriter, test); 858 CheckKeyTestCase(&rewriter, test);
832 } 859 }
833 } 860 }
834 861
835 TEST_F(EventRewriterTest, TestRewriteModifiersRemapMany) { 862 TEST_F(EventRewriterTest, TestRewriteModifiersRemapMany) {
836 // Remap Search to Alt. 863 // Remap Escape to Alt.
837 syncable_prefs::TestingPrefServiceSyncable prefs; 864 syncable_prefs::TestingPrefServiceSyncable prefs;
838 chromeos::Preferences::RegisterProfilePrefs(prefs.registry()); 865 chromeos::Preferences::RegisterProfilePrefs(prefs.registry());
839 IntegerPrefMember search; 866 IntegerPrefMember escape;
840 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs); 867 escape.Init(prefs::kLanguageRemapEscapeKeyTo, &prefs);
841 search.SetValue(chromeos::input_method::kAltKey); 868 escape.SetValue(chromeos::input_method::kAltKey);
842 869
843 EventRewriter rewriter(NULL); 870 EventRewriter rewriter(NULL);
844 rewriter.KeyboardDeviceAddedForTesting(kKeyboardDeviceId, "PC Keyboard"); 871 rewriter.KeyboardDeviceAddedForTesting(kKeyboardDeviceId, "PC Keyboard");
845 rewriter.set_pref_service_for_testing(&prefs); 872 rewriter.set_pref_service_for_testing(&prefs);
846 873
847 KeyTestCase s2a_tests[] = { 874 KeyTestCase e2a_tests[] = {
848 // Press Search. Confirm the event is now VKEY_MENU. 875 // Press Escape. Confirm the event is now VKEY_MENU.
849 {ui::ET_KEY_PRESSED, 876 {ui::ET_KEY_PRESSED,
850 {ui::VKEY_LWIN, ui::DomCode::META_LEFT, ui::EF_COMMAND_DOWN, 877 {ui::VKEY_ESCAPE, ui::DomCode::ESCAPE, ui::EF_NONE, ui::DomKey::ESCAPE},
851 ui::DomKey::META},
852 {ui::VKEY_MENU, ui::DomCode::ALT_LEFT, ui::EF_ALT_DOWN, 878 {ui::VKEY_MENU, ui::DomCode::ALT_LEFT, ui::EF_ALT_DOWN,
853 ui::DomKey::ALT}}, 879 ui::DomKey::ALT}},
880 // Release Escape to clear flags.
881 {ui::ET_KEY_RELEASED,
882 {ui::VKEY_ESCAPE, ui::DomCode::ESCAPE, ui::EF_NONE, ui::DomKey::ESCAPE},
883 {ui::VKEY_MENU, ui::DomCode::ALT_LEFT, ui::EF_NONE, ui::DomKey::ALT}},
854 }; 884 };
855 885
856 for (const auto& test : s2a_tests) { 886 for (const auto& test : e2a_tests) {
857 CheckKeyTestCase(&rewriter, test); 887 CheckKeyTestCase(&rewriter, test);
858 } 888 }
859 889
860 // Remap Alt to Control. 890 // Remap Alt to Control.
861 IntegerPrefMember alt; 891 IntegerPrefMember alt;
862 alt.Init(prefs::kLanguageRemapAltKeyTo, &prefs); 892 alt.Init(prefs::kLanguageRemapAltKeyTo, &prefs);
863 alt.SetValue(chromeos::input_method::kControlKey); 893 alt.SetValue(chromeos::input_method::kControlKey);
864 894
865 KeyTestCase a2c_tests[] = { 895 KeyTestCase a2c_tests[] = {
866 // Press left Alt. Confirm the event is now VKEY_CONTROL. 896 // Press left Alt. Confirm the event is now VKEY_CONTROL.
(...skipping 27 matching lines...) Expand all
894 control.SetValue(chromeos::input_method::kSearchKey); 924 control.SetValue(chromeos::input_method::kSearchKey);
895 925
896 KeyTestCase c2s_tests[] = { 926 KeyTestCase c2s_tests[] = {
897 // Press left Control. Confirm the event is now VKEY_LWIN. 927 // Press left Control. Confirm the event is now VKEY_LWIN.
898 {ui::ET_KEY_PRESSED, 928 {ui::ET_KEY_PRESSED,
899 {ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, ui::EF_CONTROL_DOWN, 929 {ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, ui::EF_CONTROL_DOWN,
900 ui::DomKey::CONTROL}, 930 ui::DomKey::CONTROL},
901 {ui::VKEY_LWIN, ui::DomCode::META_LEFT, ui::EF_COMMAND_DOWN, 931 {ui::VKEY_LWIN, ui::DomCode::META_LEFT, ui::EF_COMMAND_DOWN,
902 ui::DomKey::META}}, 932 ui::DomKey::META}},
903 933
904 // Then, press all of the three, Control+Alt+Search. 934 // Then, press all of the three, Control+Alt+Escape.
905 {ui::ET_KEY_PRESSED, 935 {ui::ET_KEY_PRESSED,
906 {ui::VKEY_LWIN, ui::DomCode::META_LEFT, 936 {ui::VKEY_ESCAPE, ui::DomCode::ESCAPE,
907 ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN, 937 ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN, ui::DomKey::CONTROL},
908 ui::DomKey::META},
909 {ui::VKEY_MENU, ui::DomCode::ALT_LEFT, 938 {ui::VKEY_MENU, ui::DomCode::ALT_LEFT,
910 ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN, 939 ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN,
911 ui::DomKey::ALT}}, 940 ui::DomKey::ALT}},
912 941
913 // Press Shift+Control+Alt+Search. 942 // Press Shift+Control+Alt+Escape.
914 {ui::ET_KEY_PRESSED, 943 {ui::ET_KEY_PRESSED,
915 {ui::VKEY_LWIN, ui::DomCode::META_LEFT, 944 {ui::VKEY_ESCAPE, ui::DomCode::ESCAPE,
916 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | 945 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN,
917 ui::EF_COMMAND_DOWN, 946 ui::DomKey::ESCAPE},
918 ui::DomKey::META},
919 {ui::VKEY_MENU, ui::DomCode::ALT_LEFT, 947 {ui::VKEY_MENU, ui::DomCode::ALT_LEFT,
920 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | 948 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN |
921 ui::EF_COMMAND_DOWN, 949 ui::EF_COMMAND_DOWN,
922 ui::DomKey::ALT}}, 950 ui::DomKey::ALT}},
923 951
924 // Press Shift+Control+Alt+Search+B 952 // Press Shift+Control+Alt+B
925 {ui::ET_KEY_PRESSED, 953 {ui::ET_KEY_PRESSED,
926 {ui::VKEY_B, ui::DomCode::US_B, 954 {ui::VKEY_B, ui::DomCode::US_B,
927 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | 955 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN,
928 ui::EF_COMMAND_DOWN,
929 ui::DomKey::Constant<'B'>::Character}, 956 ui::DomKey::Constant<'B'>::Character},
930 {ui::VKEY_B, ui::DomCode::US_B, 957 {ui::VKEY_B, ui::DomCode::US_B,
931 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | 958 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN |
932 ui::EF_COMMAND_DOWN, 959 ui::EF_COMMAND_DOWN,
933 ui::DomKey::Constant<'B'>::Character}}, 960 ui::DomKey::Constant<'B'>::Character}},
934 }; 961 };
935 962
936 for (const auto& test : c2s_tests) { 963 for (const auto& test : c2s_tests) {
937 CheckKeyTestCase(&rewriter, test); 964 CheckKeyTestCase(&rewriter, test);
938 } 965 }
966
967 // Remap Search to Backspace.
968 IntegerPrefMember search;
969 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs);
970 search.SetValue(chromeos::input_method::kBackspaceKey);
971
972 KeyTestCase s2b_tests[] = {
973 // Release Control and Escape, as Search and Alt would transform Backspace
974 // to Delete.
975 {ui::ET_KEY_RELEASED,
976 {ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, ui::EF_NONE,
977 ui::DomKey::CONTROL},
978 {ui::VKEY_LWIN, ui::DomCode::META_LEFT, ui::EF_ALT_DOWN,
979 ui::DomKey::META}},
980 {ui::ET_KEY_RELEASED,
981 {ui::VKEY_ESCAPE, ui::DomCode::ESCAPE, ui::EF_NONE, ui::DomKey::ESCAPE},
982 {ui::VKEY_MENU, ui::DomCode::ALT_LEFT, ui::EF_NONE, ui::DomKey::ALT}},
983 // Press Search. Confirm the event is now VKEY_BACK.
984 {ui::ET_KEY_PRESSED,
985 {ui::VKEY_LWIN, ui::DomCode::META_LEFT, ui::EF_COMMAND_DOWN,
986 ui::DomKey::META},
987 {ui::VKEY_BACK, ui::DomCode::BACKSPACE, ui::EF_NONE,
988 ui::DomKey::BACKSPACE}},
989 };
990
991 for (const auto& test : s2b_tests) {
992 CheckKeyTestCase(&rewriter, test);
993 }
994
995 // Remap Backspace to Escape.
996 IntegerPrefMember backspace;
997 backspace.Init(prefs::kLanguageRemapBackspaceKeyTo, &prefs);
998 backspace.SetValue(chromeos::input_method::kEscapeKey);
999
1000 KeyTestCase b2e_tests[] = {
1001 // Press Backspace. Confirm the event is now VKEY_ESCAPE.
1002 {ui::ET_KEY_PRESSED,
1003 {ui::VKEY_BACK, ui::DomCode::BACKSPACE, ui::EF_NONE,
1004 ui::DomKey::BACKSPACE},
1005 {ui::VKEY_ESCAPE, ui::DomCode::ESCAPE, ui::EF_NONE, ui::DomKey::ESCAPE}},
1006 };
1007
1008 for (const auto& test : b2e_tests) {
1009 CheckKeyTestCase(&rewriter, test);
1010 }
939 } 1011 }
940 1012
941 TEST_F(EventRewriterTest, TestRewriteModifiersRemapToCapsLock) { 1013 TEST_F(EventRewriterTest, TestRewriteModifiersRemapToCapsLock) {
942 // Remap Search to Caps Lock. 1014 // Remap Search to Caps Lock.
943 syncable_prefs::TestingPrefServiceSyncable prefs; 1015 syncable_prefs::TestingPrefServiceSyncable prefs;
944 chromeos::Preferences::RegisterProfilePrefs(prefs.registry()); 1016 chromeos::Preferences::RegisterProfilePrefs(prefs.registry());
945 IntegerPrefMember search; 1017 IntegerPrefMember search;
946 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs); 1018 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs);
947 search.SetValue(chromeos::input_method::kCapsLockKey); 1019 search.SetValue(chromeos::input_method::kCapsLockKey);
948 1020
(...skipping 1664 matching lines...) Expand 10 before | Expand all | Expand 10 after
2613 EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_ALTGR_DOWN)); 2685 EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_ALTGR_DOWN));
2614 EXPECT_TRUE(overlay_->GetModifierVisible(ui::EF_MOD3_DOWN)); 2686 EXPECT_TRUE(overlay_->GetModifierVisible(ui::EF_MOD3_DOWN));
2615 2687
2616 // Turn off AltGr and Mod3. 2688 // Turn off AltGr and Mod3.
2617 sticky_keys_controller_->SetModifiersEnabled(false, false); 2689 sticky_keys_controller_->SetModifiersEnabled(false, false);
2618 EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_ALTGR_DOWN)); 2690 EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_ALTGR_DOWN));
2619 EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_MOD3_DOWN)); 2691 EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_MOD3_DOWN));
2620 } 2692 }
2621 2693
2622 } // namespace chromeos 2694 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/events/event_rewriter.cc ('k') | chrome/browser/chromeos/preferences.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698