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

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

Issue 277443004: Handle X11 Mod3Mask for Caps Lock remapping. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Update unit tests with Mod3Mask Created 6 years, 7 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
« no previous file with comments | « chrome/browser/chromeos/events/event_rewriter.cc ('k') | ui/events/x/events_x.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <X11/keysym.h> 7 #include <X11/keysym.h>
8 #include <X11/XF86keysym.h> 8 #include <X11/XF86keysym.h>
9 #include <X11/Xlib.h> 9 #include <X11/Xlib.h>
10 #undef Bool 10 #undef Bool
(...skipping 853 matching lines...) Expand 10 before | Expand all | Expand 10 after
864 search.SetValue(chromeos::input_method::kCapsLockKey); 864 search.SetValue(chromeos::input_method::kCapsLockKey);
865 865
866 chromeos::input_method::FakeImeKeyboard ime_keyboard; 866 chromeos::input_method::FakeImeKeyboard ime_keyboard;
867 EventRewriter rewriter; 867 EventRewriter rewriter;
868 rewriter.set_pref_service_for_testing(&prefs); 868 rewriter.set_pref_service_for_testing(&prefs);
869 rewriter.set_ime_keyboard_for_testing(&ime_keyboard); 869 rewriter.set_ime_keyboard_for_testing(&ime_keyboard);
870 EXPECT_FALSE(ime_keyboard.caps_lock_is_enabled_); 870 EXPECT_FALSE(ime_keyboard.caps_lock_is_enabled_);
871 871
872 // Press Search. 872 // Press Search.
873 EXPECT_EQ( 873 EXPECT_EQ(
874 GetExpectedResultAsString( 874 GetExpectedResultAsString(ui::VKEY_CAPITAL,
875 ui::VKEY_CAPITAL, ui::EF_CAPS_LOCK_DOWN, ui::ET_KEY_PRESSED), 875 ui::EF_CAPS_LOCK_DOWN | ui::EF_MOD3_DOWN,
876 ui::ET_KEY_PRESSED),
876 GetRewrittenEventAsString( 877 GetRewrittenEventAsString(
877 &rewriter, ui::VKEY_LWIN, ui::EF_COMMAND_DOWN, ui::ET_KEY_PRESSED)); 878 &rewriter, ui::VKEY_LWIN, ui::EF_COMMAND_DOWN, ui::ET_KEY_PRESSED));
878 // Confirm that the Caps Lock status is changed. 879 // Confirm that the Caps Lock status is changed.
879 EXPECT_TRUE(ime_keyboard.caps_lock_is_enabled_); 880 EXPECT_TRUE(ime_keyboard.caps_lock_is_enabled_);
880 881
881 // Release Search. 882 // Release Search.
882 EXPECT_EQ(GetExpectedResultAsString( 883 EXPECT_EQ(GetExpectedResultAsString(
883 ui::VKEY_CAPITAL, ui::EF_NONE, ui::ET_KEY_RELEASED), 884 ui::VKEY_CAPITAL, ui::EF_NONE, ui::ET_KEY_RELEASED),
884 GetRewrittenEventAsString( 885 GetRewrittenEventAsString(
885 &rewriter, ui::VKEY_LWIN, ui::EF_NONE, ui::ET_KEY_RELEASED)); 886 &rewriter, ui::VKEY_LWIN, ui::EF_NONE, ui::ET_KEY_RELEASED));
886 // Confirm that the Caps Lock status is not changed. 887 // Confirm that the Caps Lock status is not changed.
887 EXPECT_TRUE(ime_keyboard.caps_lock_is_enabled_); 888 EXPECT_TRUE(ime_keyboard.caps_lock_is_enabled_);
888 889
889 // Press Search. 890 // Press Search.
890 EXPECT_EQ( 891 EXPECT_EQ(
891 GetExpectedResultAsString( 892 GetExpectedResultAsString(ui::VKEY_CAPITAL,
892 ui::VKEY_CAPITAL, ui::EF_CAPS_LOCK_DOWN, ui::ET_KEY_PRESSED), 893 ui::EF_CAPS_LOCK_DOWN | ui::EF_MOD3_DOWN,
894 ui::ET_KEY_PRESSED),
893 GetRewrittenEventAsString(&rewriter, 895 GetRewrittenEventAsString(&rewriter,
894 ui::VKEY_LWIN, 896 ui::VKEY_LWIN,
895 ui::EF_COMMAND_DOWN | ui::EF_CAPS_LOCK_DOWN, 897 ui::EF_COMMAND_DOWN | ui::EF_CAPS_LOCK_DOWN,
896 ui::ET_KEY_PRESSED)); 898 ui::ET_KEY_PRESSED));
897 // Confirm that the Caps Lock status is changed. 899 // Confirm that the Caps Lock status is changed.
898 EXPECT_FALSE(ime_keyboard.caps_lock_is_enabled_); 900 EXPECT_FALSE(ime_keyboard.caps_lock_is_enabled_);
899 901
900 // Release Search. 902 // Release Search.
901 EXPECT_EQ(GetExpectedResultAsString( 903 EXPECT_EQ(GetExpectedResultAsString(
902 ui::VKEY_CAPITAL, ui::EF_NONE, ui::ET_KEY_RELEASED), 904 ui::VKEY_CAPITAL, ui::EF_NONE, ui::ET_KEY_RELEASED),
903 GetRewrittenEventAsString( 905 GetRewrittenEventAsString(
904 &rewriter, ui::VKEY_LWIN, ui::EF_NONE, ui::ET_KEY_RELEASED)); 906 &rewriter, ui::VKEY_LWIN, ui::EF_NONE, ui::ET_KEY_RELEASED));
905 // Confirm that the Caps Lock status is not changed. 907 // Confirm that the Caps Lock status is not changed.
906 EXPECT_FALSE(ime_keyboard.caps_lock_is_enabled_); 908 EXPECT_FALSE(ime_keyboard.caps_lock_is_enabled_);
907 909
908 // Press Caps Lock (on an external keyboard). 910 // Press Caps Lock (on an external keyboard).
909 EXPECT_EQ(GetExpectedResultAsString( 911 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CAPITAL,
910 ui::VKEY_CAPITAL, ui::EF_CAPS_LOCK_DOWN, ui::ET_KEY_PRESSED), 912 ui::EF_CAPS_LOCK_DOWN | ui::EF_MOD3_DOWN,
913 ui::ET_KEY_PRESSED),
911 GetRewrittenEventAsString(&rewriter, 914 GetRewrittenEventAsString(&rewriter,
912 ui::VKEY_CAPITAL, 915 ui::VKEY_CAPITAL,
913 ui::EF_CAPS_LOCK_DOWN, 916 ui::EF_CAPS_LOCK_DOWN | ui::EF_MOD3_DOWN,
914 ui::ET_KEY_PRESSED)); 917 ui::ET_KEY_PRESSED));
915 918
916 // Confirm that calling RewriteForTesting() does not change the state of 919 // Confirm that calling RewriteForTesting() does not change the state of
917 // |ime_keyboard|. In this case, X Window system itself should change the 920 // |ime_keyboard|. In this case, X Window system itself should change the
918 // Caps Lock state, not ash::EventRewriter. 921 // Caps Lock state, not ash::EventRewriter.
919 EXPECT_FALSE(ime_keyboard.caps_lock_is_enabled_); 922 EXPECT_FALSE(ime_keyboard.caps_lock_is_enabled_);
920 923
921 // Release Caps Lock (on an external keyboard). 924 // Release Caps Lock (on an external keyboard).
922 EXPECT_EQ(GetExpectedResultAsString( 925 EXPECT_EQ(GetExpectedResultAsString(
923 ui::VKEY_CAPITAL, ui::EF_NONE, ui::ET_KEY_RELEASED), 926 ui::VKEY_CAPITAL, ui::EF_NONE, ui::ET_KEY_RELEASED),
924 GetRewrittenEventAsString( 927 GetRewrittenEventAsString(
925 &rewriter, ui::VKEY_CAPITAL, ui::EF_NONE, ui::ET_KEY_RELEASED)); 928 &rewriter, ui::VKEY_CAPITAL, ui::EF_NONE, ui::ET_KEY_RELEASED));
926 EXPECT_FALSE(ime_keyboard.caps_lock_is_enabled_); 929 EXPECT_FALSE(ime_keyboard.caps_lock_is_enabled_);
927 } 930 }
928 931
929 TEST_F(EventRewriterTest, TestRewriteCapsLock) { 932 TEST_F(EventRewriterTest, TestRewriteCapsLock) {
930 TestingPrefServiceSyncable prefs; 933 TestingPrefServiceSyncable prefs;
931 chromeos::Preferences::RegisterProfilePrefs(prefs.registry()); 934 chromeos::Preferences::RegisterProfilePrefs(prefs.registry());
932 935
933 chromeos::input_method::FakeImeKeyboard ime_keyboard; 936 chromeos::input_method::FakeImeKeyboard ime_keyboard;
934 EventRewriter rewriter; 937 EventRewriter rewriter;
935 rewriter.set_pref_service_for_testing(&prefs); 938 rewriter.set_pref_service_for_testing(&prefs);
936 rewriter.set_ime_keyboard_for_testing(&ime_keyboard); 939 rewriter.set_ime_keyboard_for_testing(&ime_keyboard);
937 EXPECT_FALSE(ime_keyboard.caps_lock_is_enabled_); 940 EXPECT_FALSE(ime_keyboard.caps_lock_is_enabled_);
938 941
939 // On Chrome OS, CapsLock is mapped to F16 with Mod3Mask. 942 // On Chrome OS, CapsLock is mapped to F16 with Mod3Mask.
940 EXPECT_EQ(GetExpectedResultAsString( 943 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CAPITAL,
941 ui::VKEY_CAPITAL, ui::EF_CAPS_LOCK_DOWN, ui::ET_KEY_PRESSED), 944 ui::EF_CAPS_LOCK_DOWN | ui::EF_MOD3_DOWN,
945 ui::ET_KEY_PRESSED),
942 GetRewrittenEventAsString( 946 GetRewrittenEventAsString(
943 &rewriter, ui::VKEY_F16, ui::EF_NONE, ui::ET_KEY_PRESSED)); 947 &rewriter, ui::VKEY_F16, ui::EF_MOD3_DOWN, ui::ET_KEY_PRESSED));
944 EXPECT_TRUE(ime_keyboard.caps_lock_is_enabled_); 948 EXPECT_TRUE(ime_keyboard.caps_lock_is_enabled_);
945 } 949 }
946 950
947 TEST_F(EventRewriterTest, TestRewriteDiamondKey) { 951 TEST_F(EventRewriterTest, TestRewriteDiamondKey) {
948 TestingPrefServiceSyncable prefs; 952 TestingPrefServiceSyncable prefs;
949 chromeos::Preferences::RegisterProfilePrefs(prefs.registry()); 953 chromeos::Preferences::RegisterProfilePrefs(prefs.registry());
950 954
951 chromeos::input_method::FakeImeKeyboard ime_keyboard; 955 chromeos::input_method::FakeImeKeyboard ime_keyboard;
952 EventRewriter rewriter; 956 EventRewriter rewriter;
953 rewriter.set_pref_service_for_testing(&prefs); 957 rewriter.set_pref_service_for_testing(&prefs);
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
1004 1008
1005 diamond.SetValue(chromeos::input_method::kAltKey); 1009 diamond.SetValue(chromeos::input_method::kAltKey);
1006 1010
1007 EXPECT_EQ(GetExpectedResultAsString( 1011 EXPECT_EQ(GetExpectedResultAsString(
1008 ui::VKEY_MENU, ui::EF_ALT_DOWN, ui::ET_KEY_PRESSED), 1012 ui::VKEY_MENU, ui::EF_ALT_DOWN, ui::ET_KEY_PRESSED),
1009 GetRewrittenEventAsString( 1013 GetRewrittenEventAsString(
1010 &rewriter, ui::VKEY_F15, ui::EF_NONE, ui::ET_KEY_PRESSED)); 1014 &rewriter, ui::VKEY_F15, ui::EF_NONE, ui::ET_KEY_PRESSED));
1011 1015
1012 diamond.SetValue(chromeos::input_method::kCapsLockKey); 1016 diamond.SetValue(chromeos::input_method::kCapsLockKey);
1013 1017
1014 EXPECT_EQ(GetExpectedResultAsString( 1018 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CAPITAL,
1015 ui::VKEY_CAPITAL, ui::EF_CAPS_LOCK_DOWN, ui::ET_KEY_PRESSED), 1019 ui::EF_CAPS_LOCK_DOWN | ui::EF_MOD3_DOWN,
1020 ui::ET_KEY_PRESSED),
1016 GetRewrittenEventAsString( 1021 GetRewrittenEventAsString(
1017 &rewriter, ui::VKEY_F15, ui::EF_NONE, ui::ET_KEY_PRESSED)); 1022 &rewriter, ui::VKEY_F15, ui::EF_NONE, ui::ET_KEY_PRESSED));
1018 1023
1019 *CommandLine::ForCurrentProcess() = original_cl; 1024 *CommandLine::ForCurrentProcess() = original_cl;
1020 } 1025 }
1021 1026
1022 TEST_F(EventRewriterTest, TestRewriteCapsLockToControl) { 1027 TEST_F(EventRewriterTest, TestRewriteCapsLockToControl) {
1023 // Remap CapsLock to Control. 1028 // Remap CapsLock to Control.
1024 TestingPrefServiceSyncable prefs; 1029 TestingPrefServiceSyncable prefs;
1025 chromeos::Preferences::RegisterProfilePrefs(prefs.registry()); 1030 chromeos::Preferences::RegisterProfilePrefs(prefs.registry());
1026 IntegerPrefMember control; 1031 IntegerPrefMember control;
1027 control.Init(prefs::kLanguageRemapCapsLockKeyTo, &prefs); 1032 control.Init(prefs::kLanguageRemapCapsLockKeyTo, &prefs);
1028 control.SetValue(chromeos::input_method::kControlKey); 1033 control.SetValue(chromeos::input_method::kControlKey);
1029 1034
1030 EventRewriter rewriter; 1035 EventRewriter rewriter;
1031 rewriter.set_pref_service_for_testing(&prefs); 1036 rewriter.set_pref_service_for_testing(&prefs);
1032 1037
1033 // Press CapsLock+a. Confirm that Mod3Mask is rewritten to ControlMask. 1038 // Press CapsLock+a. Confirm that Mod3Mask is rewritten to ControlMask.
1034 // On Chrome OS, CapsLock works as a Mod3 modifier. 1039 // On Chrome OS, CapsLock works as a Mod3 modifier.
1035 EXPECT_EQ( 1040 EXPECT_EQ(
1036 GetExpectedResultAsString( 1041 GetExpectedResultAsString(
1037 ui::VKEY_A, ui::EF_CONTROL_DOWN, ui::ET_KEY_PRESSED), 1042 ui::VKEY_A, ui::EF_CONTROL_DOWN, ui::ET_KEY_PRESSED),
1038 GetRewrittenEventAsString( 1043 GetRewrittenEventAsString(
1039 &rewriter, ui::VKEY_A, ui::EF_CAPS_LOCK_DOWN, ui::ET_KEY_PRESSED)); 1044 &rewriter, ui::VKEY_A, ui::EF_MOD3_DOWN, ui::ET_KEY_PRESSED));
1040 1045
1041 // Press Control+CapsLock+a. Confirm that Mod3Mask is rewritten to ControlMask 1046 // Press Control+CapsLock+a. Confirm that Mod3Mask is rewritten to ControlMask
1042 EXPECT_EQ( 1047 EXPECT_EQ(
1043 GetExpectedResultAsString( 1048 GetExpectedResultAsString(
1044 ui::VKEY_A, ui::EF_CONTROL_DOWN, ui::ET_KEY_PRESSED), 1049 ui::VKEY_A, ui::EF_CONTROL_DOWN, ui::ET_KEY_PRESSED),
1045 GetRewrittenEventAsString( 1050 GetRewrittenEventAsString(
1046 &rewriter, ui::VKEY_A, ui::EF_CONTROL_DOWN, ui::ET_KEY_PRESSED)); 1051 &rewriter, ui::VKEY_A, ui::EF_CONTROL_DOWN, ui::ET_KEY_PRESSED));
1047 1052
1048 // Press Alt+CapsLock+a. Confirm that Mod3Mask is rewritten to ControlMask. 1053 // Press Alt+CapsLock+a. Confirm that Mod3Mask is rewritten to ControlMask.
1049 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_A, 1054 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_A,
1050 ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, 1055 ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN,
1051 ui::ET_KEY_PRESSED), 1056 ui::ET_KEY_PRESSED),
1052 GetRewrittenEventAsString(&rewriter, 1057 GetRewrittenEventAsString(&rewriter,
1053 ui::VKEY_A, 1058 ui::VKEY_A,
1054 ui::EF_ALT_DOWN | ui::EF_CAPS_LOCK_DOWN, 1059 ui::EF_ALT_DOWN | ui::EF_MOD3_DOWN,
1055 ui::ET_KEY_PRESSED)); 1060 ui::ET_KEY_PRESSED));
1056 } 1061 }
1057 1062
1058 TEST_F(EventRewriterTest, TestRewriteCapsLockMod3InUse) { 1063 TEST_F(EventRewriterTest, TestRewriteCapsLockMod3InUse) {
1059 // Remap CapsLock to Control. 1064 // Remap CapsLock to Control.
1060 TestingPrefServiceSyncable prefs; 1065 TestingPrefServiceSyncable prefs;
1061 chromeos::Preferences::RegisterProfilePrefs(prefs.registry()); 1066 chromeos::Preferences::RegisterProfilePrefs(prefs.registry());
1062 IntegerPrefMember control; 1067 IntegerPrefMember control;
1063 control.Init(prefs::kLanguageRemapCapsLockKeyTo, &prefs); 1068 control.Init(prefs::kLanguageRemapCapsLockKeyTo, &prefs);
1064 control.SetValue(chromeos::input_method::kControlKey); 1069 control.SetValue(chromeos::input_method::kControlKey);
(...skipping 470 matching lines...) Expand 10 before | Expand all | Expand 10 after
1535 ui::ScopedXI2Event xev; 1540 ui::ScopedXI2Event xev;
1536 xev.InitGenericButtonEvent( 1541 xev.InitGenericButtonEvent(
1537 11, ui::ET_MOUSE_RELEASED, gfx::Point(), kLeftAndAltFlag); 1542 11, ui::ET_MOUSE_RELEASED, gfx::Point(), kLeftAndAltFlag);
1538 ui::MouseEvent release(xev); 1543 ui::MouseEvent release(xev);
1539 int flags = RewriteMouseEvent(&rewriter, release); 1544 int flags = RewriteMouseEvent(&rewriter, release);
1540 EXPECT_TRUE(ui::EF_RIGHT_MOUSE_BUTTON & flags); 1545 EXPECT_TRUE(ui::EF_RIGHT_MOUSE_BUTTON & flags);
1541 } 1546 }
1542 } 1547 }
1543 1548
1544 } // namespace chromeos 1549 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/events/event_rewriter.cc ('k') | ui/events/x/events_x.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698