OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/ui/ash/event_rewriter.h" | 5 #include "chrome/browser/ui/ash/event_rewriter.h" |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/stringprintf.h" | 9 #include "base/stringprintf.h" |
10 #include "chrome/browser/api/prefs/pref_member.h" | 10 #include "chrome/browser/api/prefs/pref_member.h" |
(...skipping 465 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
476 keycode_super_r_, | 476 keycode_super_r_, |
477 Mod1Mask)); | 477 Mod1Mask)); |
478 } | 478 } |
479 | 479 |
480 // For crbug.com/133896. | 480 // For crbug.com/133896. |
481 TEST_F(EventRewriterTest, TestRewriteCommandToControlWithControlRemapped) { | 481 TEST_F(EventRewriterTest, TestRewriteCommandToControlWithControlRemapped) { |
482 // Remap Control to Alt. | 482 // Remap Control to Alt. |
483 TestingPrefService prefs; | 483 TestingPrefService prefs; |
484 chromeos::Preferences::RegisterUserPrefs(&prefs); | 484 chromeos::Preferences::RegisterUserPrefs(&prefs); |
485 IntegerPrefMember control; | 485 IntegerPrefMember control; |
486 control.Init(prefs::kLanguageRemapControlKeyTo, &prefs, NULL); | 486 control.Init(prefs::kLanguageRemapControlKeyTo, &prefs); |
487 control.SetValue(chromeos::input_method::kAltKey); | 487 control.SetValue(chromeos::input_method::kAltKey); |
488 | 488 |
489 EventRewriter rewriter; | 489 EventRewriter rewriter; |
490 rewriter.set_pref_service_for_testing(&prefs); | 490 rewriter.set_pref_service_for_testing(&prefs); |
491 rewriter.DeviceAddedForTesting(0, "PC Keyboard"); | 491 rewriter.DeviceAddedForTesting(0, "PC Keyboard"); |
492 rewriter.set_last_device_id_for_testing(0); | 492 rewriter.set_last_device_id_for_testing(0); |
493 | 493 |
494 // XK_Control_L (left Control key) should be remapped to Alt. | 494 // XK_Control_L (left Control key) should be remapped to Alt. |
495 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_MENU, | 495 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_MENU, |
496 ui::EF_ALT_DOWN, | 496 ui::EF_ALT_DOWN, |
(...skipping 579 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1076 keycode_b_, | 1076 keycode_b_, |
1077 ShiftMask | ControlMask | Mod1Mask | | 1077 ShiftMask | ControlMask | Mod1Mask | |
1078 Mod4Mask)); | 1078 Mod4Mask)); |
1079 } | 1079 } |
1080 | 1080 |
1081 TEST_F(EventRewriterTest, TestRewriteModifiersDisableSome) { | 1081 TEST_F(EventRewriterTest, TestRewriteModifiersDisableSome) { |
1082 // Disable Search and Control keys. | 1082 // Disable Search and Control keys. |
1083 TestingPrefService prefs; | 1083 TestingPrefService prefs; |
1084 chromeos::Preferences::RegisterUserPrefs(&prefs); | 1084 chromeos::Preferences::RegisterUserPrefs(&prefs); |
1085 IntegerPrefMember search; | 1085 IntegerPrefMember search; |
1086 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs, NULL); | 1086 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs); |
1087 search.SetValue(chromeos::input_method::kVoidKey); | 1087 search.SetValue(chromeos::input_method::kVoidKey); |
1088 IntegerPrefMember control; | 1088 IntegerPrefMember control; |
1089 control.Init(prefs::kLanguageRemapControlKeyTo, &prefs, NULL); | 1089 control.Init(prefs::kLanguageRemapControlKeyTo, &prefs); |
1090 control.SetValue(chromeos::input_method::kVoidKey); | 1090 control.SetValue(chromeos::input_method::kVoidKey); |
1091 | 1091 |
1092 EventRewriter rewriter; | 1092 EventRewriter rewriter; |
1093 rewriter.set_pref_service_for_testing(&prefs); | 1093 rewriter.set_pref_service_for_testing(&prefs); |
1094 | 1094 |
1095 // Press left Alt with Shift. This key press shouldn't be affected by the | 1095 // Press left Alt with Shift. This key press shouldn't be affected by the |
1096 // pref. Confirm the event is not rewritten. | 1096 // pref. Confirm the event is not rewritten. |
1097 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_MENU, | 1097 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_MENU, |
1098 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, | 1098 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, |
1099 ui::ET_KEY_PRESSED, | 1099 ui::ET_KEY_PRESSED, |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1175 KeyPress), | 1175 KeyPress), |
1176 GetRewrittenEventAsString(&rewriter, | 1176 GetRewrittenEventAsString(&rewriter, |
1177 ui::VKEY_A, | 1177 ui::VKEY_A, |
1178 ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN, | 1178 ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN, |
1179 ui::ET_KEY_PRESSED, | 1179 ui::ET_KEY_PRESSED, |
1180 keycode_a_, | 1180 keycode_a_, |
1181 ControlMask | Mod1Mask | Mod4Mask)); | 1181 ControlMask | Mod1Mask | Mod4Mask)); |
1182 | 1182 |
1183 // Remap Alt to Control. | 1183 // Remap Alt to Control. |
1184 IntegerPrefMember alt; | 1184 IntegerPrefMember alt; |
1185 alt.Init(prefs::kLanguageRemapAltKeyTo, &prefs, NULL); | 1185 alt.Init(prefs::kLanguageRemapAltKeyTo, &prefs); |
1186 alt.SetValue(chromeos::input_method::kControlKey); | 1186 alt.SetValue(chromeos::input_method::kControlKey); |
1187 | 1187 |
1188 // Press left Alt. Confirm the event is now VKEY_CONTROL + XK_Control_L | 1188 // Press left Alt. Confirm the event is now VKEY_CONTROL + XK_Control_L |
1189 // even though the Control key itself is disabled. | 1189 // even though the Control key itself is disabled. |
1190 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CONTROL, | 1190 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CONTROL, |
1191 ui::EF_CONTROL_DOWN, | 1191 ui::EF_CONTROL_DOWN, |
1192 ui::ET_KEY_PRESSED, | 1192 ui::ET_KEY_PRESSED, |
1193 keycode_control_l_, | 1193 keycode_control_l_, |
1194 0U, | 1194 0U, |
1195 KeyPress), | 1195 KeyPress), |
(...skipping 18 matching lines...) Expand all Loading... |
1214 ui::ET_KEY_PRESSED, | 1214 ui::ET_KEY_PRESSED, |
1215 keycode_a_, | 1215 keycode_a_, |
1216 Mod1Mask)); | 1216 Mod1Mask)); |
1217 } | 1217 } |
1218 | 1218 |
1219 TEST_F(EventRewriterTest, TestRewriteModifiersRemapToControl) { | 1219 TEST_F(EventRewriterTest, TestRewriteModifiersRemapToControl) { |
1220 // Remap Search to Control. | 1220 // Remap Search to Control. |
1221 TestingPrefService prefs; | 1221 TestingPrefService prefs; |
1222 chromeos::Preferences::RegisterUserPrefs(&prefs); | 1222 chromeos::Preferences::RegisterUserPrefs(&prefs); |
1223 IntegerPrefMember search; | 1223 IntegerPrefMember search; |
1224 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs, NULL); | 1224 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs); |
1225 search.SetValue(chromeos::input_method::kControlKey); | 1225 search.SetValue(chromeos::input_method::kControlKey); |
1226 | 1226 |
1227 EventRewriter rewriter; | 1227 EventRewriter rewriter; |
1228 rewriter.set_pref_service_for_testing(&prefs); | 1228 rewriter.set_pref_service_for_testing(&prefs); |
1229 | 1229 |
1230 // Press Search. Confirm the event is now VKEY_CONTROL + XK_Control_L. | 1230 // Press Search. Confirm the event is now VKEY_CONTROL + XK_Control_L. |
1231 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CONTROL, | 1231 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CONTROL, |
1232 ui::EF_CONTROL_DOWN, | 1232 ui::EF_CONTROL_DOWN, |
1233 ui::ET_KEY_PRESSED, | 1233 ui::ET_KEY_PRESSED, |
1234 keycode_control_l_, | 1234 keycode_control_l_, |
1235 0U, | 1235 0U, |
1236 KeyPress), | 1236 KeyPress), |
1237 GetRewrittenEventAsString(&rewriter, | 1237 GetRewrittenEventAsString(&rewriter, |
1238 ui::VKEY_LWIN, | 1238 ui::VKEY_LWIN, |
1239 0, | 1239 0, |
1240 ui::ET_KEY_PRESSED, | 1240 ui::ET_KEY_PRESSED, |
1241 keycode_super_l_, | 1241 keycode_super_l_, |
1242 0U)); | 1242 0U)); |
1243 | 1243 |
1244 // Remap Alt to Control too. | 1244 // Remap Alt to Control too. |
1245 IntegerPrefMember alt; | 1245 IntegerPrefMember alt; |
1246 alt.Init(prefs::kLanguageRemapAltKeyTo, &prefs, NULL); | 1246 alt.Init(prefs::kLanguageRemapAltKeyTo, &prefs); |
1247 alt.SetValue(chromeos::input_method::kControlKey); | 1247 alt.SetValue(chromeos::input_method::kControlKey); |
1248 | 1248 |
1249 // Press left Alt. Confirm the event is now VKEY_CONTROL + XK_Control_L. | 1249 // Press left Alt. Confirm the event is now VKEY_CONTROL + XK_Control_L. |
1250 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CONTROL, | 1250 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CONTROL, |
1251 ui::EF_CONTROL_DOWN, | 1251 ui::EF_CONTROL_DOWN, |
1252 ui::ET_KEY_PRESSED, | 1252 ui::ET_KEY_PRESSED, |
1253 keycode_control_l_, | 1253 keycode_control_l_, |
1254 0U, | 1254 0U, |
1255 KeyPress), | 1255 KeyPress), |
1256 GetRewrittenEventAsString(&rewriter, | 1256 GetRewrittenEventAsString(&rewriter, |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1334 ui::ET_KEY_PRESSED, | 1334 ui::ET_KEY_PRESSED, |
1335 keycode_b_, | 1335 keycode_b_, |
1336 ShiftMask | ControlMask | Mod1Mask)); | 1336 ShiftMask | ControlMask | Mod1Mask)); |
1337 } | 1337 } |
1338 | 1338 |
1339 TEST_F(EventRewriterTest, TestRewriteModifiersRemapMany) { | 1339 TEST_F(EventRewriterTest, TestRewriteModifiersRemapMany) { |
1340 // Remap Search to Alt. | 1340 // Remap Search to Alt. |
1341 TestingPrefService prefs; | 1341 TestingPrefService prefs; |
1342 chromeos::Preferences::RegisterUserPrefs(&prefs); | 1342 chromeos::Preferences::RegisterUserPrefs(&prefs); |
1343 IntegerPrefMember search; | 1343 IntegerPrefMember search; |
1344 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs, NULL); | 1344 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs); |
1345 search.SetValue(chromeos::input_method::kAltKey); | 1345 search.SetValue(chromeos::input_method::kAltKey); |
1346 | 1346 |
1347 EventRewriter rewriter; | 1347 EventRewriter rewriter; |
1348 rewriter.set_pref_service_for_testing(&prefs); | 1348 rewriter.set_pref_service_for_testing(&prefs); |
1349 | 1349 |
1350 // Press Search. Confirm the event is now VKEY_MENU + XK_Alt_L. | 1350 // Press Search. Confirm the event is now VKEY_MENU + XK_Alt_L. |
1351 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_MENU, | 1351 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_MENU, |
1352 ui::EF_ALT_DOWN, | 1352 ui::EF_ALT_DOWN, |
1353 ui::ET_KEY_PRESSED, | 1353 ui::ET_KEY_PRESSED, |
1354 keycode_alt_l_, | 1354 keycode_alt_l_, |
1355 0U, | 1355 0U, |
1356 KeyPress), | 1356 KeyPress), |
1357 GetRewrittenEventAsString(&rewriter, | 1357 GetRewrittenEventAsString(&rewriter, |
1358 ui::VKEY_LWIN, | 1358 ui::VKEY_LWIN, |
1359 0, | 1359 0, |
1360 ui::ET_KEY_PRESSED, | 1360 ui::ET_KEY_PRESSED, |
1361 keycode_super_l_, | 1361 keycode_super_l_, |
1362 0U)); | 1362 0U)); |
1363 | 1363 |
1364 // Remap Alt to Control. | 1364 // Remap Alt to Control. |
1365 IntegerPrefMember alt; | 1365 IntegerPrefMember alt; |
1366 alt.Init(prefs::kLanguageRemapAltKeyTo, &prefs, NULL); | 1366 alt.Init(prefs::kLanguageRemapAltKeyTo, &prefs); |
1367 alt.SetValue(chromeos::input_method::kControlKey); | 1367 alt.SetValue(chromeos::input_method::kControlKey); |
1368 | 1368 |
1369 // Press left Alt. Confirm the event is now VKEY_CONTROL + XK_Control_L. | 1369 // Press left Alt. Confirm the event is now VKEY_CONTROL + XK_Control_L. |
1370 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CONTROL, | 1370 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CONTROL, |
1371 ui::EF_CONTROL_DOWN, | 1371 ui::EF_CONTROL_DOWN, |
1372 ui::ET_KEY_PRESSED, | 1372 ui::ET_KEY_PRESSED, |
1373 keycode_control_l_, | 1373 keycode_control_l_, |
1374 0U, | 1374 0U, |
1375 KeyPress), | 1375 KeyPress), |
1376 GetRewrittenEventAsString(&rewriter, | 1376 GetRewrittenEventAsString(&rewriter, |
1377 ui::VKEY_MENU, | 1377 ui::VKEY_MENU, |
1378 0, | 1378 0, |
1379 ui::ET_KEY_PRESSED, | 1379 ui::ET_KEY_PRESSED, |
1380 keycode_alt_l_, | 1380 keycode_alt_l_, |
1381 0U)); | 1381 0U)); |
1382 | 1382 |
1383 // Remap Control to Search. | 1383 // Remap Control to Search. |
1384 IntegerPrefMember control; | 1384 IntegerPrefMember control; |
1385 control.Init(prefs::kLanguageRemapControlKeyTo, &prefs, NULL); | 1385 control.Init(prefs::kLanguageRemapControlKeyTo, &prefs); |
1386 control.SetValue(chromeos::input_method::kSearchKey); | 1386 control.SetValue(chromeos::input_method::kSearchKey); |
1387 | 1387 |
1388 // Press left Control. Confirm the event is now VKEY_LWIN. | 1388 // Press left Control. Confirm the event is now VKEY_LWIN. |
1389 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_LWIN, | 1389 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_LWIN, |
1390 0, | 1390 0, |
1391 ui::ET_KEY_PRESSED, | 1391 ui::ET_KEY_PRESSED, |
1392 keycode_super_l_, | 1392 keycode_super_l_, |
1393 0U, | 1393 0U, |
1394 KeyPress), | 1394 KeyPress), |
1395 GetRewrittenEventAsString(&rewriter, | 1395 GetRewrittenEventAsString(&rewriter, |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1446 keycode_b_, | 1446 keycode_b_, |
1447 ShiftMask | ControlMask | Mod1Mask | | 1447 ShiftMask | ControlMask | Mod1Mask | |
1448 Mod4Mask)); | 1448 Mod4Mask)); |
1449 } | 1449 } |
1450 | 1450 |
1451 TEST_F(EventRewriterTest, TestRewriteModifiersRemapToCapsLock) { | 1451 TEST_F(EventRewriterTest, TestRewriteModifiersRemapToCapsLock) { |
1452 // Remap Search to Caps Lock. | 1452 // Remap Search to Caps Lock. |
1453 TestingPrefService prefs; | 1453 TestingPrefService prefs; |
1454 chromeos::Preferences::RegisterUserPrefs(&prefs); | 1454 chromeos::Preferences::RegisterUserPrefs(&prefs); |
1455 IntegerPrefMember search; | 1455 IntegerPrefMember search; |
1456 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs, NULL); | 1456 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs); |
1457 search.SetValue(chromeos::input_method::kCapsLockKey); | 1457 search.SetValue(chromeos::input_method::kCapsLockKey); |
1458 | 1458 |
1459 chromeos::input_method::MockXKeyboard xkeyboard; | 1459 chromeos::input_method::MockXKeyboard xkeyboard; |
1460 EventRewriter rewriter; | 1460 EventRewriter rewriter; |
1461 rewriter.set_pref_service_for_testing(&prefs); | 1461 rewriter.set_pref_service_for_testing(&prefs); |
1462 rewriter.set_xkeyboard_for_testing(&xkeyboard); | 1462 rewriter.set_xkeyboard_for_testing(&xkeyboard); |
1463 EXPECT_FALSE(xkeyboard.caps_lock_is_enabled_); | 1463 EXPECT_FALSE(xkeyboard.caps_lock_is_enabled_); |
1464 | 1464 |
1465 // Press Search. | 1465 // Press Search. |
1466 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CAPITAL, | 1466 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CAPITAL, |
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1621 0U)); | 1621 0U)); |
1622 EXPECT_TRUE(xkeyboard.caps_lock_is_enabled_); | 1622 EXPECT_TRUE(xkeyboard.caps_lock_is_enabled_); |
1623 | 1623 |
1624 *CommandLine::ForCurrentProcess() = original_cl; | 1624 *CommandLine::ForCurrentProcess() = original_cl; |
1625 } | 1625 } |
1626 | 1626 |
1627 TEST_F(EventRewriterTest, TestRewriteCapsLockToControl) { | 1627 TEST_F(EventRewriterTest, TestRewriteCapsLockToControl) { |
1628 TestingPrefService prefs; | 1628 TestingPrefService prefs; |
1629 chromeos::Preferences::RegisterUserPrefs(&prefs); | 1629 chromeos::Preferences::RegisterUserPrefs(&prefs); |
1630 IntegerPrefMember control; | 1630 IntegerPrefMember control; |
1631 control.Init(prefs::kLanguageRemapCapsLockKeyTo, &prefs, NULL); | 1631 control.Init(prefs::kLanguageRemapCapsLockKeyTo, &prefs); |
1632 control.SetValue(chromeos::input_method::kControlKey); | 1632 control.SetValue(chromeos::input_method::kControlKey); |
1633 | 1633 |
1634 EventRewriter rewriter; | 1634 EventRewriter rewriter; |
1635 rewriter.set_pref_service_for_testing(&prefs); | 1635 rewriter.set_pref_service_for_testing(&prefs); |
1636 | 1636 |
1637 // Press CapsLock+a. Confirm that Mod3Mask is rewritten to ControlMask. | 1637 // Press CapsLock+a. Confirm that Mod3Mask is rewritten to ControlMask. |
1638 // On Chrome OS, CapsLock works as a Mod3 modifier. | 1638 // On Chrome OS, CapsLock works as a Mod3 modifier. |
1639 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_A, | 1639 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_A, |
1640 ui::EF_CONTROL_DOWN, | 1640 ui::EF_CONTROL_DOWN, |
1641 ui::ET_KEY_PRESSED, | 1641 ui::ET_KEY_PRESSED, |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1676 ui::ET_KEY_PRESSED, | 1676 ui::ET_KEY_PRESSED, |
1677 keycode_a_, | 1677 keycode_a_, |
1678 Mod1Mask | Mod3Mask)); | 1678 Mod1Mask | Mod3Mask)); |
1679 } | 1679 } |
1680 | 1680 |
1681 TEST_F(EventRewriterTest, DISABLED_TestRewriteCapsLockToControlWithFlag) { | 1681 TEST_F(EventRewriterTest, DISABLED_TestRewriteCapsLockToControlWithFlag) { |
1682 // TODO(yusukes): Reenable the test once build servers are upgraded. | 1682 // TODO(yusukes): Reenable the test once build servers are upgraded. |
1683 TestingPrefService prefs; | 1683 TestingPrefService prefs; |
1684 chromeos::Preferences::RegisterUserPrefs(&prefs); | 1684 chromeos::Preferences::RegisterUserPrefs(&prefs); |
1685 IntegerPrefMember control; | 1685 IntegerPrefMember control; |
1686 control.Init(prefs::kLanguageRemapCapsLockKeyTo, &prefs, NULL); | 1686 control.Init(prefs::kLanguageRemapCapsLockKeyTo, &prefs); |
1687 control.SetValue(chromeos::input_method::kControlKey); | 1687 control.SetValue(chromeos::input_method::kControlKey); |
1688 | 1688 |
1689 EventRewriter rewriter; | 1689 EventRewriter rewriter; |
1690 rewriter.set_pref_service_for_testing(&prefs); | 1690 rewriter.set_pref_service_for_testing(&prefs); |
1691 | 1691 |
1692 // The prefs::kLanguageRemapCapsLockKeyTo pref should be ignored when | 1692 // The prefs::kLanguageRemapCapsLockKeyTo pref should be ignored when |
1693 // --has-chromeos-keyboard is set. | 1693 // --has-chromeos-keyboard is set. |
1694 const CommandLine original_cl(*CommandLine::ForCurrentProcess()); | 1694 const CommandLine original_cl(*CommandLine::ForCurrentProcess()); |
1695 CommandLine::ForCurrentProcess()->AppendSwitchASCII( | 1695 CommandLine::ForCurrentProcess()->AppendSwitchASCII( |
1696 switches::kHasChromeOSKeyboard, ""); | 1696 switches::kHasChromeOSKeyboard, ""); |
(...skipping 25 matching lines...) Expand all Loading... |
1722 Mod3Mask)); | 1722 Mod3Mask)); |
1723 | 1723 |
1724 *CommandLine::ForCurrentProcess() = original_cl; | 1724 *CommandLine::ForCurrentProcess() = original_cl; |
1725 } | 1725 } |
1726 | 1726 |
1727 TEST_F(EventRewriterTest, TestRewriteCapsLockMod3InUse) { | 1727 TEST_F(EventRewriterTest, TestRewriteCapsLockMod3InUse) { |
1728 // Remap CapsLock to Control. | 1728 // Remap CapsLock to Control. |
1729 TestingPrefService prefs; | 1729 TestingPrefService prefs; |
1730 chromeos::Preferences::RegisterUserPrefs(&prefs); | 1730 chromeos::Preferences::RegisterUserPrefs(&prefs); |
1731 IntegerPrefMember control; | 1731 IntegerPrefMember control; |
1732 control.Init(prefs::kLanguageRemapCapsLockKeyTo, &prefs, NULL); | 1732 control.Init(prefs::kLanguageRemapCapsLockKeyTo, &prefs); |
1733 control.SetValue(chromeos::input_method::kControlKey); | 1733 control.SetValue(chromeos::input_method::kControlKey); |
1734 | 1734 |
1735 EventRewriter rewriter; | 1735 EventRewriter rewriter; |
1736 rewriter.set_pref_service_for_testing(&prefs); | 1736 rewriter.set_pref_service_for_testing(&prefs); |
1737 input_method_manager_mock_->SetCurrentInputMethodId("xkb:de:neo:ger"); | 1737 input_method_manager_mock_->SetCurrentInputMethodId("xkb:de:neo:ger"); |
1738 | 1738 |
1739 // Press CapsLock+a. Confirm that Mod3Mask is NOT rewritten to ControlMask | 1739 // Press CapsLock+a. Confirm that Mod3Mask is NOT rewritten to ControlMask |
1740 // when Mod3Mask is already in use by the current XKB layout. | 1740 // when Mod3Mask is already in use by the current XKB layout. |
1741 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_A, | 1741 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_A, |
1742 0, | 1742 0, |
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1936 Mod4Mask | | 1936 Mod4Mask | |
1937 chromeos_tests[i].input_native_mods)); | 1937 chromeos_tests[i].input_native_mods)); |
1938 } | 1938 } |
1939 | 1939 |
1940 // Make Search key act like a Function key for accessing extended key | 1940 // Make Search key act like a Function key for accessing extended key |
1941 // bindings. | 1941 // bindings. |
1942 CommandLine::ForCurrentProcess()->AppendSwitchASCII( | 1942 CommandLine::ForCurrentProcess()->AppendSwitchASCII( |
1943 switches::kEnableChromebookFunctionKey, ""); | 1943 switches::kEnableChromebookFunctionKey, ""); |
1944 BooleanPrefMember search_key_as_function_key; | 1944 BooleanPrefMember search_key_as_function_key; |
1945 search_key_as_function_key.Init(prefs::kLanguageSearchKeyActsAsFunctionKey, | 1945 search_key_as_function_key.Init(prefs::kLanguageSearchKeyActsAsFunctionKey, |
1946 &prefs, NULL); | 1946 &prefs); |
1947 search_key_as_function_key.SetValue(true); | 1947 search_key_as_function_key.SetValue(true); |
1948 | 1948 |
1949 | 1949 |
1950 // An external keyboard should still not be remapped. | 1950 // An external keyboard should still not be remapped. |
1951 rewriter.set_force_chromeos_keyboard_for_testing(false); | 1951 rewriter.set_force_chromeos_keyboard_for_testing(false); |
1952 | 1952 |
1953 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(default_tests); ++i) { | 1953 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(default_tests); ++i) { |
1954 EXPECT_EQ(GetExpectedResultAsString(default_tests[i].output, | 1954 EXPECT_EQ(GetExpectedResultAsString(default_tests[i].output, |
1955 default_tests[i].output_mods, | 1955 default_tests[i].output_mods, |
1956 ui::ET_KEY_PRESSED, | 1956 ui::ET_KEY_PRESSED, |
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2280 Mod4Mask)); | 2280 Mod4Mask)); |
2281 } | 2281 } |
2282 | 2282 |
2283 // Make Search key act like a Function key for accessing extended key | 2283 // Make Search key act like a Function key for accessing extended key |
2284 // bindings. Now Search key as a modifier will make the number row | 2284 // bindings. Now Search key as a modifier will make the number row |
2285 // act like the F<number> row. | 2285 // act like the F<number> row. |
2286 CommandLine::ForCurrentProcess()->AppendSwitchASCII( | 2286 CommandLine::ForCurrentProcess()->AppendSwitchASCII( |
2287 switches::kEnableChromebookFunctionKey, ""); | 2287 switches::kEnableChromebookFunctionKey, ""); |
2288 BooleanPrefMember search_key_as_function_key; | 2288 BooleanPrefMember search_key_as_function_key; |
2289 search_key_as_function_key.Init(prefs::kLanguageSearchKeyActsAsFunctionKey, | 2289 search_key_as_function_key.Init(prefs::kLanguageSearchKeyActsAsFunctionKey, |
2290 &prefs, NULL); | 2290 &prefs); |
2291 search_key_as_function_key.SetValue(true); | 2291 search_key_as_function_key.SetValue(true); |
2292 | 2292 |
2293 // Without a Search key modifier, the results should be the same as before. | 2293 // Without a Search key modifier, the results should be the same as before. |
2294 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(chromeos_tests); ++i) { | 2294 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(chromeos_tests); ++i) { |
2295 EXPECT_EQ(GetExpectedResultAsString(chromeos_tests[i].output, | 2295 EXPECT_EQ(GetExpectedResultAsString(chromeos_tests[i].output, |
2296 0, | 2296 0, |
2297 ui::ET_KEY_PRESSED, | 2297 ui::ET_KEY_PRESSED, |
2298 chromeos_tests[i].output_native, | 2298 chromeos_tests[i].output_native, |
2299 0U, | 2299 0U, |
2300 KeyPress), | 2300 KeyPress), |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2373 *CommandLine::ForCurrentProcess() = original_cl; | 2373 *CommandLine::ForCurrentProcess() = original_cl; |
2374 } | 2374 } |
2375 | 2375 |
2376 TEST_F(EventRewriterTest, TestRewriteBackspaceAndArrowKeysWithSearchRemapped) { | 2376 TEST_F(EventRewriterTest, TestRewriteBackspaceAndArrowKeysWithSearchRemapped) { |
2377 const CommandLine original_cl(*CommandLine::ForCurrentProcess()); | 2377 const CommandLine original_cl(*CommandLine::ForCurrentProcess()); |
2378 | 2378 |
2379 // Remap Search to Control. | 2379 // Remap Search to Control. |
2380 TestingPrefService prefs; | 2380 TestingPrefService prefs; |
2381 chromeos::Preferences::RegisterUserPrefs(&prefs); | 2381 chromeos::Preferences::RegisterUserPrefs(&prefs); |
2382 IntegerPrefMember search; | 2382 IntegerPrefMember search; |
2383 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs, NULL); | 2383 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs); |
2384 search.SetValue(chromeos::input_method::kControlKey); | 2384 search.SetValue(chromeos::input_method::kControlKey); |
2385 | 2385 |
2386 EventRewriter rewriter; | 2386 EventRewriter rewriter; |
2387 rewriter.set_pref_service_for_testing(&prefs); | 2387 rewriter.set_pref_service_for_testing(&prefs); |
2388 | 2388 |
2389 CommandLine::ForCurrentProcess()->AppendSwitchASCII( | 2389 CommandLine::ForCurrentProcess()->AppendSwitchASCII( |
2390 switches::kHasChromeOSKeyboard, ""); | 2390 switches::kHasChromeOSKeyboard, ""); |
2391 rewriter.set_force_chromeos_keyboard_for_testing(true); | 2391 rewriter.set_force_chromeos_keyboard_for_testing(true); |
2392 | 2392 |
2393 // Alt+Search+Down -> End | 2393 // Alt+Search+Down -> End |
(...skipping 25 matching lines...) Expand all Loading... |
2419 ShiftMask | Mod1Mask | Mod4Mask)); | 2419 ShiftMask | Mod1Mask | Mod4Mask)); |
2420 | 2420 |
2421 *CommandLine::ForCurrentProcess() = original_cl; | 2421 *CommandLine::ForCurrentProcess() = original_cl; |
2422 } | 2422 } |
2423 | 2423 |
2424 TEST_F(EventRewriterTest, TestRewriteKeyEventSentByXSendEvent) { | 2424 TEST_F(EventRewriterTest, TestRewriteKeyEventSentByXSendEvent) { |
2425 // Remap Control to Alt. | 2425 // Remap Control to Alt. |
2426 TestingPrefService prefs; | 2426 TestingPrefService prefs; |
2427 chromeos::Preferences::RegisterUserPrefs(&prefs); | 2427 chromeos::Preferences::RegisterUserPrefs(&prefs); |
2428 IntegerPrefMember control; | 2428 IntegerPrefMember control; |
2429 control.Init(prefs::kLanguageRemapControlKeyTo, &prefs, NULL); | 2429 control.Init(prefs::kLanguageRemapControlKeyTo, &prefs); |
2430 control.SetValue(chromeos::input_method::kAltKey); | 2430 control.SetValue(chromeos::input_method::kAltKey); |
2431 | 2431 |
2432 EventRewriter rewriter; | 2432 EventRewriter rewriter; |
2433 rewriter.set_pref_service_for_testing(&prefs); | 2433 rewriter.set_pref_service_for_testing(&prefs); |
2434 | 2434 |
2435 // Send left control press. | 2435 // Send left control press. |
2436 std::string rewritten_event; | 2436 std::string rewritten_event; |
2437 { | 2437 { |
2438 XEvent xev; | 2438 XEvent xev; |
2439 InitXKeyEvent(ui::VKEY_CONTROL, 0, ui::ET_KEY_PRESSED, | 2439 InitXKeyEvent(ui::VKEY_CONTROL, 0, ui::ET_KEY_PRESSED, |
(...skipping 12 matching lines...) Expand all Loading... |
2452 // flag in the event is True. | 2452 // flag in the event is True. |
2453 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CONTROL, | 2453 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CONTROL, |
2454 ui::EF_CONTROL_DOWN, | 2454 ui::EF_CONTROL_DOWN, |
2455 ui::ET_KEY_PRESSED, | 2455 ui::ET_KEY_PRESSED, |
2456 keycode_control_l_, | 2456 keycode_control_l_, |
2457 0U, | 2457 0U, |
2458 KeyPress), | 2458 KeyPress), |
2459 rewritten_event); | 2459 rewritten_event); |
2460 } | 2460 } |
2461 #endif // OS_CHROMEOS | 2461 #endif // OS_CHROMEOS |
OLD | NEW |