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 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
149 keycode_3_(XKeysymToKeycode(display_, XK_3)), | 149 keycode_3_(XKeysymToKeycode(display_, XK_3)), |
150 keycode_4_(XKeysymToKeycode(display_, XK_4)), | 150 keycode_4_(XKeysymToKeycode(display_, XK_4)), |
151 keycode_5_(XKeysymToKeycode(display_, XK_5)), | 151 keycode_5_(XKeysymToKeycode(display_, XK_5)), |
152 keycode_6_(XKeysymToKeycode(display_, XK_6)), | 152 keycode_6_(XKeysymToKeycode(display_, XK_6)), |
153 keycode_7_(XKeysymToKeycode(display_, XK_7)), | 153 keycode_7_(XKeysymToKeycode(display_, XK_7)), |
154 keycode_8_(XKeysymToKeycode(display_, XK_8)), | 154 keycode_8_(XKeysymToKeycode(display_, XK_8)), |
155 keycode_9_(XKeysymToKeycode(display_, XK_9)), | 155 keycode_9_(XKeysymToKeycode(display_, XK_9)), |
156 keycode_0_(XKeysymToKeycode(display_, XK_0)), | 156 keycode_0_(XKeysymToKeycode(display_, XK_0)), |
157 keycode_minus_(XKeysymToKeycode(display_, XK_minus)), | 157 keycode_minus_(XKeysymToKeycode(display_, XK_minus)), |
158 keycode_equal_(XKeysymToKeycode(display_, XK_equal)), | 158 keycode_equal_(XKeysymToKeycode(display_, XK_equal)), |
| 159 keycode_period_(XKeysymToKeycode(display_, XK_period)), |
| 160 keycode_insert_(XKeysymToKeycode(display_, XK_Insert)), |
159 input_method_manager_mock_(NULL) { | 161 input_method_manager_mock_(NULL) { |
160 } | 162 } |
161 virtual ~EventRewriterTest() {} | 163 virtual ~EventRewriterTest() {} |
162 | 164 |
163 virtual void SetUp() { | 165 virtual void SetUp() { |
164 // Mocking user manager because the real one needs to be called on UI thread | 166 // Mocking user manager because the real one needs to be called on UI thread |
165 EXPECT_CALL(*user_manager_mock_.user_manager(), IsLoggedInAsGuest()) | 167 EXPECT_CALL(*user_manager_mock_.user_manager(), IsLoggedInAsGuest()) |
166 .WillRepeatedly(testing::Return(false)); | 168 .WillRepeatedly(testing::Return(false)); |
167 input_method_manager_mock_ = | 169 input_method_manager_mock_ = |
168 new chromeos::input_method::MockInputMethodManager; | 170 new chromeos::input_method::MockInputMethodManager; |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
250 const KeyCode keycode_3_; | 252 const KeyCode keycode_3_; |
251 const KeyCode keycode_4_; | 253 const KeyCode keycode_4_; |
252 const KeyCode keycode_5_; | 254 const KeyCode keycode_5_; |
253 const KeyCode keycode_6_; | 255 const KeyCode keycode_6_; |
254 const KeyCode keycode_7_; | 256 const KeyCode keycode_7_; |
255 const KeyCode keycode_8_; | 257 const KeyCode keycode_8_; |
256 const KeyCode keycode_9_; | 258 const KeyCode keycode_9_; |
257 const KeyCode keycode_0_; | 259 const KeyCode keycode_0_; |
258 const KeyCode keycode_minus_; | 260 const KeyCode keycode_minus_; |
259 const KeyCode keycode_equal_; | 261 const KeyCode keycode_equal_; |
| 262 const KeyCode keycode_period_; |
| 263 const KeyCode keycode_insert_; |
260 chromeos::ScopedMockUserManagerEnabler user_manager_mock_; | 264 chromeos::ScopedMockUserManagerEnabler user_manager_mock_; |
261 chromeos::input_method::MockInputMethodManager* input_method_manager_mock_; | 265 chromeos::input_method::MockInputMethodManager* input_method_manager_mock_; |
262 }; | 266 }; |
263 | 267 |
264 } // namespace | 268 } // namespace |
265 #else | 269 #else |
266 class EventRewriterTest : public testing::Test { | 270 class EventRewriterTest : public testing::Test { |
267 public: | 271 public: |
268 EventRewriterTest() {} | 272 EventRewriterTest() {} |
269 virtual ~EventRewriterTest() {} | 273 virtual ~EventRewriterTest() {} |
(...skipping 1477 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1747 GetRewrittenEventAsString(&rewriter, | 1751 GetRewrittenEventAsString(&rewriter, |
1748 ui::VKEY_A, | 1752 ui::VKEY_A, |
1749 0, | 1753 0, |
1750 ui::ET_KEY_PRESSED, | 1754 ui::ET_KEY_PRESSED, |
1751 keycode_a_, | 1755 keycode_a_, |
1752 Mod3Mask)); | 1756 Mod3Mask)); |
1753 | 1757 |
1754 input_method_manager_mock_->SetCurrentInputMethodId("xkb:us::eng"); | 1758 input_method_manager_mock_->SetCurrentInputMethodId("xkb:us::eng"); |
1755 } | 1759 } |
1756 | 1760 |
1757 TEST_F(EventRewriterTest, TestRewriteBackspaceAndArrowKeys) { | 1761 TEST_F(EventRewriterTest, TestRewriteExtendedKeys) { |
1758 TestingPrefService prefs; | 1762 TestingPrefService prefs; |
1759 chromeos::Preferences::RegisterUserPrefs(&prefs); | 1763 chromeos::Preferences::RegisterUserPrefs(&prefs); |
1760 EventRewriter rewriter; | 1764 EventRewriter rewriter; |
1761 rewriter.set_pref_service_for_testing(&prefs); | 1765 rewriter.set_pref_service_for_testing(&prefs); |
1762 | 1766 |
1763 // On non-chromebooks, the keyboard doesn't need to be remapped. | 1767 // On non-chromebooks, the keyboard doesn't need to be remapped. |
1764 | 1768 |
1765 struct { | 1769 struct { |
1766 ui::KeyboardCode input; | 1770 ui::KeyboardCode input; |
1767 KeyCode input_native; | 1771 KeyCode input_native; |
(...skipping 16 matching lines...) Expand all Loading... |
1784 ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, Mod1Mask | ControlMask, | 1788 ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, Mod1Mask | ControlMask, |
1785 ui::VKEY_UP, keycode_up_, | 1789 ui::VKEY_UP, keycode_up_, |
1786 ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, Mod1Mask | ControlMask, }, | 1790 ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, Mod1Mask | ControlMask, }, |
1787 { ui::VKEY_DOWN, keycode_down_, | 1791 { ui::VKEY_DOWN, keycode_down_, |
1788 ui::EF_ALT_DOWN, Mod1Mask, | 1792 ui::EF_ALT_DOWN, Mod1Mask, |
1789 ui::VKEY_DOWN, keycode_down_, | 1793 ui::VKEY_DOWN, keycode_down_, |
1790 ui::EF_ALT_DOWN, Mod1Mask, }, | 1794 ui::EF_ALT_DOWN, Mod1Mask, }, |
1791 { ui::VKEY_LEFT, keycode_left_, 0, 0, | 1795 { ui::VKEY_LEFT, keycode_left_, 0, 0, |
1792 ui::VKEY_LEFT, keycode_left_, 0, 0 }, | 1796 ui::VKEY_LEFT, keycode_left_, 0, 0 }, |
1793 { ui::VKEY_RIGHT, keycode_right_, 0, 0, | 1797 { ui::VKEY_RIGHT, keycode_right_, 0, 0, |
1794 ui::VKEY_RIGHT, keycode_right_, 0, 0 } | 1798 ui::VKEY_RIGHT, keycode_right_, 0, 0 }, |
| 1799 { ui::VKEY_OEM_PERIOD, keycode_period_, 0, 0, |
| 1800 ui::VKEY_OEM_PERIOD, keycode_period_, 0, 0 } |
1795 }; | 1801 }; |
1796 | 1802 |
1797 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(default_tests); ++i) { | 1803 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(default_tests); ++i) { |
1798 EXPECT_EQ(GetExpectedResultAsString(default_tests[i].output, | 1804 EXPECT_EQ(GetExpectedResultAsString(default_tests[i].output, |
1799 default_tests[i].output_mods, | 1805 default_tests[i].output_mods, |
1800 ui::ET_KEY_PRESSED, | 1806 ui::ET_KEY_PRESSED, |
1801 default_tests[i].output_native, | 1807 default_tests[i].output_native, |
1802 default_tests[i].output_native_mods, | 1808 default_tests[i].output_native_mods, |
1803 KeyPress), | 1809 KeyPress), |
1804 GetRewrittenEventAsString(&rewriter, | 1810 GetRewrittenEventAsString(&rewriter, |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1896 0, 0, }, | 1902 0, 0, }, |
1897 // Ctrl+Alt+Up -> Home | 1903 // Ctrl+Alt+Up -> Home |
1898 { ui::VKEY_UP, keycode_up_, | 1904 { ui::VKEY_UP, keycode_up_, |
1899 ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, Mod1Mask | ControlMask, | 1905 ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, Mod1Mask | ControlMask, |
1900 ui::VKEY_HOME, keycode_home_, | 1906 ui::VKEY_HOME, keycode_home_, |
1901 0, 0, }, | 1907 0, 0, }, |
1902 // Ctrl+Alt+Down -> End | 1908 // Ctrl+Alt+Down -> End |
1903 { ui::VKEY_DOWN, keycode_down_, | 1909 { ui::VKEY_DOWN, keycode_down_, |
1904 ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, Mod1Mask | ControlMask, | 1910 ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, Mod1Mask | ControlMask, |
1905 ui::VKEY_END, keycode_end_, | 1911 ui::VKEY_END, keycode_end_, |
1906 0, 0, } | 1912 0, 0, }, |
| 1913 // Period -> Period |
| 1914 { ui::VKEY_OEM_PERIOD, keycode_period_, 0, 0, |
| 1915 ui::VKEY_OEM_PERIOD, keycode_period_, 0, 0 } |
1907 }; | 1916 }; |
1908 | 1917 |
1909 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(chromeos_tests); ++i) { | 1918 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(chromeos_tests); ++i) { |
1910 EXPECT_EQ(GetExpectedResultAsString(chromeos_tests[i].output, | 1919 EXPECT_EQ(GetExpectedResultAsString(chromeos_tests[i].output, |
1911 chromeos_tests[i].output_mods, | 1920 chromeos_tests[i].output_mods, |
1912 ui::ET_KEY_PRESSED, | 1921 ui::ET_KEY_PRESSED, |
1913 chromeos_tests[i].output_native, | 1922 chromeos_tests[i].output_native, |
1914 chromeos_tests[i].output_native_mods, | 1923 chromeos_tests[i].output_native_mods, |
1915 KeyPress), | 1924 KeyPress), |
1916 GetRewrittenEventAsString(&rewriter, | 1925 GetRewrittenEventAsString(&rewriter, |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2047 ui::EF_CONTROL_DOWN, ControlMask }, | 2056 ui::EF_CONTROL_DOWN, ControlMask }, |
2048 // Search+Right -> End | 2057 // Search+Right -> End |
2049 { ui::VKEY_RIGHT, keycode_right_, | 2058 { ui::VKEY_RIGHT, keycode_right_, |
2050 0, Mod4Mask, | 2059 0, Mod4Mask, |
2051 ui::VKEY_END, keycode_end_, | 2060 ui::VKEY_END, keycode_end_, |
2052 0, 0, }, | 2061 0, 0, }, |
2053 // Control+Search+Right -> End | 2062 // Control+Search+Right -> End |
2054 { ui::VKEY_RIGHT, keycode_right_, | 2063 { ui::VKEY_RIGHT, keycode_right_, |
2055 ui::EF_CONTROL_DOWN, Mod4Mask | ControlMask, | 2064 ui::EF_CONTROL_DOWN, Mod4Mask | ControlMask, |
2056 ui::VKEY_END, keycode_end_, | 2065 ui::VKEY_END, keycode_end_, |
| 2066 ui::EF_CONTROL_DOWN, ControlMask }, |
| 2067 // Search+Period -> Insert |
| 2068 { ui::VKEY_OEM_PERIOD, keycode_period_, 0, Mod4Mask, |
| 2069 ui::VKEY_INSERT, keycode_insert_, 0, 0 }, |
| 2070 // Control+Search+Period -> Control+Insert |
| 2071 { ui::VKEY_OEM_PERIOD, keycode_period_, |
| 2072 ui::EF_CONTROL_DOWN, Mod4Mask | ControlMask, |
| 2073 ui::VKEY_INSERT, keycode_insert_, |
2057 ui::EF_CONTROL_DOWN, ControlMask } | 2074 ui::EF_CONTROL_DOWN, ControlMask } |
2058 }; | 2075 }; |
2059 | 2076 |
2060 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(search_tests); ++i) { | 2077 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(search_tests); ++i) { |
2061 EXPECT_EQ(GetExpectedResultAsString(search_tests[i].output, | 2078 EXPECT_EQ(GetExpectedResultAsString(search_tests[i].output, |
2062 search_tests[i].output_mods, | 2079 search_tests[i].output_mods, |
2063 ui::ET_KEY_PRESSED, | 2080 ui::ET_KEY_PRESSED, |
2064 search_tests[i].output_native, | 2081 search_tests[i].output_native, |
2065 search_tests[i].output_native_mods, | 2082 search_tests[i].output_native_mods, |
2066 KeyPress), | 2083 KeyPress), |
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2366 search_key_tests[i].input, | 2383 search_key_tests[i].input, |
2367 ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN, | 2384 ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN, |
2368 ui::ET_KEY_PRESSED, | 2385 ui::ET_KEY_PRESSED, |
2369 search_key_tests[i].input_native, | 2386 search_key_tests[i].input_native, |
2370 Mod4Mask | ControlMask | Mod1Mask)); | 2387 Mod4Mask | ControlMask | Mod1Mask)); |
2371 } | 2388 } |
2372 | 2389 |
2373 *CommandLine::ForCurrentProcess() = original_cl; | 2390 *CommandLine::ForCurrentProcess() = original_cl; |
2374 } | 2391 } |
2375 | 2392 |
2376 TEST_F(EventRewriterTest, TestRewriteBackspaceAndArrowKeysWithSearchRemapped) { | 2393 TEST_F(EventRewriterTest, TestRewriteExtendedKeysWithSearchRemapped) { |
2377 const CommandLine original_cl(*CommandLine::ForCurrentProcess()); | 2394 const CommandLine original_cl(*CommandLine::ForCurrentProcess()); |
2378 | 2395 |
2379 // Remap Search to Control. | 2396 // Remap Search to Control. |
2380 TestingPrefService prefs; | 2397 TestingPrefService prefs; |
2381 chromeos::Preferences::RegisterUserPrefs(&prefs); | 2398 chromeos::Preferences::RegisterUserPrefs(&prefs); |
2382 IntegerPrefMember search; | 2399 IntegerPrefMember search; |
2383 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs, NULL); | 2400 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs, NULL); |
2384 search.SetValue(chromeos::input_method::kControlKey); | 2401 search.SetValue(chromeos::input_method::kControlKey); |
2385 | 2402 |
2386 EventRewriter rewriter; | 2403 EventRewriter rewriter; |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2452 // flag in the event is True. | 2469 // flag in the event is True. |
2453 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CONTROL, | 2470 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CONTROL, |
2454 ui::EF_CONTROL_DOWN, | 2471 ui::EF_CONTROL_DOWN, |
2455 ui::ET_KEY_PRESSED, | 2472 ui::ET_KEY_PRESSED, |
2456 keycode_control_l_, | 2473 keycode_control_l_, |
2457 0U, | 2474 0U, |
2458 KeyPress), | 2475 KeyPress), |
2459 rewritten_event); | 2476 rewritten_event); |
2460 } | 2477 } |
2461 #endif // OS_CHROMEOS | 2478 #endif // OS_CHROMEOS |
OLD | NEW |