Chromium Code Reviews| 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 |