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 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
103 keycode_num_pad_prior_(XKeysymToKeycode(display_, XK_KP_Prior)), | 103 keycode_num_pad_prior_(XKeysymToKeycode(display_, XK_KP_Prior)), |
104 keycode_num_pad_right_(XKeysymToKeycode(display_, XK_KP_Right)), | 104 keycode_num_pad_right_(XKeysymToKeycode(display_, XK_KP_Right)), |
105 keycode_num_pad_up_(XKeysymToKeycode(display_, XK_KP_Up)), | 105 keycode_num_pad_up_(XKeysymToKeycode(display_, XK_KP_Up)), |
106 keycode_super_l_(XKeysymToKeycode(display_, XK_Super_L)), | 106 keycode_super_l_(XKeysymToKeycode(display_, XK_Super_L)), |
107 keycode_super_r_(XKeysymToKeycode(display_, XK_Super_R)), | 107 keycode_super_r_(XKeysymToKeycode(display_, XK_Super_R)), |
108 keycode_void_symbol_(XKeysymToKeycode(display_, XK_VoidSymbol)), | 108 keycode_void_symbol_(XKeysymToKeycode(display_, XK_VoidSymbol)), |
109 keycode_delete_(XKeysymToKeycode(display_, XK_Delete)), | 109 keycode_delete_(XKeysymToKeycode(display_, XK_Delete)), |
110 keycode_backspace_(XKeysymToKeycode(display_, XK_BackSpace)), | 110 keycode_backspace_(XKeysymToKeycode(display_, XK_BackSpace)), |
111 keycode_up_(XKeysymToKeycode(display_, XK_Up)), | 111 keycode_up_(XKeysymToKeycode(display_, XK_Up)), |
112 keycode_down_(XKeysymToKeycode(display_, XK_Down)), | 112 keycode_down_(XKeysymToKeycode(display_, XK_Down)), |
113 keycode_left_(XKeysymToKeycode(display_, XK_Left)), | |
114 keycode_right_(XKeysymToKeycode(display_, XK_Right)), | |
113 keycode_prior_(XKeysymToKeycode(display_, XK_Prior)), | 115 keycode_prior_(XKeysymToKeycode(display_, XK_Prior)), |
114 keycode_next_(XKeysymToKeycode(display_, XK_Next)), | 116 keycode_next_(XKeysymToKeycode(display_, XK_Next)), |
115 keycode_home_(XKeysymToKeycode(display_, XK_Home)), | 117 keycode_home_(XKeysymToKeycode(display_, XK_Home)), |
116 keycode_end_(XKeysymToKeycode(display_, XK_End)), | 118 keycode_end_(XKeysymToKeycode(display_, XK_End)), |
117 keycode_launch7_(XKeysymToKeycode(display_, XF86XK_Launch7)), | 119 keycode_launch7_(XKeysymToKeycode(display_, XF86XK_Launch7)), |
118 input_method_manager_mock_(NULL) { | 120 input_method_manager_mock_(NULL) { |
119 } | 121 } |
120 virtual ~EventRewriterTest() {} | 122 virtual ~EventRewriterTest() {} |
121 | 123 |
122 virtual void SetUp() { | 124 virtual void SetUp() { |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
167 const KeyCode keycode_num_pad_prior_; | 169 const KeyCode keycode_num_pad_prior_; |
168 const KeyCode keycode_num_pad_right_; | 170 const KeyCode keycode_num_pad_right_; |
169 const KeyCode keycode_num_pad_up_; | 171 const KeyCode keycode_num_pad_up_; |
170 const KeyCode keycode_super_l_; | 172 const KeyCode keycode_super_l_; |
171 const KeyCode keycode_super_r_; | 173 const KeyCode keycode_super_r_; |
172 const KeyCode keycode_void_symbol_; | 174 const KeyCode keycode_void_symbol_; |
173 const KeyCode keycode_delete_; | 175 const KeyCode keycode_delete_; |
174 const KeyCode keycode_backspace_; | 176 const KeyCode keycode_backspace_; |
175 const KeyCode keycode_up_; | 177 const KeyCode keycode_up_; |
176 const KeyCode keycode_down_; | 178 const KeyCode keycode_down_; |
179 const KeyCode keycode_left_; | |
180 const KeyCode keycode_right_; | |
177 const KeyCode keycode_prior_; | 181 const KeyCode keycode_prior_; |
178 const KeyCode keycode_next_; | 182 const KeyCode keycode_next_; |
179 const KeyCode keycode_home_; | 183 const KeyCode keycode_home_; |
180 const KeyCode keycode_end_; | 184 const KeyCode keycode_end_; |
181 const KeyCode keycode_launch7_; // F16 | 185 const KeyCode keycode_launch7_; // F16 |
182 chromeos::ScopedMockUserManagerEnabler user_manager_mock_; | 186 chromeos::ScopedMockUserManagerEnabler user_manager_mock_; |
183 chromeos::input_method::MockInputMethodManager* input_method_manager_mock_; | 187 chromeos::input_method::MockInputMethodManager* input_method_manager_mock_; |
184 }; | 188 }; |
185 | 189 |
186 } // namespace | 190 } // namespace |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
239 EXPECT_EQ(EventRewriter::kDeviceAppleKeyboard, | 243 EXPECT_EQ(EventRewriter::kDeviceAppleKeyboard, |
240 rewriter.DeviceAddedForTesting(1, "Apple Keyboard")); | 244 rewriter.DeviceAddedForTesting(1, "Apple Keyboard")); |
241 EXPECT_EQ(2U, rewriter.device_id_to_type_for_testing().size()); | 245 EXPECT_EQ(2U, rewriter.device_id_to_type_for_testing().size()); |
242 // Try to reuse the first ID. | 246 // Try to reuse the first ID. |
243 EXPECT_EQ(EventRewriter::kDeviceAppleKeyboard, | 247 EXPECT_EQ(EventRewriter::kDeviceAppleKeyboard, |
244 rewriter.DeviceAddedForTesting(0, "Apple Keyboard")); | 248 rewriter.DeviceAddedForTesting(0, "Apple Keyboard")); |
245 EXPECT_EQ(2U, rewriter.device_id_to_type_for_testing().size()); | 249 EXPECT_EQ(2U, rewriter.device_id_to_type_for_testing().size()); |
246 } | 250 } |
247 | 251 |
248 #if defined(OS_CHROMEOS) | 252 #if defined(OS_CHROMEOS) |
249 TEST_F(EventRewriterTest, TestRewriteCommandToControl) { | 253 TEST_F(EventRewriterTest, TestRewriteCommandToControl) { |
Yusuke Sato
2012/11/26 06:09:38
This test seems red: http://build.chromium.org/p/t
| |
250 // First, test with a PC keyboard. | 254 // First, test with a PC keyboard. |
251 TestingPrefService prefs; | 255 TestingPrefService prefs; |
252 EventRewriter rewriter; | 256 EventRewriter rewriter; |
253 rewriter.DeviceAddedForTesting(0, "PC Keyboard"); | 257 rewriter.DeviceAddedForTesting(0, "PC Keyboard"); |
254 rewriter.set_last_device_id_for_testing(0); | 258 rewriter.set_last_device_id_for_testing(0); |
255 rewriter.set_pref_service_for_testing(&prefs); | 259 rewriter.set_pref_service_for_testing(&prefs); |
256 | 260 |
257 // XK_a, Alt modifier. | 261 // XK_a, Alt modifier. |
258 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_A, | 262 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_A, |
259 ui::EF_ALT_DOWN, | 263 ui::EF_ALT_DOWN, |
(...skipping 1411 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1671 0, | 1675 0, |
1672 ui::ET_KEY_PRESSED, | 1676 ui::ET_KEY_PRESSED, |
1673 keycode_a_, | 1677 keycode_a_, |
1674 Mod3Mask)); | 1678 Mod3Mask)); |
1675 | 1679 |
1676 input_method_manager_mock_->SetCurrentInputMethodId("xkb:us::eng"); | 1680 input_method_manager_mock_->SetCurrentInputMethodId("xkb:us::eng"); |
1677 } | 1681 } |
1678 | 1682 |
1679 TEST_F(EventRewriterTest, TestRewriteBackspaceAndArrowKeys) { | 1683 TEST_F(EventRewriterTest, TestRewriteBackspaceAndArrowKeys) { |
1680 TestingPrefService prefs; | 1684 TestingPrefService prefs; |
1685 chromeos::Preferences::RegisterUserPrefs(&prefs); | |
1681 EventRewriter rewriter; | 1686 EventRewriter rewriter; |
1682 rewriter.set_pref_service_for_testing(&prefs); | 1687 rewriter.set_pref_service_for_testing(&prefs); |
1683 | 1688 |
1684 // Alt+Backspace -> Delete | 1689 // Alt+Backspace -> Delete |
1685 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_DELETE, | 1690 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_DELETE, |
1686 0, | 1691 0, |
1687 ui::ET_KEY_PRESSED, | 1692 ui::ET_KEY_PRESSED, |
1688 keycode_delete_, | 1693 keycode_delete_, |
1689 0U, | 1694 0U, |
1690 KeyPress), | 1695 KeyPress), |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1772 keycode_end_, | 1777 keycode_end_, |
1773 ShiftMask, | 1778 ShiftMask, |
1774 KeyPress), | 1779 KeyPress), |
1775 GetRewrittenEventAsString(&rewriter, | 1780 GetRewrittenEventAsString(&rewriter, |
1776 ui::VKEY_DOWN, | 1781 ui::VKEY_DOWN, |
1777 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN | | 1782 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN | |
1778 ui::EF_CONTROL_DOWN, | 1783 ui::EF_CONTROL_DOWN, |
1779 ui::ET_KEY_PRESSED, | 1784 ui::ET_KEY_PRESSED, |
1780 keycode_down_, | 1785 keycode_down_, |
1781 ShiftMask | Mod1Mask | ControlMask)); | 1786 ShiftMask | Mod1Mask | ControlMask)); |
1787 | |
1788 // Make Search key act like a Function key for accessing extended key | |
1789 // bindings. | |
1790 BooleanPrefMember search_key_as_function_key; | |
1791 search_key_as_function_key.Init(prefs::kLanguageSearchKeyActsAsFunctionKey, | |
1792 &prefs, NULL); | |
1793 search_key_as_function_key.SetValue(true); | |
1794 | |
1795 // Alt+Backspace -> Alt+Backspace | |
1796 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_BACK, | |
1797 ui::EF_ALT_DOWN, | |
1798 ui::ET_KEY_PRESSED, | |
1799 keycode_backspace_, | |
1800 Mod1Mask, | |
1801 KeyPress), | |
1802 GetRewrittenEventAsString(&rewriter, | |
1803 ui::VKEY_BACK, | |
1804 ui::EF_ALT_DOWN, | |
1805 ui::ET_KEY_PRESSED, | |
1806 keycode_backspace_, | |
1807 Mod1Mask)); | |
1808 | |
1809 // Search+Backspace -> Delete | |
1810 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_DELETE, | |
1811 0, | |
1812 ui::ET_KEY_PRESSED, | |
1813 keycode_delete_, | |
1814 0U, | |
1815 KeyPress), | |
1816 GetRewrittenEventAsString(&rewriter, | |
1817 ui::VKEY_BACK, | |
1818 0, | |
1819 ui::ET_KEY_PRESSED, | |
1820 keycode_backspace_, | |
1821 Mod4Mask)); | |
1822 | |
1823 // Ctrl+Search+Backspace -> Ctrl+Delete | |
1824 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_DELETE, | |
1825 ui::EF_CONTROL_DOWN, | |
1826 ui::ET_KEY_PRESSED, | |
1827 keycode_delete_, | |
1828 ControlMask, | |
1829 KeyPress), | |
1830 GetRewrittenEventAsString(&rewriter, | |
1831 ui::VKEY_BACK, | |
1832 0, | |
1833 ui::ET_KEY_PRESSED, | |
1834 keycode_backspace_, | |
1835 Mod4Mask | ControlMask)); | |
1836 | |
1837 // Alt+Search+Backspace -> Alt+Delete | |
1838 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_DELETE, | |
1839 ui::EF_ALT_DOWN, | |
1840 ui::ET_KEY_PRESSED, | |
1841 keycode_delete_, | |
1842 Mod1Mask, | |
1843 KeyPress), | |
1844 GetRewrittenEventAsString(&rewriter, | |
1845 ui::VKEY_BACK, | |
1846 0, | |
1847 ui::ET_KEY_PRESSED, | |
1848 keycode_backspace_, | |
1849 Mod4Mask | Mod1Mask)); | |
1850 | |
1851 // Alt+Up -> Alt+Up | |
1852 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_UP, | |
1853 ui::EF_ALT_DOWN, | |
1854 ui::ET_KEY_PRESSED, | |
1855 keycode_up_, | |
1856 Mod1Mask, | |
1857 KeyPress), | |
1858 GetRewrittenEventAsString(&rewriter, | |
1859 ui::VKEY_UP, | |
1860 ui::EF_ALT_DOWN, | |
1861 ui::ET_KEY_PRESSED, | |
1862 keycode_up_, | |
1863 Mod1Mask)); | |
1864 | |
1865 // Search+Up -> Prior | |
1866 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_PRIOR, | |
1867 0, | |
1868 ui::ET_KEY_PRESSED, | |
1869 keycode_prior_, | |
1870 0U, | |
1871 KeyPress), | |
1872 GetRewrittenEventAsString(&rewriter, | |
1873 ui::VKEY_UP, | |
1874 0, | |
1875 ui::ET_KEY_PRESSED, | |
1876 keycode_up_, | |
1877 Mod4Mask)); | |
1878 | |
1879 // Alt+Down -> Alt+Down | |
1880 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_DOWN, | |
1881 ui::EF_ALT_DOWN, | |
1882 ui::ET_KEY_PRESSED, | |
1883 keycode_down_, | |
1884 Mod1Mask, | |
1885 KeyPress), | |
1886 GetRewrittenEventAsString(&rewriter, | |
1887 ui::VKEY_DOWN, | |
1888 ui::EF_ALT_DOWN, | |
1889 ui::ET_KEY_PRESSED, | |
1890 keycode_down_, | |
1891 Mod1Mask)); | |
1892 | |
1893 // Search+Down -> Next | |
1894 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_NEXT, | |
1895 0, | |
1896 ui::ET_KEY_PRESSED, | |
1897 keycode_next_, | |
1898 0U, | |
1899 KeyPress), | |
1900 GetRewrittenEventAsString(&rewriter, | |
1901 ui::VKEY_DOWN, | |
1902 0, | |
1903 ui::ET_KEY_PRESSED, | |
1904 keycode_down_, | |
1905 Mod4Mask)); | |
1906 | |
1907 // Ctrl+Alt+Up -> Ctrl+Alt+Up | |
1908 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_UP, | |
1909 ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, | |
1910 ui::ET_KEY_PRESSED, | |
1911 keycode_up_, | |
1912 Mod1Mask | ControlMask, | |
1913 KeyPress), | |
1914 GetRewrittenEventAsString(&rewriter, | |
1915 ui::VKEY_UP, | |
1916 ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, | |
1917 ui::ET_KEY_PRESSED, | |
1918 keycode_up_, | |
1919 Mod1Mask | ControlMask)); | |
1920 | |
1921 // Search+Left -> Home | |
1922 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_HOME, | |
1923 0, | |
1924 ui::ET_KEY_PRESSED, | |
1925 keycode_home_, | |
1926 0U, | |
1927 KeyPress), | |
1928 GetRewrittenEventAsString(&rewriter, | |
1929 ui::VKEY_LEFT, | |
1930 0, | |
1931 ui::ET_KEY_PRESSED, | |
1932 keycode_left_, | |
1933 Mod4Mask)); | |
1934 | |
1935 // Ctrl+Alt+Down -> Ctrl+Alt+Down | |
1936 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_DOWN, | |
1937 ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, | |
1938 ui::ET_KEY_PRESSED, | |
1939 keycode_down_, | |
1940 Mod1Mask | ControlMask, | |
1941 KeyPress), | |
1942 GetRewrittenEventAsString(&rewriter, | |
1943 ui::VKEY_DOWN, | |
1944 ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, | |
1945 ui::ET_KEY_PRESSED, | |
1946 keycode_down_, | |
1947 Mod1Mask | ControlMask)); | |
1948 | |
1949 // Search+Right -> End | |
1950 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_END, | |
1951 0, | |
1952 ui::ET_KEY_PRESSED, | |
1953 keycode_end_, | |
1954 0U, | |
1955 KeyPress), | |
1956 GetRewrittenEventAsString(&rewriter, | |
1957 ui::VKEY_RIGHT, | |
1958 0, | |
1959 ui::ET_KEY_PRESSED, | |
1960 keycode_right_, | |
1961 Mod4Mask)); | |
1962 | |
1963 // Ctrl+Search+Left -> Control+Home | |
1964 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_HOME, | |
1965 ui::EF_CONTROL_DOWN, | |
1966 ui::ET_KEY_PRESSED, | |
1967 keycode_home_, | |
1968 ControlMask, | |
1969 KeyPress), | |
1970 GetRewrittenEventAsString(&rewriter, | |
1971 ui::VKEY_LEFT, | |
1972 0, | |
1973 ui::ET_KEY_PRESSED, | |
1974 keycode_left_, | |
1975 Mod4Mask | ControlMask)); | |
1976 | |
1977 // Ctrl+Search+Right -> Control+End | |
1978 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_END, | |
1979 ui::EF_CONTROL_DOWN, | |
1980 ui::ET_KEY_PRESSED, | |
1981 keycode_end_, | |
1982 ControlMask, | |
1983 KeyPress), | |
1984 GetRewrittenEventAsString(&rewriter, | |
1985 ui::VKEY_RIGHT, | |
1986 0, | |
1987 ui::ET_KEY_PRESSED, | |
1988 keycode_right_, | |
1989 Mod4Mask | ControlMask)); | |
1782 } | 1990 } |
1783 | 1991 |
1784 TEST_F(EventRewriterTest, TestRewriteBackspaceAndArrowKeysWithSearchRemapped) { | 1992 TEST_F(EventRewriterTest, TestRewriteBackspaceAndArrowKeysWithSearchRemapped) { |
1785 // Remap Search to Control. | 1993 // Remap Search to Control. |
1786 TestingPrefService prefs; | 1994 TestingPrefService prefs; |
1787 chromeos::Preferences::RegisterUserPrefs(&prefs); | 1995 chromeos::Preferences::RegisterUserPrefs(&prefs); |
1788 IntegerPrefMember search; | 1996 IntegerPrefMember search; |
1789 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs, NULL); | 1997 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs, NULL); |
1790 search.SetValue(chromeos::input_method::kControlKey); | 1998 search.SetValue(chromeos::input_method::kControlKey); |
1791 | 1999 |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1852 // flag in the event is True. | 2060 // flag in the event is True. |
1853 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CONTROL, | 2061 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CONTROL, |
1854 ui::EF_CONTROL_DOWN, | 2062 ui::EF_CONTROL_DOWN, |
1855 ui::ET_KEY_PRESSED, | 2063 ui::ET_KEY_PRESSED, |
1856 keycode_control_l_, | 2064 keycode_control_l_, |
1857 0U, | 2065 0U, |
1858 KeyPress), | 2066 KeyPress), |
1859 rewritten_event); | 2067 rewritten_event); |
1860 } | 2068 } |
1861 #endif // OS_CHROMEOS | 2069 #endif // OS_CHROMEOS |
OLD | NEW |