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

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

Issue 399443004: Maintain Diamond (F15) modifier state when rewriting. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 5 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/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 999 matching lines...) Expand 10 before | Expand all | Expand 10 after
1010 rewriter.set_ime_keyboard_for_testing(&ime_keyboard); 1010 rewriter.set_ime_keyboard_for_testing(&ime_keyboard);
1011 1011
1012 KeyTestCase tests[] = { 1012 KeyTestCase tests[] = {
1013 // F15 should work as Ctrl when --has-chromeos-diamond-key is not 1013 // F15 should work as Ctrl when --has-chromeos-diamond-key is not
1014 // specified. 1014 // specified.
1015 {KeyTestCase::TEST_VKEY, 1015 {KeyTestCase::TEST_VKEY,
1016 ui::ET_KEY_PRESSED, 1016 ui::ET_KEY_PRESSED,
1017 {ui::VKEY_F15, ui::EF_NONE}, 1017 {ui::VKEY_F15, ui::EF_NONE},
1018 {ui::VKEY_CONTROL, ui::EF_CONTROL_DOWN}}, 1018 {ui::VKEY_CONTROL, ui::EF_CONTROL_DOWN}},
1019 1019
1020 {KeyTestCase::TEST_VKEY,
1021 ui::ET_KEY_RELEASED,
1022 {ui::VKEY_F15, ui::EF_NONE},
1023 {ui::VKEY_CONTROL, ui::EF_NONE}},
1024
1020 // However, Mod2Mask should not be rewritten to CtrlMask when 1025 // However, Mod2Mask should not be rewritten to CtrlMask when
1021 // --has-chromeos-diamond-key is not specified. 1026 // --has-chromeos-diamond-key is not specified.
1022 {KeyTestCase::TEST_VKEY, 1027 {KeyTestCase::TEST_VKEY,
1023 ui::ET_KEY_PRESSED, 1028 ui::ET_KEY_PRESSED,
1024 {ui::VKEY_A, ui::EF_NONE}, 1029 {ui::VKEY_A, ui::EF_NONE},
1025 {ui::VKEY_A, ui::EF_NONE}}, 1030 {ui::VKEY_A, ui::EF_NONE}},
1026 }; 1031 };
1027 1032
1028 for (size_t i = 0; i < arraysize(tests); ++i) { 1033 for (size_t i = 0; i < arraysize(tests); ++i) {
1029 SCOPED_TRACE(i); 1034 SCOPED_TRACE(i);
(...skipping 13 matching lines...) Expand all
1043 EventRewriter rewriter(NULL); 1048 EventRewriter rewriter(NULL);
1044 rewriter.KeyboardDeviceAddedForTesting(kKeyboardDeviceId, "PC Keyboard"); 1049 rewriter.KeyboardDeviceAddedForTesting(kKeyboardDeviceId, "PC Keyboard");
1045 rewriter.set_pref_service_for_testing(&prefs); 1050 rewriter.set_pref_service_for_testing(&prefs);
1046 rewriter.set_ime_keyboard_for_testing(&ime_keyboard); 1051 rewriter.set_ime_keyboard_for_testing(&ime_keyboard);
1047 1052
1048 // By default, F15 should work as Control. 1053 // By default, F15 should work as Control.
1049 EXPECT_EQ(GetExpectedResultAsString( 1054 EXPECT_EQ(GetExpectedResultAsString(
1050 ui::VKEY_CONTROL, ui::EF_CONTROL_DOWN, ui::ET_KEY_PRESSED), 1055 ui::VKEY_CONTROL, ui::EF_CONTROL_DOWN, ui::ET_KEY_PRESSED),
1051 GetRewrittenEventAsString( 1056 GetRewrittenEventAsString(
1052 &rewriter, ui::VKEY_F15, ui::EF_NONE, ui::ET_KEY_PRESSED)); 1057 &rewriter, ui::VKEY_F15, ui::EF_NONE, ui::ET_KEY_PRESSED));
1058 // Check that Control is applied to a subsequent key press.
1059 EXPECT_EQ(GetExpectedResultAsString(
1060 ui::VKEY_A, ui::EF_CONTROL_DOWN, ui::ET_KEY_PRESSED),
1061 GetRewrittenEventAsString(
1062 &rewriter, ui::VKEY_A, ui::EF_NONE, ui::ET_KEY_PRESSED));
1063 // Release F15
1064 EXPECT_EQ(GetExpectedResultAsString(
1065 ui::VKEY_CONTROL, ui::EF_NONE, ui::ET_KEY_RELEASED),
1066 GetRewrittenEventAsString(
1067 &rewriter, ui::VKEY_F15, ui::EF_NONE, ui::ET_KEY_RELEASED));
1068 // Check that Control is no longer applied to a subsequent key press.
1069 EXPECT_EQ(
1070 GetExpectedResultAsString(ui::VKEY_A, ui::EF_NONE, ui::ET_KEY_PRESSED),
1071 GetRewrittenEventAsString(
1072 &rewriter, ui::VKEY_A, ui::EF_NONE, ui::ET_KEY_PRESSED));
1053 1073
1054 IntegerPrefMember diamond; 1074 IntegerPrefMember diamond;
1055 diamond.Init(prefs::kLanguageRemapDiamondKeyTo, &prefs); 1075 diamond.Init(prefs::kLanguageRemapDiamondKeyTo, &prefs);
1056 diamond.SetValue(chromeos::input_method::kVoidKey); 1076 diamond.SetValue(chromeos::input_method::kVoidKey);
1057 1077
1058 EXPECT_EQ(GetExpectedResultAsString( 1078 EXPECT_EQ(GetExpectedResultAsString(
1059 ui::VKEY_UNKNOWN, ui::EF_NONE, ui::ET_KEY_PRESSED), 1079 ui::VKEY_UNKNOWN, ui::EF_NONE, ui::ET_KEY_PRESSED),
1060 GetRewrittenEventAsString( 1080 GetRewrittenEventAsString(
1061 &rewriter, ui::VKEY_F15, ui::EF_NONE, ui::ET_KEY_PRESSED)); 1081 &rewriter, ui::VKEY_F15, ui::EF_NONE, ui::ET_KEY_PRESSED));
1082 // Check that no modifier is applied to another key.
1083 EXPECT_EQ(
1084 GetExpectedResultAsString(ui::VKEY_A, ui::EF_NONE, ui::ET_KEY_PRESSED),
1085 GetRewrittenEventAsString(
1086 &rewriter, ui::VKEY_A, ui::EF_NONE, ui::ET_KEY_PRESSED));
1062 1087
1063 diamond.SetValue(chromeos::input_method::kControlKey); 1088 diamond.SetValue(chromeos::input_method::kControlKey);
1064 1089
1065 EXPECT_EQ(GetExpectedResultAsString( 1090 EXPECT_EQ(GetExpectedResultAsString(
1066 ui::VKEY_CONTROL, ui::EF_CONTROL_DOWN, ui::ET_KEY_PRESSED), 1091 ui::VKEY_CONTROL, ui::EF_CONTROL_DOWN, ui::ET_KEY_PRESSED),
1067 GetRewrittenEventAsString( 1092 GetRewrittenEventAsString(
1068 &rewriter, ui::VKEY_F15, ui::EF_NONE, ui::ET_KEY_PRESSED)); 1093 &rewriter, ui::VKEY_F15, ui::EF_NONE, ui::ET_KEY_PRESSED));
1094 // Check that Control is applied to a subsequent key press.
1095 EXPECT_EQ(GetExpectedResultAsString(
1096 ui::VKEY_A, ui::EF_CONTROL_DOWN, ui::ET_KEY_PRESSED),
1097 GetRewrittenEventAsString(
1098 &rewriter, ui::VKEY_A, ui::EF_NONE, ui::ET_KEY_PRESSED));
1099 // Release F15
1100 EXPECT_EQ(GetExpectedResultAsString(
1101 ui::VKEY_CONTROL, ui::EF_NONE, ui::ET_KEY_RELEASED),
1102 GetRewrittenEventAsString(
1103 &rewriter, ui::VKEY_F15, ui::EF_NONE, ui::ET_KEY_RELEASED));
1104 // Check that Control is no longer applied to a subsequent key press.
1105 EXPECT_EQ(
1106 GetExpectedResultAsString(ui::VKEY_A, ui::EF_NONE, ui::ET_KEY_PRESSED),
1107 GetRewrittenEventAsString(
1108 &rewriter, ui::VKEY_A, ui::EF_NONE, ui::ET_KEY_PRESSED));
1069 1109
1070 diamond.SetValue(chromeos::input_method::kAltKey); 1110 diamond.SetValue(chromeos::input_method::kAltKey);
1071 1111
1072 EXPECT_EQ(GetExpectedResultAsString( 1112 EXPECT_EQ(GetExpectedResultAsString(
1073 ui::VKEY_MENU, ui::EF_ALT_DOWN, ui::ET_KEY_PRESSED), 1113 ui::VKEY_MENU, ui::EF_ALT_DOWN, ui::ET_KEY_PRESSED),
1074 GetRewrittenEventAsString( 1114 GetRewrittenEventAsString(
1075 &rewriter, ui::VKEY_F15, ui::EF_NONE, ui::ET_KEY_PRESSED)); 1115 &rewriter, ui::VKEY_F15, ui::EF_NONE, ui::ET_KEY_PRESSED));
1116 // Check that Alt is applied to a subsequent key press.
1117 EXPECT_EQ(GetExpectedResultAsString(
1118 ui::VKEY_A, ui::EF_ALT_DOWN, ui::ET_KEY_PRESSED),
1119 GetRewrittenEventAsString(
1120 &rewriter, ui::VKEY_A, ui::EF_NONE, ui::ET_KEY_PRESSED));
1121 // Release F15
1122 EXPECT_EQ(GetExpectedResultAsString(
1123 ui::VKEY_MENU, ui::EF_NONE, ui::ET_KEY_RELEASED),
1124 GetRewrittenEventAsString(
1125 &rewriter, ui::VKEY_F15, ui::EF_NONE, ui::ET_KEY_RELEASED));
1126 // Check that Alt is no longer applied to a subsequent key press.
1127 EXPECT_EQ(
1128 GetExpectedResultAsString(ui::VKEY_A, ui::EF_NONE, ui::ET_KEY_PRESSED),
1129 GetRewrittenEventAsString(
1130 &rewriter, ui::VKEY_A, ui::EF_NONE, ui::ET_KEY_PRESSED));
1076 1131
1077 diamond.SetValue(chromeos::input_method::kCapsLockKey); 1132 diamond.SetValue(chromeos::input_method::kCapsLockKey);
1078 1133
1079 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CAPITAL, 1134 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CAPITAL,
1080 ui::EF_CAPS_LOCK_DOWN | ui::EF_MOD3_DOWN, 1135 ui::EF_CAPS_LOCK_DOWN | ui::EF_MOD3_DOWN,
1081 ui::ET_KEY_PRESSED), 1136 ui::ET_KEY_PRESSED),
1082 GetRewrittenEventAsString( 1137 GetRewrittenEventAsString(
1083 &rewriter, ui::VKEY_F15, ui::EF_NONE, ui::ET_KEY_PRESSED)); 1138 &rewriter, ui::VKEY_F15, ui::EF_NONE, ui::ET_KEY_PRESSED));
1139 // Check that Caps is applied to a subsequent key press.
1140 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_A,
1141 ui::EF_CAPS_LOCK_DOWN | ui::EF_MOD3_DOWN,
1142 ui::ET_KEY_PRESSED),
1143 GetRewrittenEventAsString(
1144 &rewriter, ui::VKEY_A, ui::EF_NONE, ui::ET_KEY_PRESSED));
1145 // Release F15
1146 EXPECT_EQ(GetExpectedResultAsString(
1147 ui::VKEY_CAPITAL, ui::EF_NONE, ui::ET_KEY_RELEASED),
1148 GetRewrittenEventAsString(
1149 &rewriter, ui::VKEY_F15, ui::EF_NONE, ui::ET_KEY_RELEASED));
1150 // Check that Control is no longer applied to a subsequent key press.
1151 EXPECT_EQ(
1152 GetExpectedResultAsString(ui::VKEY_A, ui::EF_NONE, ui::ET_KEY_PRESSED),
1153 GetRewrittenEventAsString(
1154 &rewriter, ui::VKEY_A, ui::EF_NONE, ui::ET_KEY_PRESSED));
1084 1155
1085 *CommandLine::ForCurrentProcess() = original_cl; 1156 *CommandLine::ForCurrentProcess() = original_cl;
1086 } 1157 }
1087 1158
1088 TEST_F(EventRewriterTest, TestRewriteCapsLockToControl) { 1159 TEST_F(EventRewriterTest, TestRewriteCapsLockToControl) {
1089 // Remap CapsLock to Control. 1160 // Remap CapsLock to Control.
1090 TestingPrefServiceSyncable prefs; 1161 TestingPrefServiceSyncable prefs;
1091 chromeos::Preferences::RegisterProfilePrefs(prefs.registry()); 1162 chromeos::Preferences::RegisterProfilePrefs(prefs.registry());
1092 IntegerPrefMember control; 1163 IntegerPrefMember control;
1093 control.Init(prefs::kLanguageRemapCapsLockKeyTo, &prefs); 1164 control.Init(prefs::kLanguageRemapCapsLockKeyTo, &prefs);
(...skipping 1287 matching lines...) Expand 10 before | Expand all | Expand 10 after
2381 EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_ALTGR_DOWN)); 2452 EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_ALTGR_DOWN));
2382 EXPECT_TRUE(overlay_->GetModifierVisible(ui::EF_MOD3_DOWN)); 2453 EXPECT_TRUE(overlay_->GetModifierVisible(ui::EF_MOD3_DOWN));
2383 2454
2384 // Turn off AltGr and Mod3. 2455 // Turn off AltGr and Mod3.
2385 sticky_keys_controller_->SetModifiersEnabled(false, false); 2456 sticky_keys_controller_->SetModifiersEnabled(false, false);
2386 EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_ALTGR_DOWN)); 2457 EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_ALTGR_DOWN));
2387 EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_MOD3_DOWN)); 2458 EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_MOD3_DOWN));
2388 } 2459 }
2389 2460
2390 } // namespace chromeos 2461 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698