| 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/public/pref_member.h" | 9 #include "base/prefs/public/pref_member.h" |
| 10 #include "base/stringprintf.h" | 10 #include "base/stringprintf.h" |
| (...skipping 1742 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1753 ui::VKEY_A, | 1753 ui::VKEY_A, |
| 1754 0, | 1754 0, |
| 1755 ui::ET_KEY_PRESSED, | 1755 ui::ET_KEY_PRESSED, |
| 1756 keycode_a_, | 1756 keycode_a_, |
| 1757 Mod3Mask)); | 1757 Mod3Mask)); |
| 1758 | 1758 |
| 1759 input_method_manager_mock_->SetCurrentInputMethodId("xkb:us::eng"); | 1759 input_method_manager_mock_->SetCurrentInputMethodId("xkb:us::eng"); |
| 1760 } | 1760 } |
| 1761 | 1761 |
| 1762 TEST_F(EventRewriterTest, TestRewriteExtendedKeys) { | 1762 TEST_F(EventRewriterTest, TestRewriteExtendedKeys) { |
| 1763 const CommandLine original_cl(*CommandLine::ForCurrentProcess()); | |
| 1764 TestingPrefService prefs; | 1763 TestingPrefService prefs; |
| 1765 chromeos::Preferences::RegisterUserPrefs(&prefs); | 1764 chromeos::Preferences::RegisterUserPrefs(&prefs); |
| 1766 EventRewriter rewriter; | 1765 EventRewriter rewriter; |
| 1767 rewriter.set_pref_service_for_testing(&prefs); | 1766 rewriter.set_pref_service_for_testing(&prefs); |
| 1768 | 1767 |
| 1769 struct { | 1768 struct { |
| 1770 ui::KeyboardCode input; | 1769 ui::KeyboardCode input; |
| 1771 KeyCode input_native; | 1770 KeyCode input_native; |
| 1772 unsigned int input_mods; | 1771 unsigned int input_mods; |
| 1773 unsigned int input_native_mods; | 1772 unsigned int input_native_mods; |
| 1774 ui::KeyboardCode output; | 1773 ui::KeyboardCode output; |
| 1775 KeyCode output_native; | 1774 KeyCode output_native; |
| 1776 unsigned int output_mods; | 1775 unsigned int output_mods; |
| 1777 unsigned int output_native_mods; | 1776 unsigned int output_native_mods; |
| 1778 } chromeos_tests[] = { | 1777 } chromeos_tests[] = { |
| 1779 // Alt+Backspace -> Delete | 1778 // Alt+Backspace -> Delete |
| 1780 { ui::VKEY_BACK, keycode_backspace_, | 1779 { ui::VKEY_BACK, keycode_backspace_, |
| 1781 ui::EF_ALT_DOWN, Mod1Mask, | 1780 ui::EF_ALT_DOWN, Mod1Mask, |
| 1782 ui::VKEY_DELETE, keycode_delete_, | 1781 ui::VKEY_DELETE, keycode_delete_, |
| 1783 0, 0, }, | 1782 0, 0, }, |
| 1784 // Control+Alt+Backspace -> Control+Delete | 1783 // Control+Alt+Backspace -> Control+Delete |
| 1785 { ui::VKEY_BACK, keycode_backspace_, | 1784 { ui::VKEY_BACK, keycode_backspace_, |
| 1786 ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, Mod1Mask | ControlMask, | 1785 ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, Mod1Mask | ControlMask, |
| 1787 ui::VKEY_DELETE, keycode_delete_, | 1786 ui::VKEY_DELETE, keycode_delete_, |
| 1788 ui::EF_CONTROL_DOWN, ControlMask, }, | 1787 ui::EF_CONTROL_DOWN, ControlMask, }, |
| 1788 // Search+Alt+Backspace -> Alt+Backspace |
| 1789 { ui::VKEY_BACK, keycode_backspace_, |
| 1790 ui::EF_ALT_DOWN, Mod1Mask | Mod4Mask, |
| 1791 ui::VKEY_BACK, keycode_backspace_, |
| 1792 ui::EF_ALT_DOWN, Mod1Mask, }, |
| 1793 // Search+Control+Alt+Backspace -> Control+Alt+Backspace |
| 1794 { ui::VKEY_BACK, keycode_backspace_, |
| 1795 ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, Mod1Mask | ControlMask | Mod4Mask, |
| 1796 ui::VKEY_BACK, keycode_backspace_, |
| 1797 ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, Mod1Mask | ControlMask, }, |
| 1789 // Alt+Up -> Prior | 1798 // Alt+Up -> Prior |
| 1790 { ui::VKEY_UP, keycode_up_, | 1799 { ui::VKEY_UP, keycode_up_, |
| 1791 ui::EF_ALT_DOWN, Mod1Mask, | 1800 ui::EF_ALT_DOWN, Mod1Mask, |
| 1792 ui::VKEY_PRIOR, keycode_prior_, | 1801 ui::VKEY_PRIOR, keycode_prior_, |
| 1793 0, 0, }, | 1802 0, 0, }, |
| 1794 // Alt+Down -> Next | 1803 // Alt+Down -> Next |
| 1795 { ui::VKEY_DOWN, keycode_down_, | 1804 { ui::VKEY_DOWN, keycode_down_, |
| 1796 ui::EF_ALT_DOWN, Mod1Mask, | 1805 ui::EF_ALT_DOWN, Mod1Mask, |
| 1797 ui::VKEY_NEXT, keycode_next_, | 1806 ui::VKEY_NEXT, keycode_next_, |
| 1798 0, 0, }, | 1807 0, 0, }, |
| 1799 // Ctrl+Alt+Up -> Home | 1808 // Ctrl+Alt+Up -> Home |
| 1800 { ui::VKEY_UP, keycode_up_, | 1809 { ui::VKEY_UP, keycode_up_, |
| 1801 ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, Mod1Mask | ControlMask, | 1810 ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, Mod1Mask | ControlMask, |
| 1802 ui::VKEY_HOME, keycode_home_, | 1811 ui::VKEY_HOME, keycode_home_, |
| 1803 0, 0, }, | 1812 0, 0, }, |
| 1804 // Ctrl+Alt+Down -> End | 1813 // Ctrl+Alt+Down -> End |
| 1805 { ui::VKEY_DOWN, keycode_down_, | 1814 { ui::VKEY_DOWN, keycode_down_, |
| 1806 ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, Mod1Mask | ControlMask, | 1815 ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, Mod1Mask | ControlMask, |
| 1807 ui::VKEY_END, keycode_end_, | 1816 ui::VKEY_END, keycode_end_, |
| 1808 0, 0, }, | 1817 0, 0, }, |
| 1818 |
| 1819 // Search+Alt+Up -> Alt+Up |
| 1820 { ui::VKEY_UP, keycode_up_, |
| 1821 ui::EF_ALT_DOWN, Mod1Mask | Mod4Mask, |
| 1822 ui::VKEY_UP, keycode_up_, |
| 1823 ui::EF_ALT_DOWN, Mod1Mask }, |
| 1824 // Search+Alt+Down -> Alt+Down |
| 1825 { ui::VKEY_DOWN, keycode_down_, |
| 1826 ui::EF_ALT_DOWN, Mod1Mask | Mod4Mask, |
| 1827 ui::VKEY_DOWN, keycode_down_, |
| 1828 ui::EF_ALT_DOWN, Mod1Mask }, |
| 1829 // Search+Ctrl+Alt+Up -> Search+Ctrl+Alt+Up |
| 1830 { ui::VKEY_UP, keycode_up_, |
| 1831 ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, Mod1Mask | ControlMask | Mod4Mask, |
| 1832 ui::VKEY_UP, keycode_up_, |
| 1833 ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, Mod1Mask | ControlMask }, |
| 1834 // Search+Ctrl+Alt+Down -> Ctrl+Alt+Down |
| 1835 { ui::VKEY_DOWN, keycode_down_, |
| 1836 ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, Mod1Mask | ControlMask | Mod4Mask, |
| 1837 ui::VKEY_DOWN, keycode_down_, |
| 1838 ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, Mod1Mask | ControlMask }, |
| 1839 |
| 1809 // Period -> Period | 1840 // Period -> Period |
| 1810 { ui::VKEY_OEM_PERIOD, keycode_period_, 0, 0, | 1841 { ui::VKEY_OEM_PERIOD, keycode_period_, 0, 0, |
| 1811 ui::VKEY_OEM_PERIOD, keycode_period_, 0, 0 } | 1842 ui::VKEY_OEM_PERIOD, keycode_period_, 0, 0 }, |
| 1812 }; | |
| 1813 | |
| 1814 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(chromeos_tests); ++i) { | |
| 1815 EXPECT_EQ(GetExpectedResultAsString(chromeos_tests[i].output, | |
| 1816 chromeos_tests[i].output_mods, | |
| 1817 ui::ET_KEY_PRESSED, | |
| 1818 chromeos_tests[i].output_native, | |
| 1819 chromeos_tests[i].output_native_mods, | |
| 1820 KeyPress), | |
| 1821 GetRewrittenEventAsString(&rewriter, | |
| 1822 chromeos_tests[i].input, | |
| 1823 chromeos_tests[i].input_mods, | |
| 1824 ui::ET_KEY_PRESSED, | |
| 1825 chromeos_tests[i].input_native, | |
| 1826 chromeos_tests[i].input_native_mods)); | |
| 1827 | |
| 1828 // Search key as a modifier does not change the outcome. | |
| 1829 EXPECT_EQ(GetExpectedResultAsString(chromeos_tests[i].output, | |
| 1830 chromeos_tests[i].output_mods, | |
| 1831 ui::ET_KEY_PRESSED, | |
| 1832 chromeos_tests[i].output_native, | |
| 1833 Mod4Mask | | |
| 1834 chromeos_tests[i].output_native_mods, | |
| 1835 KeyPress), | |
| 1836 GetRewrittenEventAsString(&rewriter, | |
| 1837 chromeos_tests[i].input, | |
| 1838 chromeos_tests[i].input_mods, | |
| 1839 ui::ET_KEY_PRESSED, | |
| 1840 chromeos_tests[i].input_native, | |
| 1841 Mod4Mask | | |
| 1842 chromeos_tests[i].input_native_mods)); | |
| 1843 } | |
| 1844 | |
| 1845 // Make Search key act like a Function key for accessing extended key | |
| 1846 // bindings. | |
| 1847 CommandLine::ForCurrentProcess()->AppendSwitchASCII( | |
| 1848 switches::kEnableChromebookFunctionKey, ""); | |
| 1849 | |
| 1850 struct { | |
| 1851 ui::KeyboardCode input; | |
| 1852 KeyCode input_native; | |
| 1853 unsigned int input_mods; | |
| 1854 unsigned int input_native_mods; | |
| 1855 ui::KeyboardCode output; | |
| 1856 KeyCode output_native; | |
| 1857 unsigned int output_mods; | |
| 1858 unsigned int output_native_mods; | |
| 1859 } search_tests[] = { | |
| 1860 { ui::VKEY_BACK, keycode_backspace_, | |
| 1861 ui::EF_ALT_DOWN, Mod1Mask, | |
| 1862 ui::VKEY_BACK, keycode_backspace_, | |
| 1863 ui::EF_ALT_DOWN, Mod1Mask, }, | |
| 1864 { ui::VKEY_UP, keycode_up_, | |
| 1865 ui::EF_ALT_DOWN, Mod1Mask, | |
| 1866 ui::VKEY_UP, keycode_up_, | |
| 1867 ui::EF_ALT_DOWN, Mod1Mask, }, | |
| 1868 { ui::VKEY_UP, keycode_up_, | |
| 1869 ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, Mod1Mask | ControlMask, | |
| 1870 ui::VKEY_UP, keycode_up_, | |
| 1871 ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, Mod1Mask | ControlMask, }, | |
| 1872 { ui::VKEY_DOWN, keycode_down_, | |
| 1873 ui::EF_ALT_DOWN, Mod1Mask, | |
| 1874 ui::VKEY_DOWN, keycode_down_, | |
| 1875 ui::EF_ALT_DOWN, Mod1Mask, }, | |
| 1876 { ui::VKEY_LEFT, keycode_left_, 0, 0, | |
| 1877 ui::VKEY_LEFT, keycode_left_, 0, 0 }, | |
| 1878 { ui::VKEY_RIGHT, keycode_right_, 0, 0, | |
| 1879 ui::VKEY_RIGHT, keycode_right_, 0, 0 }, | |
| 1880 | 1843 |
| 1881 // Search+Backspace -> Delete | 1844 // Search+Backspace -> Delete |
| 1882 { ui::VKEY_BACK, keycode_backspace_, | 1845 { ui::VKEY_BACK, keycode_backspace_, |
| 1883 0, Mod4Mask, | 1846 0, Mod4Mask, |
| 1884 ui::VKEY_DELETE, keycode_delete_, | 1847 ui::VKEY_DELETE, keycode_delete_, |
| 1885 0, 0, }, | 1848 0, 0, }, |
| 1886 // Alt+Search+Backspace -> Alt+Delete | |
| 1887 { ui::VKEY_BACK, keycode_backspace_, | |
| 1888 ui::EF_ALT_DOWN, Mod4Mask | Mod1Mask, | |
| 1889 ui::VKEY_DELETE, keycode_delete_, | |
| 1890 ui::EF_ALT_DOWN, Mod1Mask, }, | |
| 1891 // Search+Up -> Prior | 1849 // Search+Up -> Prior |
| 1892 { ui::VKEY_UP, keycode_up_, | 1850 { ui::VKEY_UP, keycode_up_, |
| 1893 0, Mod4Mask, | 1851 0, Mod4Mask, |
| 1894 ui::VKEY_PRIOR, keycode_prior_, | 1852 ui::VKEY_PRIOR, keycode_prior_, |
| 1895 0, 0, }, | 1853 0, 0, }, |
| 1896 // Search+Down -> Next | 1854 // Search+Down -> Next |
| 1897 { ui::VKEY_DOWN, keycode_down_, | 1855 { ui::VKEY_DOWN, keycode_down_, |
| 1898 0, Mod4Mask, | 1856 0, Mod4Mask, |
| 1899 ui::VKEY_NEXT, keycode_next_, | 1857 ui::VKEY_NEXT, keycode_next_, |
| 1900 0, 0, }, | 1858 0, 0, }, |
| (...skipping 20 matching lines...) Expand all Loading... |
| 1921 // Search+Period -> Insert | 1879 // Search+Period -> Insert |
| 1922 { ui::VKEY_OEM_PERIOD, keycode_period_, 0, Mod4Mask, | 1880 { ui::VKEY_OEM_PERIOD, keycode_period_, 0, Mod4Mask, |
| 1923 ui::VKEY_INSERT, keycode_insert_, 0, 0 }, | 1881 ui::VKEY_INSERT, keycode_insert_, 0, 0 }, |
| 1924 // Control+Search+Period -> Control+Insert | 1882 // Control+Search+Period -> Control+Insert |
| 1925 { ui::VKEY_OEM_PERIOD, keycode_period_, | 1883 { ui::VKEY_OEM_PERIOD, keycode_period_, |
| 1926 ui::EF_CONTROL_DOWN, Mod4Mask | ControlMask, | 1884 ui::EF_CONTROL_DOWN, Mod4Mask | ControlMask, |
| 1927 ui::VKEY_INSERT, keycode_insert_, | 1885 ui::VKEY_INSERT, keycode_insert_, |
| 1928 ui::EF_CONTROL_DOWN, ControlMask } | 1886 ui::EF_CONTROL_DOWN, ControlMask } |
| 1929 }; | 1887 }; |
| 1930 | 1888 |
| 1931 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(search_tests); ++i) { | 1889 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(chromeos_tests); ++i) { |
| 1932 EXPECT_EQ(GetExpectedResultAsString(search_tests[i].output, | 1890 EXPECT_EQ(GetExpectedResultAsString(chromeos_tests[i].output, |
| 1933 search_tests[i].output_mods, | 1891 chromeos_tests[i].output_mods, |
| 1934 ui::ET_KEY_PRESSED, | 1892 ui::ET_KEY_PRESSED, |
| 1935 search_tests[i].output_native, | 1893 chromeos_tests[i].output_native, |
| 1936 search_tests[i].output_native_mods, | 1894 chromeos_tests[i].output_native_mods, |
| 1937 KeyPress), | 1895 KeyPress), |
| 1938 GetRewrittenEventAsString(&rewriter, | 1896 GetRewrittenEventAsString(&rewriter, |
| 1939 search_tests[i].input, | 1897 chromeos_tests[i].input, |
| 1940 search_tests[i].input_mods, | 1898 chromeos_tests[i].input_mods, |
| 1941 ui::ET_KEY_PRESSED, | 1899 ui::ET_KEY_PRESSED, |
| 1942 search_tests[i].input_native, | 1900 chromeos_tests[i].input_native, |
| 1943 search_tests[i].input_native_mods)); | 1901 chromeos_tests[i].input_native_mods)); |
| 1944 } | 1902 } |
| 1945 | |
| 1946 *CommandLine::ForCurrentProcess() = original_cl; | |
| 1947 } | 1903 } |
| 1948 | 1904 |
| 1949 TEST_F(EventRewriterTest, TestRewriteFunctionKeys) { | 1905 TEST_F(EventRewriterTest, TestRewriteFunctionKeys) { |
| 1950 const CommandLine original_cl(*CommandLine::ForCurrentProcess()); | 1906 const CommandLine original_cl(*CommandLine::ForCurrentProcess()); |
| 1951 TestingPrefService prefs; | 1907 TestingPrefService prefs; |
| 1952 chromeos::Preferences::RegisterUserPrefs(&prefs); | 1908 chromeos::Preferences::RegisterUserPrefs(&prefs); |
| 1953 EventRewriter rewriter; | 1909 EventRewriter rewriter; |
| 1954 rewriter.set_pref_service_for_testing(&prefs); | 1910 rewriter.set_pref_service_for_testing(&prefs); |
| 1955 | 1911 |
| 1956 struct { | 1912 struct { |
| 1957 ui::KeyboardCode input; | 1913 ui::KeyboardCode input; |
| 1958 KeyCode input_native; | 1914 KeyCode input_native; |
| 1915 unsigned int input_native_mods; |
| 1916 unsigned int input_mods; |
| 1959 ui::KeyboardCode output; | 1917 ui::KeyboardCode output; |
| 1960 KeyCode output_native; | 1918 KeyCode output_native; |
| 1961 } chromeos_tests[] = { | 1919 unsigned int output_native_mods; |
| 1962 { // F1 -> Back | 1920 unsigned int output_mods; |
| 1963 ui::VKEY_F1, keycode_f1_, | 1921 } tests[] = { |
| 1964 ui::VKEY_BROWSER_BACK, keycode_browser_back_ | 1922 // F1 -> Back |
| 1965 }, | 1923 { ui::VKEY_F1, keycode_f1_, 0, 0, |
| 1966 { // F2 -> Forward | 1924 ui::VKEY_BROWSER_BACK, keycode_browser_back_, 0, 0 }, |
| 1967 ui::VKEY_F2, keycode_f2_, | 1925 { ui::VKEY_F1, keycode_f1_, ControlMask, ui::EF_CONTROL_DOWN, |
| 1968 ui::VKEY_BROWSER_FORWARD, keycode_browser_forward_ | 1926 ui::VKEY_BROWSER_BACK, keycode_browser_back_, |
| 1969 }, | 1927 ControlMask, ui::EF_CONTROL_DOWN }, |
| 1970 { // F3 -> Refresh | 1928 { ui::VKEY_F1, keycode_f1_, Mod1Mask, ui::EF_ALT_DOWN, |
| 1971 ui::VKEY_F3, keycode_f3_, | 1929 ui::VKEY_BROWSER_BACK, keycode_browser_back_, |
| 1972 ui::VKEY_BROWSER_REFRESH, keycode_browser_refresh_ | 1930 Mod1Mask, ui::EF_ALT_DOWN }, |
| 1973 }, | 1931 // F2 -> Forward |
| 1974 { // F4 -> Launch App 2 | 1932 { ui::VKEY_F2, keycode_f2_, 0, 0, |
| 1975 ui::VKEY_F4, keycode_f4_, | 1933 ui::VKEY_BROWSER_FORWARD, keycode_browser_forward_, 0, 0 }, |
| 1976 ui::VKEY_MEDIA_LAUNCH_APP2, keycode_media_launch_app2_ | 1934 { ui::VKEY_F2, keycode_f2_, ControlMask, ui::EF_CONTROL_DOWN, |
| 1977 }, | 1935 ui::VKEY_BROWSER_FORWARD, keycode_browser_forward_, |
| 1978 { // F5 -> Launch App 1 | 1936 ControlMask, ui::EF_CONTROL_DOWN }, |
| 1979 ui::VKEY_F5, keycode_f5_, | 1937 { ui::VKEY_F2, keycode_f2_, Mod1Mask, ui::EF_ALT_DOWN, |
| 1980 ui::VKEY_MEDIA_LAUNCH_APP1, keycode_media_launch_app1_ | 1938 ui::VKEY_BROWSER_FORWARD, keycode_browser_forward_, |
| 1981 }, | 1939 Mod1Mask, ui::EF_ALT_DOWN }, |
| 1982 { // F6 -> Brightness down | 1940 // F3 -> Refresh |
| 1983 ui::VKEY_F6, keycode_f6_, | 1941 { ui::VKEY_F3, keycode_f3_, 0, 0, |
| 1984 ui::VKEY_BRIGHTNESS_DOWN, keycode_brightness_down_ | 1942 ui::VKEY_BROWSER_REFRESH, keycode_browser_refresh_, 0, 0 }, |
| 1985 }, | 1943 { ui::VKEY_F3, keycode_f3_, ControlMask, ui::EF_CONTROL_DOWN, |
| 1986 { // F7 -> Brightness up | 1944 ui::VKEY_BROWSER_REFRESH, keycode_browser_refresh_, |
| 1987 ui::VKEY_F7, keycode_f7_, | 1945 ControlMask, ui::EF_CONTROL_DOWN }, |
| 1988 ui::VKEY_BRIGHTNESS_UP, keycode_brightness_up_ | 1946 { ui::VKEY_F3, keycode_f3_, Mod1Mask, ui::EF_ALT_DOWN, |
| 1989 }, | 1947 ui::VKEY_BROWSER_REFRESH, keycode_browser_refresh_, |
| 1990 { // F8 -> Volume Mute | 1948 Mod1Mask, ui::EF_ALT_DOWN }, |
| 1991 ui::VKEY_F8, keycode_f8_, | 1949 // F4 -> Launch App 2 |
| 1992 ui::VKEY_VOLUME_MUTE, keycode_volume_mute_ | 1950 { ui::VKEY_F4, keycode_f4_, 0, 0, |
| 1993 }, | 1951 ui::VKEY_MEDIA_LAUNCH_APP2, keycode_media_launch_app2_, 0, 0 }, |
| 1994 { // F9 -> Volume Down | 1952 { ui::VKEY_F4, keycode_f4_, ControlMask, ui::EF_CONTROL_DOWN, |
| 1995 ui::VKEY_F9, keycode_f9_, | 1953 ui::VKEY_MEDIA_LAUNCH_APP2, keycode_media_launch_app2_, |
| 1996 ui::VKEY_VOLUME_DOWN, keycode_volume_down_ | 1954 ControlMask, ui::EF_CONTROL_DOWN }, |
| 1997 }, | 1955 { ui::VKEY_F4, keycode_f4_, Mod1Mask, ui::EF_ALT_DOWN, |
| 1998 { // F10 -> Volume Up | 1956 ui::VKEY_MEDIA_LAUNCH_APP2, keycode_media_launch_app2_, |
| 1999 ui::VKEY_F10, keycode_f10_, | 1957 Mod1Mask, ui::EF_ALT_DOWN }, |
| 2000 ui::VKEY_VOLUME_UP, keycode_volume_up_ | 1958 // F5 -> Launch App 1 |
| 2001 }, | 1959 { ui::VKEY_F5, keycode_f5_, 0, 0, |
| 2002 { // F11 -> F11 | 1960 ui::VKEY_MEDIA_LAUNCH_APP1, keycode_media_launch_app1_, 0, 0 }, |
| 2003 ui::VKEY_F11, keycode_f11_, | 1961 { ui::VKEY_F5, keycode_f5_, ControlMask, ui::EF_CONTROL_DOWN, |
| 2004 ui::VKEY_F11, keycode_f11_ | 1962 ui::VKEY_MEDIA_LAUNCH_APP1, keycode_media_launch_app1_, |
| 2005 }, | 1963 ControlMask, ui::EF_CONTROL_DOWN }, |
| 2006 { // F12 -> F12 | 1964 { ui::VKEY_F5, keycode_f5_, Mod1Mask, ui::EF_ALT_DOWN, |
| 2007 ui::VKEY_F12, keycode_f12_, | 1965 ui::VKEY_MEDIA_LAUNCH_APP1, keycode_media_launch_app1_, |
| 2008 ui::VKEY_F12, keycode_f12_, | 1966 Mod1Mask, ui::EF_ALT_DOWN }, |
| 2009 }, | 1967 // F6 -> Brightness down |
| 2010 // The number row should not be rewritten. | 1968 { ui::VKEY_F6, keycode_f6_, 0, 0, |
| 2011 { ui::VKEY_1, keycode_1_, ui::VKEY_1, keycode_1_, }, | 1969 ui::VKEY_BRIGHTNESS_DOWN, keycode_brightness_down_, 0, 0 }, |
| 2012 { ui::VKEY_2, keycode_2_, ui::VKEY_2, keycode_2_, }, | 1970 { ui::VKEY_F6, keycode_f6_, ControlMask, ui::EF_CONTROL_DOWN, |
| 2013 { ui::VKEY_3, keycode_3_, ui::VKEY_3, keycode_3_, }, | 1971 ui::VKEY_BRIGHTNESS_DOWN, keycode_brightness_down_, |
| 2014 { ui::VKEY_4, keycode_4_, ui::VKEY_4, keycode_4_, }, | 1972 ControlMask, ui::EF_CONTROL_DOWN }, |
| 2015 { ui::VKEY_5, keycode_5_, ui::VKEY_5, keycode_5_, }, | 1973 { ui::VKEY_F6, keycode_f6_, Mod1Mask, ui::EF_ALT_DOWN, |
| 2016 { ui::VKEY_6, keycode_6_, ui::VKEY_6, keycode_6_, }, | 1974 ui::VKEY_BRIGHTNESS_DOWN, keycode_brightness_down_, |
| 2017 { ui::VKEY_7, keycode_7_, ui::VKEY_7, keycode_7_, }, | 1975 Mod1Mask, ui::EF_ALT_DOWN }, |
| 2018 { ui::VKEY_8, keycode_8_, ui::VKEY_8, keycode_8_, }, | 1976 // F7 -> Brightness up |
| 2019 { ui::VKEY_9, keycode_9_, ui::VKEY_9, keycode_9_, }, | 1977 { ui::VKEY_F7, keycode_f7_, 0, 0, |
| 2020 { ui::VKEY_0, keycode_0_, ui::VKEY_0, keycode_0_, }, | 1978 ui::VKEY_BRIGHTNESS_UP, keycode_brightness_up_, 0, 0 }, |
| 2021 { ui::VKEY_OEM_MINUS, keycode_minus_, ui::VKEY_OEM_MINUS, keycode_minus_, }, | 1979 { ui::VKEY_F7, keycode_f7_, ControlMask, ui::EF_CONTROL_DOWN, |
| 2022 { ui::VKEY_OEM_PLUS, keycode_equal_, ui::VKEY_OEM_PLUS, keycode_equal_, }, | 1980 ui::VKEY_BRIGHTNESS_UP, keycode_brightness_up_, |
| 1981 ControlMask, ui::EF_CONTROL_DOWN }, |
| 1982 { ui::VKEY_F7, keycode_f7_, Mod1Mask, ui::EF_ALT_DOWN, |
| 1983 ui::VKEY_BRIGHTNESS_UP, keycode_brightness_up_, |
| 1984 Mod1Mask, ui::EF_ALT_DOWN }, |
| 1985 // F8 -> Volume Mute |
| 1986 { ui::VKEY_F8, keycode_f8_, 0, 0, |
| 1987 ui::VKEY_VOLUME_MUTE, keycode_volume_mute_, 0, 0 }, |
| 1988 { ui::VKEY_F8, keycode_f8_, ControlMask, ui::EF_CONTROL_DOWN, |
| 1989 ui::VKEY_VOLUME_MUTE, keycode_volume_mute_, |
| 1990 ControlMask, ui::EF_CONTROL_DOWN }, |
| 1991 { ui::VKEY_F8, keycode_f8_, Mod1Mask, ui::EF_ALT_DOWN, |
| 1992 ui::VKEY_VOLUME_MUTE, keycode_volume_mute_, |
| 1993 Mod1Mask, ui::EF_ALT_DOWN }, |
| 1994 // F9 -> Volume Down |
| 1995 { ui::VKEY_F9, keycode_f9_, 0, 0, |
| 1996 ui::VKEY_VOLUME_DOWN, keycode_volume_down_, 0, 0 }, |
| 1997 { ui::VKEY_F9, keycode_f9_, ControlMask, ui::EF_CONTROL_DOWN, |
| 1998 ui::VKEY_VOLUME_DOWN, keycode_volume_down_, |
| 1999 ControlMask, ui::EF_CONTROL_DOWN }, |
| 2000 { ui::VKEY_F9, keycode_f9_, Mod1Mask, ui::EF_ALT_DOWN, |
| 2001 ui::VKEY_VOLUME_DOWN, keycode_volume_down_, |
| 2002 Mod1Mask, ui::EF_ALT_DOWN }, |
| 2003 // F10 -> Volume Up |
| 2004 { ui::VKEY_F10, keycode_f10_, 0, 0, |
| 2005 ui::VKEY_VOLUME_UP, keycode_volume_up_, 0, 0 }, |
| 2006 { ui::VKEY_F10, keycode_f10_, ControlMask, ui::EF_CONTROL_DOWN, |
| 2007 ui::VKEY_VOLUME_UP, keycode_volume_up_, |
| 2008 ControlMask, ui::EF_CONTROL_DOWN }, |
| 2009 { ui::VKEY_F10, keycode_f10_, Mod1Mask, ui::EF_ALT_DOWN, |
| 2010 ui::VKEY_VOLUME_UP, keycode_volume_up_, |
| 2011 Mod1Mask, ui::EF_ALT_DOWN }, |
| 2012 // F11 -> F11 |
| 2013 { ui::VKEY_F11, keycode_f11_, 0, 0, |
| 2014 ui::VKEY_F11, keycode_f11_, 0, 0 }, |
| 2015 { ui::VKEY_F11, keycode_f11_, ControlMask, ui::EF_CONTROL_DOWN, |
| 2016 ui::VKEY_F11, keycode_f11_, ControlMask, ui::EF_CONTROL_DOWN }, |
| 2017 { ui::VKEY_F11, keycode_f11_, Mod1Mask, ui::EF_ALT_DOWN, |
| 2018 ui::VKEY_F11, keycode_f11_, Mod1Mask, ui::EF_ALT_DOWN }, |
| 2019 // F12 -> F12 |
| 2020 { ui::VKEY_F12, keycode_f12_, 0, 0, |
| 2021 ui::VKEY_F12, keycode_f12_, 0, 0 }, |
| 2022 { ui::VKEY_F12, keycode_f12_, ControlMask, ui::EF_CONTROL_DOWN, |
| 2023 ui::VKEY_F12, keycode_f12_, ControlMask, ui::EF_CONTROL_DOWN }, |
| 2024 { ui::VKEY_F12, keycode_f12_, Mod1Mask, ui::EF_ALT_DOWN, |
| 2025 ui::VKEY_F12, keycode_f12_, Mod1Mask, ui::EF_ALT_DOWN }, |
| 2026 |
| 2027 // The number row should not be rewritten without Search key. |
| 2028 { ui::VKEY_1, keycode_1_, 0, 0, |
| 2029 ui::VKEY_1, keycode_1_, 0, 0 }, |
| 2030 { ui::VKEY_2, keycode_2_, 0, 0, |
| 2031 ui::VKEY_2, keycode_2_, 0, 0 }, |
| 2032 { ui::VKEY_3, keycode_3_, 0, 0, |
| 2033 ui::VKEY_3, keycode_3_, 0, 0 }, |
| 2034 { ui::VKEY_4, keycode_4_, 0, 0, |
| 2035 ui::VKEY_4, keycode_4_, 0, 0 }, |
| 2036 { ui::VKEY_5, keycode_5_, 0, 0, |
| 2037 ui::VKEY_5, keycode_5_, 0, 0 }, |
| 2038 { ui::VKEY_6, keycode_6_, 0, 0, |
| 2039 ui::VKEY_6, keycode_6_, 0, 0 }, |
| 2040 { ui::VKEY_7, keycode_7_, 0, 0, |
| 2041 ui::VKEY_7, keycode_7_, 0, 0 }, |
| 2042 { ui::VKEY_8, keycode_8_, 0, 0, |
| 2043 ui::VKEY_8, keycode_8_, 0, 0 }, |
| 2044 { ui::VKEY_9, keycode_9_, 0, 0, |
| 2045 ui::VKEY_9, keycode_9_, 0, 0 }, |
| 2046 { ui::VKEY_0, keycode_0_, 0, 0, |
| 2047 ui::VKEY_0, keycode_0_, 0, 0 }, |
| 2048 { ui::VKEY_OEM_MINUS, keycode_minus_, 0, 0, |
| 2049 ui::VKEY_OEM_MINUS, keycode_minus_, 0, 0 }, |
| 2050 { ui::VKEY_OEM_PLUS, keycode_equal_, 0, 0, |
| 2051 ui::VKEY_OEM_PLUS, keycode_equal_, 0, 0 }, |
| 2052 |
| 2053 // The number row should be rewritten as the F<number> row with Search key. |
| 2054 { ui::VKEY_1, keycode_1_, Mod4Mask, 0, |
| 2055 ui::VKEY_F1, keycode_f1_, 0, 0 }, |
| 2056 { ui::VKEY_2, keycode_2_, Mod4Mask, 0, |
| 2057 ui::VKEY_F2, keycode_f2_, 0, 0 }, |
| 2058 { ui::VKEY_3, keycode_3_, Mod4Mask, 0, |
| 2059 ui::VKEY_F3, keycode_f3_, 0, 0 }, |
| 2060 { ui::VKEY_4, keycode_4_, Mod4Mask, 0, |
| 2061 ui::VKEY_F4, keycode_f4_, 0, 0 }, |
| 2062 { ui::VKEY_5, keycode_5_, Mod4Mask, 0, |
| 2063 ui::VKEY_F5, keycode_f5_, 0, 0 }, |
| 2064 { ui::VKEY_6, keycode_6_, Mod4Mask, 0, |
| 2065 ui::VKEY_F6, keycode_f6_, 0, 0 }, |
| 2066 { ui::VKEY_7, keycode_7_, Mod4Mask, 0, |
| 2067 ui::VKEY_F7, keycode_f7_, 0, 0 }, |
| 2068 { ui::VKEY_8, keycode_8_, Mod4Mask, 0, |
| 2069 ui::VKEY_F8, keycode_f8_, 0, 0 }, |
| 2070 { ui::VKEY_9, keycode_9_, Mod4Mask, 0, |
| 2071 ui::VKEY_F9, keycode_f9_, 0, 0 }, |
| 2072 { ui::VKEY_0, keycode_0_, Mod4Mask, 0, |
| 2073 ui::VKEY_F10, keycode_f10_, 0, 0 }, |
| 2074 { ui::VKEY_OEM_MINUS, keycode_minus_, Mod4Mask, 0, |
| 2075 ui::VKEY_F11, keycode_f11_, 0, 0 }, |
| 2076 { ui::VKEY_OEM_PLUS, keycode_equal_, Mod4Mask, 0, |
| 2077 ui::VKEY_F12, keycode_f12_, 0, 0 }, |
| 2078 |
| 2079 // The function keys should not be rewritten with Search key pressed. |
| 2080 { ui::VKEY_F1, keycode_f1_, Mod4Mask, 0, |
| 2081 ui::VKEY_F1, keycode_f1_, 0, 0 }, |
| 2082 { ui::VKEY_F2, keycode_f2_, Mod4Mask, 0, |
| 2083 ui::VKEY_F2, keycode_f2_, 0, 0 }, |
| 2084 { ui::VKEY_F3, keycode_f3_, Mod4Mask, 0, |
| 2085 ui::VKEY_F3, keycode_f3_, 0, 0 }, |
| 2086 { ui::VKEY_F4, keycode_f4_, Mod4Mask, 0, |
| 2087 ui::VKEY_F4, keycode_f4_, 0, 0 }, |
| 2088 { ui::VKEY_F5, keycode_f5_, Mod4Mask, 0, |
| 2089 ui::VKEY_F5, keycode_f5_, 0, 0 }, |
| 2090 { ui::VKEY_F6, keycode_f6_, Mod4Mask, 0, |
| 2091 ui::VKEY_F6, keycode_f6_, 0, 0 }, |
| 2092 { ui::VKEY_F7, keycode_f7_, Mod4Mask, 0, |
| 2093 ui::VKEY_F7, keycode_f7_, 0, 0 }, |
| 2094 { ui::VKEY_F8, keycode_f8_, Mod4Mask, 0, |
| 2095 ui::VKEY_F8, keycode_f8_, 0, 0 }, |
| 2096 { ui::VKEY_F9, keycode_f9_, Mod4Mask, 0, |
| 2097 ui::VKEY_F9, keycode_f9_, 0, 0 }, |
| 2098 { ui::VKEY_F10, keycode_f10_, Mod4Mask, 0, |
| 2099 ui::VKEY_F10, keycode_f10_, 0, 0 }, |
| 2100 { ui::VKEY_F11, keycode_f11_, Mod4Mask, 0, |
| 2101 ui::VKEY_F11, keycode_f11_, 0, 0 }, |
| 2102 { ui::VKEY_F12, keycode_f12_, Mod4Mask, 0, |
| 2103 ui::VKEY_F12, keycode_f12_, 0, 0 }, |
| 2023 }; | 2104 }; |
| 2024 | 2105 |
| 2025 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(chromeos_tests); ++i) { | 2106 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) { |
| 2026 EXPECT_EQ(GetExpectedResultAsString(chromeos_tests[i].output, | 2107 EXPECT_EQ(GetExpectedResultAsString(tests[i].output, |
| 2027 0, | 2108 tests[i].output_mods, |
| 2028 ui::ET_KEY_PRESSED, | 2109 ui::ET_KEY_PRESSED, |
| 2029 chromeos_tests[i].output_native, | 2110 tests[i].output_native, |
| 2030 0U, | 2111 tests[i].output_native_mods, |
| 2031 KeyPress), | 2112 KeyPress), |
| 2032 GetRewrittenEventAsString(&rewriter, | 2113 GetRewrittenEventAsString(&rewriter, |
| 2033 chromeos_tests[i].input, | 2114 tests[i].input, |
| 2034 0, | 2115 tests[i].input_mods, |
| 2035 ui::ET_KEY_PRESSED, | 2116 ui::ET_KEY_PRESSED, |
| 2036 chromeos_tests[i].input_native, | 2117 tests[i].input_native, |
| 2037 0)); | 2118 tests[i].input_native_mods)); |
| 2038 | |
| 2039 // Search key as a modifier does not change the outcome. | |
| 2040 EXPECT_EQ(GetExpectedResultAsString(chromeos_tests[i].output, | |
| 2041 0, | |
| 2042 ui::ET_KEY_PRESSED, | |
| 2043 chromeos_tests[i].output_native, | |
| 2044 Mod4Mask, | |
| 2045 KeyPress), | |
| 2046 GetRewrittenEventAsString(&rewriter, | |
| 2047 chromeos_tests[i].input, | |
| 2048 0, | |
| 2049 ui::ET_KEY_PRESSED, | |
| 2050 chromeos_tests[i].input_native, | |
| 2051 Mod4Mask)); | |
| 2052 } | 2119 } |
| 2053 | |
| 2054 // Make Search key act like a Function key for accessing extended key | |
| 2055 // bindings. Now Search key as a modifier will make the number row | |
| 2056 // act like the F<number> row. | |
| 2057 CommandLine::ForCurrentProcess()->AppendSwitchASCII( | |
| 2058 switches::kEnableChromebookFunctionKey, ""); | |
| 2059 | |
| 2060 // Without a Search key modifier, the results should be the same as before. | |
| 2061 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(chromeos_tests); ++i) { | |
| 2062 EXPECT_EQ(GetExpectedResultAsString(chromeos_tests[i].output, | |
| 2063 0, | |
| 2064 ui::ET_KEY_PRESSED, | |
| 2065 chromeos_tests[i].output_native, | |
| 2066 0U, | |
| 2067 KeyPress), | |
| 2068 GetRewrittenEventAsString(&rewriter, | |
| 2069 chromeos_tests[i].input, | |
| 2070 0, | |
| 2071 ui::ET_KEY_PRESSED, | |
| 2072 chromeos_tests[i].input_native, | |
| 2073 0)); | |
| 2074 } | |
| 2075 | |
| 2076 struct { | |
| 2077 ui::KeyboardCode input; | |
| 2078 KeyCode input_native; | |
| 2079 ui::KeyboardCode output; | |
| 2080 KeyCode output_native; | |
| 2081 } search_key_tests[] = { | |
| 2082 // The number row should be rewritten as the F<number> row. | |
| 2083 { ui::VKEY_1, keycode_1_, ui::VKEY_F1, keycode_f1_, }, | |
| 2084 { ui::VKEY_2, keycode_2_, ui::VKEY_F2, keycode_f2_, }, | |
| 2085 { ui::VKEY_3, keycode_3_, ui::VKEY_F3, keycode_f3_, }, | |
| 2086 { ui::VKEY_4, keycode_4_, ui::VKEY_F4, keycode_f4_, }, | |
| 2087 { ui::VKEY_5, keycode_5_, ui::VKEY_F5, keycode_f5_, }, | |
| 2088 { ui::VKEY_6, keycode_6_, ui::VKEY_F6, keycode_f6_, }, | |
| 2089 { ui::VKEY_7, keycode_7_, ui::VKEY_F7, keycode_f7_, }, | |
| 2090 { ui::VKEY_8, keycode_8_, ui::VKEY_F8, keycode_f8_, }, | |
| 2091 { ui::VKEY_9, keycode_9_, ui::VKEY_F9, keycode_f9_, }, | |
| 2092 { ui::VKEY_0, keycode_0_, ui::VKEY_F10, keycode_f10_, }, | |
| 2093 { ui::VKEY_OEM_MINUS, keycode_minus_, ui::VKEY_F11, keycode_f11_, }, | |
| 2094 { ui::VKEY_OEM_PLUS, keycode_equal_, ui::VKEY_F12, keycode_f12_, }, | |
| 2095 | |
| 2096 // The function keys should not be rewritten anymore. | |
| 2097 { ui::VKEY_F1, keycode_f1_, ui::VKEY_F1, keycode_f1_, }, | |
| 2098 { ui::VKEY_F2, keycode_f2_, ui::VKEY_F2, keycode_f2_, }, | |
| 2099 { ui::VKEY_F3, keycode_f3_, ui::VKEY_F3, keycode_f3_, }, | |
| 2100 { ui::VKEY_F4, keycode_f4_, ui::VKEY_F4, keycode_f4_, }, | |
| 2101 { ui::VKEY_F5, keycode_f5_, ui::VKEY_F5, keycode_f5_, }, | |
| 2102 { ui::VKEY_F6, keycode_f6_, ui::VKEY_F6, keycode_f6_, }, | |
| 2103 { ui::VKEY_F7, keycode_f7_, ui::VKEY_F7, keycode_f7_, }, | |
| 2104 { ui::VKEY_F8, keycode_f8_, ui::VKEY_F8, keycode_f8_, }, | |
| 2105 { ui::VKEY_F9, keycode_f9_, ui::VKEY_F9, keycode_f9_, }, | |
| 2106 { ui::VKEY_F10, keycode_f10_, ui::VKEY_F10, keycode_f10_, }, | |
| 2107 { ui::VKEY_F11, keycode_f11_, ui::VKEY_F11, keycode_f11_, }, | |
| 2108 { ui::VKEY_F12, keycode_f12_, ui::VKEY_F12, keycode_f12_, }, | |
| 2109 }; | |
| 2110 | |
| 2111 // But with a Search key as a modifier, we should have new rewrite rules now. | |
| 2112 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(search_key_tests); ++i) { | |
| 2113 EXPECT_EQ(GetExpectedResultAsString(search_key_tests[i].output, | |
| 2114 0, | |
| 2115 ui::ET_KEY_PRESSED, | |
| 2116 search_key_tests[i].output_native, | |
| 2117 0, | |
| 2118 KeyPress), | |
| 2119 GetRewrittenEventAsString(&rewriter, | |
| 2120 search_key_tests[i].input, | |
| 2121 0, | |
| 2122 ui::ET_KEY_PRESSED, | |
| 2123 search_key_tests[i].input_native, | |
| 2124 Mod4Mask)); | |
| 2125 | |
| 2126 // Other modifiers should be preserved. | |
| 2127 EXPECT_EQ(GetExpectedResultAsString(search_key_tests[i].output, | |
| 2128 ui::EF_ALT_DOWN, | |
| 2129 ui::ET_KEY_PRESSED, | |
| 2130 search_key_tests[i].output_native, | |
| 2131 Mod1Mask, | |
| 2132 KeyPress), | |
| 2133 GetRewrittenEventAsString(&rewriter, | |
| 2134 search_key_tests[i].input, | |
| 2135 ui::EF_ALT_DOWN, | |
| 2136 ui::ET_KEY_PRESSED, | |
| 2137 search_key_tests[i].input_native, | |
| 2138 Mod4Mask | Mod1Mask)); | |
| 2139 | |
| 2140 EXPECT_EQ(GetExpectedResultAsString(search_key_tests[i].output, | |
| 2141 ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN, | |
| 2142 ui::ET_KEY_PRESSED, | |
| 2143 search_key_tests[i].output_native, | |
| 2144 ControlMask | Mod1Mask, | |
| 2145 KeyPress), | |
| 2146 GetRewrittenEventAsString(&rewriter, | |
| 2147 search_key_tests[i].input, | |
| 2148 ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN, | |
| 2149 ui::ET_KEY_PRESSED, | |
| 2150 search_key_tests[i].input_native, | |
| 2151 Mod4Mask | ControlMask | Mod1Mask)); | |
| 2152 } | |
| 2153 | |
| 2154 *CommandLine::ForCurrentProcess() = original_cl; | |
| 2155 } | 2120 } |
| 2156 | 2121 |
| 2157 TEST_F(EventRewriterTest, TestRewriteExtendedKeysWithSearchRemapped) { | 2122 TEST_F(EventRewriterTest, TestRewriteExtendedKeysWithSearchRemapped) { |
| 2158 const CommandLine original_cl(*CommandLine::ForCurrentProcess()); | 2123 const CommandLine original_cl(*CommandLine::ForCurrentProcess()); |
| 2159 | 2124 |
| 2160 // Remap Search to Control. | 2125 // Remap Search to Control. |
| 2161 TestingPrefService prefs; | 2126 TestingPrefService prefs; |
| 2162 chromeos::Preferences::RegisterUserPrefs(&prefs); | 2127 chromeos::Preferences::RegisterUserPrefs(&prefs); |
| 2163 IntegerPrefMember search; | 2128 IntegerPrefMember search; |
| 2164 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs); | 2129 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs); |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2232 // flag in the event is True. | 2197 // flag in the event is True. |
| 2233 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CONTROL, | 2198 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CONTROL, |
| 2234 ui::EF_CONTROL_DOWN, | 2199 ui::EF_CONTROL_DOWN, |
| 2235 ui::ET_KEY_PRESSED, | 2200 ui::ET_KEY_PRESSED, |
| 2236 keycode_control_l_, | 2201 keycode_control_l_, |
| 2237 0U, | 2202 0U, |
| 2238 KeyPress), | 2203 KeyPress), |
| 2239 rewritten_event); | 2204 rewritten_event); |
| 2240 } | 2205 } |
| 2241 #endif // OS_CHROMEOS | 2206 #endif // OS_CHROMEOS |
| OLD | NEW |