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/prefs/pref_member.h" | 9 #include "base/prefs/pref_member.h" |
10 #include "base/stringprintf.h" | 10 #include "base/stringprintf.h" |
11 #include "chrome/common/chrome_switches.h" | |
12 #include "chrome/common/pref_names.h" | 11 #include "chrome/common/pref_names.h" |
13 #include "chrome/test/base/testing_pref_service_syncable.h" | 12 #include "chrome/test/base/testing_pref_service_syncable.h" |
14 #include "testing/gtest/include/gtest/gtest.h" | 13 #include "testing/gtest/include/gtest/gtest.h" |
15 #include "ui/base/events/event.h" | 14 #include "ui/base/events/event.h" |
16 | 15 |
17 #if defined(OS_CHROMEOS) | 16 #if defined(OS_CHROMEOS) |
18 #include <X11/keysym.h> | 17 #include <X11/keysym.h> |
19 #include <X11/XF86keysym.h> | 18 #include <X11/XF86keysym.h> |
20 #include <X11/Xlib.h> | 19 #include <X11/Xlib.h> |
21 | 20 |
22 #include "chrome/browser/chromeos/input_method/input_method_configuration.h" | 21 #include "chrome/browser/chromeos/input_method/input_method_configuration.h" |
23 #include "chrome/browser/chromeos/input_method/mock_input_method_manager.h" | 22 #include "chrome/browser/chromeos/input_method/mock_input_method_manager.h" |
24 #include "chrome/browser/chromeos/login/mock_user_manager.h" | 23 #include "chrome/browser/chromeos/login/mock_user_manager.h" |
25 #include "chrome/browser/chromeos/login/user_manager.h" | 24 #include "chrome/browser/chromeos/login/user_manager.h" |
26 #include "chrome/browser/chromeos/preferences.h" | 25 #include "chrome/browser/chromeos/preferences.h" |
| 26 #include "chromeos/chromeos_switches.h" |
27 #include "chromeos/ime/mock_xkeyboard.h" | 27 #include "chromeos/ime/mock_xkeyboard.h" |
28 #include "ui/base/x/x11_util.h" | 28 #include "ui/base/x/x11_util.h" |
29 | 29 |
30 namespace { | 30 namespace { |
31 | 31 |
32 void InitXKeyEvent(ui::KeyboardCode ui_keycode, | 32 void InitXKeyEvent(ui::KeyboardCode ui_keycode, |
33 int ui_flags, | 33 int ui_flags, |
34 ui::EventType ui_type, | 34 ui::EventType ui_type, |
35 KeyCode x_keycode, | 35 KeyCode x_keycode, |
36 unsigned int x_state, | 36 unsigned int x_state, |
(...skipping 846 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
883 } | 883 } |
884 | 884 |
885 TEST_F(EventRewriterTest, TestRewriteNumPadKeys) { | 885 TEST_F(EventRewriterTest, TestRewriteNumPadKeys) { |
886 TestRewriteNumPadKeys(); | 886 TestRewriteNumPadKeys(); |
887 } | 887 } |
888 | 888 |
889 TEST_F(EventRewriterTest, TestRewriteNumPadKeysWithDiamondKeyFlag) { | 889 TEST_F(EventRewriterTest, TestRewriteNumPadKeysWithDiamondKeyFlag) { |
890 // Make sure the num lock works correctly even when Diamond key exists. | 890 // Make sure the num lock works correctly even when Diamond key exists. |
891 const CommandLine original_cl(*CommandLine::ForCurrentProcess()); | 891 const CommandLine original_cl(*CommandLine::ForCurrentProcess()); |
892 CommandLine::ForCurrentProcess()->AppendSwitchASCII( | 892 CommandLine::ForCurrentProcess()->AppendSwitchASCII( |
893 switches::kHasChromeOSDiamondKey, ""); | 893 chromeos::switches::kHasChromeOSDiamondKey, ""); |
894 | 894 |
895 TestRewriteNumPadKeys(); | 895 TestRewriteNumPadKeys(); |
896 *CommandLine::ForCurrentProcess() = original_cl; | 896 *CommandLine::ForCurrentProcess() = original_cl; |
897 } | 897 } |
898 | 898 |
899 // Tests if the rewriter can handle a Command + Num Pad event. | 899 // Tests if the rewriter can handle a Command + Num Pad event. |
900 void EventRewriterTest::TestRewriteNumPadKeysOnAppleKeyboard() { | 900 void EventRewriterTest::TestRewriteNumPadKeysOnAppleKeyboard() { |
901 TestingPrefServiceSyncable prefs; | 901 TestingPrefServiceSyncable prefs; |
902 EventRewriter rewriter; | 902 EventRewriter rewriter; |
903 rewriter.DeviceAddedForTesting(0, "Apple Keyboard"); | 903 rewriter.DeviceAddedForTesting(0, "Apple Keyboard"); |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
937 | 937 |
938 TEST_F(EventRewriterTest, TestRewriteNumPadKeysOnAppleKeyboard) { | 938 TEST_F(EventRewriterTest, TestRewriteNumPadKeysOnAppleKeyboard) { |
939 TestRewriteNumPadKeysOnAppleKeyboard(); | 939 TestRewriteNumPadKeysOnAppleKeyboard(); |
940 } | 940 } |
941 | 941 |
942 TEST_F(EventRewriterTest, | 942 TEST_F(EventRewriterTest, |
943 TestRewriteNumPadKeysOnAppleKeyboardWithDiamondKeyFlag) { | 943 TestRewriteNumPadKeysOnAppleKeyboardWithDiamondKeyFlag) { |
944 // Makes sure the num lock works correctly even when Diamond key exists. | 944 // Makes sure the num lock works correctly even when Diamond key exists. |
945 const CommandLine original_cl(*CommandLine::ForCurrentProcess()); | 945 const CommandLine original_cl(*CommandLine::ForCurrentProcess()); |
946 CommandLine::ForCurrentProcess()->AppendSwitchASCII( | 946 CommandLine::ForCurrentProcess()->AppendSwitchASCII( |
947 switches::kHasChromeOSDiamondKey, ""); | 947 chromeos::switches::kHasChromeOSDiamondKey, ""); |
948 | 948 |
949 TestRewriteNumPadKeysOnAppleKeyboard(); | 949 TestRewriteNumPadKeysOnAppleKeyboard(); |
950 *CommandLine::ForCurrentProcess() = original_cl; | 950 *CommandLine::ForCurrentProcess() = original_cl; |
951 } | 951 } |
952 | 952 |
953 TEST_F(EventRewriterTest, TestRewriteModifiersNoRemap) { | 953 TEST_F(EventRewriterTest, TestRewriteModifiersNoRemap) { |
954 TestingPrefServiceSyncable prefs; | 954 TestingPrefServiceSyncable prefs; |
955 EventRewriter rewriter; | 955 EventRewriter rewriter; |
956 rewriter.set_pref_service_for_testing(&prefs); | 956 rewriter.set_pref_service_for_testing(&prefs); |
957 | 957 |
(...skipping 715 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1673 ui::ET_KEY_PRESSED, | 1673 ui::ET_KEY_PRESSED, |
1674 keycode_a_, | 1674 keycode_a_, |
1675 Mod2Mask)); | 1675 Mod2Mask)); |
1676 } | 1676 } |
1677 | 1677 |
1678 TEST_F(EventRewriterTest, DISABLED_TestRewriteDiamondKeyWithFlag) { | 1678 TEST_F(EventRewriterTest, DISABLED_TestRewriteDiamondKeyWithFlag) { |
1679 // TODO(yusukes): Reenable the test once build servers are upgraded. | 1679 // TODO(yusukes): Reenable the test once build servers are upgraded. |
1680 | 1680 |
1681 const CommandLine original_cl(*CommandLine::ForCurrentProcess()); | 1681 const CommandLine original_cl(*CommandLine::ForCurrentProcess()); |
1682 CommandLine::ForCurrentProcess()->AppendSwitchASCII( | 1682 CommandLine::ForCurrentProcess()->AppendSwitchASCII( |
1683 switches::kHasChromeOSDiamondKey, ""); | 1683 chromeos::switches::kHasChromeOSDiamondKey, ""); |
1684 | 1684 |
1685 TestingPrefServiceSyncable prefs; | 1685 TestingPrefServiceSyncable prefs; |
1686 chromeos::Preferences::RegisterUserPrefs(prefs.registry()); | 1686 chromeos::Preferences::RegisterUserPrefs(prefs.registry()); |
1687 | 1687 |
1688 chromeos::input_method::MockXKeyboard xkeyboard; | 1688 chromeos::input_method::MockXKeyboard xkeyboard; |
1689 EventRewriter rewriter; | 1689 EventRewriter rewriter; |
1690 rewriter.set_pref_service_for_testing(&prefs); | 1690 rewriter.set_pref_service_for_testing(&prefs); |
1691 rewriter.set_xkeyboard_for_testing(&xkeyboard); | 1691 rewriter.set_xkeyboard_for_testing(&xkeyboard); |
1692 | 1692 |
1693 // By default, F15 should work as Control. | 1693 // By default, F15 should work as Control. |
(...skipping 525 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2219 TestingPrefServiceSyncable prefs; | 2219 TestingPrefServiceSyncable prefs; |
2220 chromeos::Preferences::RegisterUserPrefs(prefs.registry()); | 2220 chromeos::Preferences::RegisterUserPrefs(prefs.registry()); |
2221 IntegerPrefMember search; | 2221 IntegerPrefMember search; |
2222 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs); | 2222 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs); |
2223 search.SetValue(chromeos::input_method::kControlKey); | 2223 search.SetValue(chromeos::input_method::kControlKey); |
2224 | 2224 |
2225 EventRewriter rewriter; | 2225 EventRewriter rewriter; |
2226 rewriter.set_pref_service_for_testing(&prefs); | 2226 rewriter.set_pref_service_for_testing(&prefs); |
2227 | 2227 |
2228 CommandLine::ForCurrentProcess()->AppendSwitchASCII( | 2228 CommandLine::ForCurrentProcess()->AppendSwitchASCII( |
2229 switches::kHasChromeOSKeyboard, ""); | 2229 chromeos::switches::kHasChromeOSKeyboard, ""); |
2230 | 2230 |
2231 // Alt+Search+Down -> End | 2231 // Alt+Search+Down -> End |
2232 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_END, | 2232 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_END, |
2233 0, | 2233 0, |
2234 ui::ET_KEY_PRESSED, | 2234 ui::ET_KEY_PRESSED, |
2235 keycode_end_, | 2235 keycode_end_, |
2236 0U, | 2236 0U, |
2237 KeyPress), | 2237 KeyPress), |
2238 GetRewrittenEventAsString(&rewriter, | 2238 GetRewrittenEventAsString(&rewriter, |
2239 ui::VKEY_DOWN, | 2239 ui::VKEY_DOWN, |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2290 // flag in the event is True. | 2290 // flag in the event is True. |
2291 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CONTROL, | 2291 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CONTROL, |
2292 ui::EF_CONTROL_DOWN, | 2292 ui::EF_CONTROL_DOWN, |
2293 ui::ET_KEY_PRESSED, | 2293 ui::ET_KEY_PRESSED, |
2294 keycode_control_l_, | 2294 keycode_control_l_, |
2295 0U, | 2295 0U, |
2296 KeyPress), | 2296 KeyPress), |
2297 rewritten_event); | 2297 rewritten_event); |
2298 } | 2298 } |
2299 #endif // OS_CHROMEOS | 2299 #endif // OS_CHROMEOS |
OLD | NEW |