Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(60)

Side by Side Diff: chrome/browser/ui/ash/event_rewriter_unittest.cc

Issue 11578044: Enable Search-key modifiers for extended key shortcuts. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 1790 matching lines...) Expand 10 before | Expand all | Expand 10 after
1801 ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, Mod1Mask | ControlMask, 1801 ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, Mod1Mask | ControlMask,
1802 ui::VKEY_HOME, keycode_home_, 1802 ui::VKEY_HOME, keycode_home_,
1803 0, 0, }, 1803 0, 0, },
1804 // Ctrl+Alt+Down -> End 1804 // Ctrl+Alt+Down -> End
1805 { ui::VKEY_DOWN, keycode_down_, 1805 { ui::VKEY_DOWN, keycode_down_,
1806 ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, Mod1Mask | ControlMask, 1806 ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, Mod1Mask | ControlMask,
1807 ui::VKEY_END, keycode_end_, 1807 ui::VKEY_END, keycode_end_,
1808 0, 0, }, 1808 0, 0, },
1809 // Period -> Period 1809 // Period -> Period
1810 { ui::VKEY_OEM_PERIOD, keycode_period_, 0, 0, 1810 { ui::VKEY_OEM_PERIOD, keycode_period_, 0, 0,
1811 ui::VKEY_OEM_PERIOD, keycode_period_, 0, 0 } 1811 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 1812
1881 // Search+Backspace -> Delete 1813 // Search+Backspace -> Delete
1882 { ui::VKEY_BACK, keycode_backspace_, 1814 { ui::VKEY_BACK, keycode_backspace_,
1883 0, Mod4Mask, 1815 0, Mod4Mask,
1884 ui::VKEY_DELETE, keycode_delete_, 1816 ui::VKEY_DELETE, keycode_delete_,
1885 0, 0, }, 1817 0, 0, },
1886 // Alt+Search+Backspace -> Alt+Delete 1818 // Alt+Search+Backspace -> Alt+Delete
1887 { ui::VKEY_BACK, keycode_backspace_, 1819 { ui::VKEY_BACK, keycode_backspace_,
1888 ui::EF_ALT_DOWN, Mod4Mask | Mod1Mask, 1820 ui::EF_ALT_DOWN, Mod4Mask | Mod1Mask,
1889 ui::VKEY_DELETE, keycode_delete_, 1821 ui::VKEY_DELETE, keycode_delete_,
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1921 // Search+Period -> Insert 1853 // Search+Period -> Insert
1922 { ui::VKEY_OEM_PERIOD, keycode_period_, 0, Mod4Mask, 1854 { ui::VKEY_OEM_PERIOD, keycode_period_, 0, Mod4Mask,
1923 ui::VKEY_INSERT, keycode_insert_, 0, 0 }, 1855 ui::VKEY_INSERT, keycode_insert_, 0, 0 },
1924 // Control+Search+Period -> Control+Insert 1856 // Control+Search+Period -> Control+Insert
1925 { ui::VKEY_OEM_PERIOD, keycode_period_, 1857 { ui::VKEY_OEM_PERIOD, keycode_period_,
1926 ui::EF_CONTROL_DOWN, Mod4Mask | ControlMask, 1858 ui::EF_CONTROL_DOWN, Mod4Mask | ControlMask,
1927 ui::VKEY_INSERT, keycode_insert_, 1859 ui::VKEY_INSERT, keycode_insert_,
1928 ui::EF_CONTROL_DOWN, ControlMask } 1860 ui::EF_CONTROL_DOWN, ControlMask }
1929 }; 1861 };
1930 1862
1863 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(chromeos_tests); ++i) {
1864 EXPECT_EQ(GetExpectedResultAsString(chromeos_tests[i].output,
1865 chromeos_tests[i].output_mods,
1866 ui::ET_KEY_PRESSED,
1867 chromeos_tests[i].output_native,
1868 chromeos_tests[i].output_native_mods,
1869 KeyPress),
1870 GetRewrittenEventAsString(&rewriter,
1871 chromeos_tests[i].input,
1872 chromeos_tests[i].input_mods,
1873 ui::ET_KEY_PRESSED,
1874 chromeos_tests[i].input_native,
1875 chromeos_tests[i].input_native_mods));
1876 }
1877
1878 // Disable non-Search key shortcuts.
1879 CommandLine::ForCurrentProcess()->AppendSwitchASCII(
1880 switches::kDisableNonSearchExtendedKeyShortcuts, "");
1881
1882 struct {
1883 ui::KeyboardCode input;
1884 KeyCode input_native;
1885 unsigned int input_mods;
1886 unsigned int input_native_mods;
1887 ui::KeyboardCode output;
1888 KeyCode output_native;
1889 unsigned int output_mods;
1890 unsigned int output_native_mods;
1891 } search_tests[] = {
1892 { ui::VKEY_BACK, keycode_backspace_,
1893 ui::EF_ALT_DOWN, Mod1Mask,
1894 ui::VKEY_BACK, keycode_backspace_,
1895 ui::EF_ALT_DOWN, Mod1Mask, },
1896 { ui::VKEY_UP, keycode_up_,
1897 ui::EF_ALT_DOWN, Mod1Mask,
1898 ui::VKEY_UP, keycode_up_,
1899 ui::EF_ALT_DOWN, Mod1Mask, },
1900 { ui::VKEY_UP, keycode_up_,
1901 ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, Mod1Mask | ControlMask,
1902 ui::VKEY_UP, keycode_up_,
1903 ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, Mod1Mask | ControlMask, },
1904 { ui::VKEY_DOWN, keycode_down_,
1905 ui::EF_ALT_DOWN, Mod1Mask,
1906 ui::VKEY_DOWN, keycode_down_,
1907 ui::EF_ALT_DOWN, Mod1Mask, },
1908 { ui::VKEY_LEFT, keycode_left_, 0, 0,
1909 ui::VKEY_LEFT, keycode_left_, 0, 0 },
1910 { ui::VKEY_RIGHT, keycode_right_, 0, 0,
1911 ui::VKEY_RIGHT, keycode_right_, 0, 0 },
1912 };
1913
1931 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(search_tests); ++i) { 1914 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(search_tests); ++i) {
1932 EXPECT_EQ(GetExpectedResultAsString(search_tests[i].output, 1915 EXPECT_EQ(GetExpectedResultAsString(search_tests[i].output,
1933 search_tests[i].output_mods, 1916 search_tests[i].output_mods,
1934 ui::ET_KEY_PRESSED, 1917 ui::ET_KEY_PRESSED,
1935 search_tests[i].output_native, 1918 search_tests[i].output_native,
1936 search_tests[i].output_native_mods, 1919 search_tests[i].output_native_mods,
1937 KeyPress), 1920 KeyPress),
1938 GetRewrittenEventAsString(&rewriter, 1921 GetRewrittenEventAsString(&rewriter,
1939 search_tests[i].input, 1922 search_tests[i].input,
1940 search_tests[i].input_mods, 1923 search_tests[i].input_mods,
1941 ui::ET_KEY_PRESSED, 1924 ui::ET_KEY_PRESSED,
1942 search_tests[i].input_native, 1925 search_tests[i].input_native,
1943 search_tests[i].input_native_mods)); 1926 search_tests[i].input_native_mods));
1944 } 1927 }
1945 1928
1946 *CommandLine::ForCurrentProcess() = original_cl; 1929 *CommandLine::ForCurrentProcess() = original_cl;
1947 } 1930 }
1948 1931
1949 TEST_F(EventRewriterTest, TestRewriteFunctionKeys) { 1932 TEST_F(EventRewriterTest, TestRewriteFunctionKeys) {
1950 const CommandLine original_cl(*CommandLine::ForCurrentProcess()); 1933 const CommandLine original_cl(*CommandLine::ForCurrentProcess());
1951 TestingPrefService prefs; 1934 TestingPrefService prefs;
1952 chromeos::Preferences::RegisterUserPrefs(&prefs); 1935 chromeos::Preferences::RegisterUserPrefs(&prefs);
1953 EventRewriter rewriter; 1936 EventRewriter rewriter;
1954 rewriter.set_pref_service_for_testing(&prefs); 1937 rewriter.set_pref_service_for_testing(&prefs);
1955 1938
1956 struct { 1939 struct {
1957 ui::KeyboardCode input; 1940 ui::KeyboardCode input;
1958 KeyCode input_native; 1941 KeyCode input_native;
1942 unsigned int input_native_mods;
1943 unsigned int input_mods;
1959 ui::KeyboardCode output; 1944 ui::KeyboardCode output;
1960 KeyCode output_native; 1945 KeyCode output_native;
1961 } chromeos_tests[] = { 1946 unsigned int output_native_mods;
1962 { // F1 -> Back 1947 unsigned int output_mods;
1963 ui::VKEY_F1, keycode_f1_, 1948 } tests[] = {
1964 ui::VKEY_BROWSER_BACK, keycode_browser_back_ 1949 // F1 -> Back
1965 }, 1950 { ui::VKEY_F1, keycode_f1_, 0, 0,
1966 { // F2 -> Forward 1951 ui::VKEY_BROWSER_BACK, keycode_browser_back_, 0, 0 },
1967 ui::VKEY_F2, keycode_f2_, 1952 { ui::VKEY_F1, keycode_f1_, ControlMask, ui::EF_CONTROL_DOWN,
1968 ui::VKEY_BROWSER_FORWARD, keycode_browser_forward_ 1953 ui::VKEY_BROWSER_BACK, keycode_browser_back_,
1969 }, 1954 ControlMask, ui::EF_CONTROL_DOWN },
1970 { // F3 -> Refresh 1955 { ui::VKEY_F1, keycode_f1_, Mod1Mask, ui::EF_ALT_DOWN,
1971 ui::VKEY_F3, keycode_f3_, 1956 ui::VKEY_BROWSER_BACK, keycode_browser_back_,
1972 ui::VKEY_BROWSER_REFRESH, keycode_browser_refresh_ 1957 Mod1Mask, ui::EF_ALT_DOWN },
1973 }, 1958 // F2 -> Forward
1974 { // F4 -> Launch App 2 1959 { ui::VKEY_F2, keycode_f2_, 0, 0,
1975 ui::VKEY_F4, keycode_f4_, 1960 ui::VKEY_BROWSER_FORWARD, keycode_browser_forward_, 0, 0 },
1976 ui::VKEY_MEDIA_LAUNCH_APP2, keycode_media_launch_app2_ 1961 { ui::VKEY_F2, keycode_f2_, ControlMask, ui::EF_CONTROL_DOWN,
1977 }, 1962 ui::VKEY_BROWSER_FORWARD, keycode_browser_forward_,
1978 { // F5 -> Launch App 1 1963 ControlMask, ui::EF_CONTROL_DOWN },
1979 ui::VKEY_F5, keycode_f5_, 1964 { ui::VKEY_F2, keycode_f2_, Mod1Mask, ui::EF_ALT_DOWN,
1980 ui::VKEY_MEDIA_LAUNCH_APP1, keycode_media_launch_app1_ 1965 ui::VKEY_BROWSER_FORWARD, keycode_browser_forward_,
1981 }, 1966 Mod1Mask, ui::EF_ALT_DOWN },
1982 { // F6 -> Brightness down 1967 // F3 -> Refresh
1983 ui::VKEY_F6, keycode_f6_, 1968 { ui::VKEY_F3, keycode_f3_, 0, 0,
1984 ui::VKEY_BRIGHTNESS_DOWN, keycode_brightness_down_ 1969 ui::VKEY_BROWSER_REFRESH, keycode_browser_refresh_, 0, 0 },
1985 }, 1970 { ui::VKEY_F3, keycode_f3_, ControlMask, ui::EF_CONTROL_DOWN,
1986 { // F7 -> Brightness up 1971 ui::VKEY_BROWSER_REFRESH, keycode_browser_refresh_,
1987 ui::VKEY_F7, keycode_f7_, 1972 ControlMask, ui::EF_CONTROL_DOWN },
1988 ui::VKEY_BRIGHTNESS_UP, keycode_brightness_up_ 1973 { ui::VKEY_F3, keycode_f3_, Mod1Mask, ui::EF_ALT_DOWN,
1989 }, 1974 ui::VKEY_BROWSER_REFRESH, keycode_browser_refresh_,
1990 { // F8 -> Volume Mute 1975 Mod1Mask, ui::EF_ALT_DOWN },
1991 ui::VKEY_F8, keycode_f8_, 1976 // F4 -> Launch App 2
1992 ui::VKEY_VOLUME_MUTE, keycode_volume_mute_ 1977 { ui::VKEY_F4, keycode_f4_, 0, 0,
1993 }, 1978 ui::VKEY_MEDIA_LAUNCH_APP2, keycode_media_launch_app2_, 0, 0 },
1994 { // F9 -> Volume Down 1979 { ui::VKEY_F4, keycode_f4_, ControlMask, ui::EF_CONTROL_DOWN,
1995 ui::VKEY_F9, keycode_f9_, 1980 ui::VKEY_MEDIA_LAUNCH_APP2, keycode_media_launch_app2_,
1996 ui::VKEY_VOLUME_DOWN, keycode_volume_down_ 1981 ControlMask, ui::EF_CONTROL_DOWN },
1997 }, 1982 { ui::VKEY_F4, keycode_f4_, Mod1Mask, ui::EF_ALT_DOWN,
1998 { // F10 -> Volume Up 1983 ui::VKEY_MEDIA_LAUNCH_APP2, keycode_media_launch_app2_,
1999 ui::VKEY_F10, keycode_f10_, 1984 Mod1Mask, ui::EF_ALT_DOWN },
2000 ui::VKEY_VOLUME_UP, keycode_volume_up_ 1985 // F5 -> Launch App 1
2001 }, 1986 { ui::VKEY_F5, keycode_f5_, 0, 0,
2002 { // F11 -> F11 1987 ui::VKEY_MEDIA_LAUNCH_APP1, keycode_media_launch_app1_, 0, 0 },
2003 ui::VKEY_F11, keycode_f11_, 1988 { ui::VKEY_F5, keycode_f5_, ControlMask, ui::EF_CONTROL_DOWN,
2004 ui::VKEY_F11, keycode_f11_ 1989 ui::VKEY_MEDIA_LAUNCH_APP1, keycode_media_launch_app1_,
2005 }, 1990 ControlMask, ui::EF_CONTROL_DOWN },
2006 { // F12 -> F12 1991 { ui::VKEY_F5, keycode_f5_, Mod1Mask, ui::EF_ALT_DOWN,
2007 ui::VKEY_F12, keycode_f12_, 1992 ui::VKEY_MEDIA_LAUNCH_APP1, keycode_media_launch_app1_,
2008 ui::VKEY_F12, keycode_f12_, 1993 Mod1Mask, ui::EF_ALT_DOWN },
2009 }, 1994 // F6 -> Brightness down
2010 // The number row should not be rewritten. 1995 { ui::VKEY_F6, keycode_f6_, 0, 0,
2011 { ui::VKEY_1, keycode_1_, ui::VKEY_1, keycode_1_, }, 1996 ui::VKEY_BRIGHTNESS_DOWN, keycode_brightness_down_, 0, 0 },
2012 { ui::VKEY_2, keycode_2_, ui::VKEY_2, keycode_2_, }, 1997 { ui::VKEY_F6, keycode_f6_, ControlMask, ui::EF_CONTROL_DOWN,
2013 { ui::VKEY_3, keycode_3_, ui::VKEY_3, keycode_3_, }, 1998 ui::VKEY_BRIGHTNESS_DOWN, keycode_brightness_down_,
2014 { ui::VKEY_4, keycode_4_, ui::VKEY_4, keycode_4_, }, 1999 ControlMask, ui::EF_CONTROL_DOWN },
2015 { ui::VKEY_5, keycode_5_, ui::VKEY_5, keycode_5_, }, 2000 { ui::VKEY_F6, keycode_f6_, Mod1Mask, ui::EF_ALT_DOWN,
2016 { ui::VKEY_6, keycode_6_, ui::VKEY_6, keycode_6_, }, 2001 ui::VKEY_BRIGHTNESS_DOWN, keycode_brightness_down_,
2017 { ui::VKEY_7, keycode_7_, ui::VKEY_7, keycode_7_, }, 2002 Mod1Mask, ui::EF_ALT_DOWN },
2018 { ui::VKEY_8, keycode_8_, ui::VKEY_8, keycode_8_, }, 2003 // F7 -> Brightness up
2019 { ui::VKEY_9, keycode_9_, ui::VKEY_9, keycode_9_, }, 2004 { ui::VKEY_F7, keycode_f7_, 0, 0,
2020 { ui::VKEY_0, keycode_0_, ui::VKEY_0, keycode_0_, }, 2005 ui::VKEY_BRIGHTNESS_UP, keycode_brightness_up_, 0, 0 },
2021 { ui::VKEY_OEM_MINUS, keycode_minus_, ui::VKEY_OEM_MINUS, keycode_minus_, }, 2006 { ui::VKEY_F7, keycode_f7_, ControlMask, ui::EF_CONTROL_DOWN,
2022 { ui::VKEY_OEM_PLUS, keycode_equal_, ui::VKEY_OEM_PLUS, keycode_equal_, }, 2007 ui::VKEY_BRIGHTNESS_UP, keycode_brightness_up_,
2008 ControlMask, ui::EF_CONTROL_DOWN },
2009 { ui::VKEY_F7, keycode_f7_, Mod1Mask, ui::EF_ALT_DOWN,
2010 ui::VKEY_BRIGHTNESS_UP, keycode_brightness_up_,
2011 Mod1Mask, ui::EF_ALT_DOWN },
2012 // F8 -> Volume Mute
2013 { ui::VKEY_F8, keycode_f8_, 0, 0,
2014 ui::VKEY_VOLUME_MUTE, keycode_volume_mute_, 0, 0 },
2015 { ui::VKEY_F8, keycode_f8_, ControlMask, ui::EF_CONTROL_DOWN,
2016 ui::VKEY_VOLUME_MUTE, keycode_volume_mute_,
2017 ControlMask, ui::EF_CONTROL_DOWN },
2018 { ui::VKEY_F8, keycode_f8_, Mod1Mask, ui::EF_ALT_DOWN,
2019 ui::VKEY_VOLUME_MUTE, keycode_volume_mute_,
2020 Mod1Mask, ui::EF_ALT_DOWN },
2021 // F9 -> Volume Down
2022 { ui::VKEY_F9, keycode_f9_, 0, 0,
2023 ui::VKEY_VOLUME_DOWN, keycode_volume_down_, 0, 0 },
2024 { ui::VKEY_F9, keycode_f9_, ControlMask, ui::EF_CONTROL_DOWN,
2025 ui::VKEY_VOLUME_DOWN, keycode_volume_down_,
2026 ControlMask, ui::EF_CONTROL_DOWN },
2027 { ui::VKEY_F9, keycode_f9_, Mod1Mask, ui::EF_ALT_DOWN,
2028 ui::VKEY_VOLUME_DOWN, keycode_volume_down_,
2029 Mod1Mask, ui::EF_ALT_DOWN },
2030 // F10 -> Volume Up
2031 { ui::VKEY_F10, keycode_f10_, 0, 0,
2032 ui::VKEY_VOLUME_UP, keycode_volume_up_, 0, 0 },
2033 { ui::VKEY_F10, keycode_f10_, ControlMask, ui::EF_CONTROL_DOWN,
2034 ui::VKEY_VOLUME_UP, keycode_volume_up_,
2035 ControlMask, ui::EF_CONTROL_DOWN },
2036 { ui::VKEY_F10, keycode_f10_, Mod1Mask, ui::EF_ALT_DOWN,
2037 ui::VKEY_VOLUME_UP, keycode_volume_up_,
2038 Mod1Mask, ui::EF_ALT_DOWN },
2039 // F11 -> F11
2040 { ui::VKEY_F11, keycode_f11_, 0, 0,
2041 ui::VKEY_F11, keycode_f11_, 0, 0 },
2042 { ui::VKEY_F11, keycode_f11_, ControlMask, ui::EF_CONTROL_DOWN,
2043 ui::VKEY_F11, keycode_f11_, ControlMask, ui::EF_CONTROL_DOWN },
2044 { ui::VKEY_F11, keycode_f11_, Mod1Mask, ui::EF_ALT_DOWN,
2045 ui::VKEY_F11, keycode_f11_, Mod1Mask, ui::EF_ALT_DOWN },
2046 // F12 -> F12
2047 { ui::VKEY_F12, keycode_f12_, 0, 0,
2048 ui::VKEY_F12, keycode_f12_, 0, 0 },
2049 { ui::VKEY_F12, keycode_f12_, ControlMask, ui::EF_CONTROL_DOWN,
2050 ui::VKEY_F12, keycode_f12_, ControlMask, ui::EF_CONTROL_DOWN },
2051 { ui::VKEY_F12, keycode_f12_, Mod1Mask, ui::EF_ALT_DOWN,
2052 ui::VKEY_F12, keycode_f12_, Mod1Mask, ui::EF_ALT_DOWN },
2053
2054 // The number row should not be rewritten without Search key.
2055 { ui::VKEY_1, keycode_1_, 0, 0,
2056 ui::VKEY_1, keycode_1_, 0, 0 },
2057 { ui::VKEY_2, keycode_2_, 0, 0,
2058 ui::VKEY_2, keycode_2_, 0, 0 },
2059 { ui::VKEY_3, keycode_3_, 0, 0,
2060 ui::VKEY_3, keycode_3_, 0, 0 },
2061 { ui::VKEY_4, keycode_4_, 0, 0,
2062 ui::VKEY_4, keycode_4_, 0, 0 },
2063 { ui::VKEY_5, keycode_5_, 0, 0,
2064 ui::VKEY_5, keycode_5_, 0, 0 },
2065 { ui::VKEY_6, keycode_6_, 0, 0,
2066 ui::VKEY_6, keycode_6_, 0, 0 },
2067 { ui::VKEY_7, keycode_7_, 0, 0,
2068 ui::VKEY_7, keycode_7_, 0, 0 },
2069 { ui::VKEY_8, keycode_8_, 0, 0,
2070 ui::VKEY_8, keycode_8_, 0, 0 },
2071 { ui::VKEY_9, keycode_9_, 0, 0,
2072 ui::VKEY_9, keycode_9_, 0, 0 },
2073 { ui::VKEY_0, keycode_0_, 0, 0,
2074 ui::VKEY_0, keycode_0_, 0, 0 },
2075 { ui::VKEY_OEM_MINUS, keycode_minus_, 0, 0,
2076 ui::VKEY_OEM_MINUS, keycode_minus_, 0, 0 },
2077 { ui::VKEY_OEM_PLUS, keycode_equal_, 0, 0,
2078 ui::VKEY_OEM_PLUS, keycode_equal_, 0, 0 },
2079
2080 // The number row should be rewritten as the F<number> row with Search key.
2081 { ui::VKEY_1, keycode_1_, Mod4Mask, 0,
2082 ui::VKEY_F1, keycode_f1_, 0, 0 },
2083 { ui::VKEY_2, keycode_2_, Mod4Mask, 0,
2084 ui::VKEY_F2, keycode_f2_, 0, 0 },
2085 { ui::VKEY_3, keycode_3_, Mod4Mask, 0,
2086 ui::VKEY_F3, keycode_f3_, 0, 0 },
2087 { ui::VKEY_4, keycode_4_, Mod4Mask, 0,
2088 ui::VKEY_F4, keycode_f4_, 0, 0 },
2089 { ui::VKEY_5, keycode_5_, Mod4Mask, 0,
2090 ui::VKEY_F5, keycode_f5_, 0, 0 },
2091 { ui::VKEY_6, keycode_6_, Mod4Mask, 0,
2092 ui::VKEY_F6, keycode_f6_, 0, 0 },
2093 { ui::VKEY_7, keycode_7_, Mod4Mask, 0,
2094 ui::VKEY_F7, keycode_f7_, 0, 0 },
2095 { ui::VKEY_8, keycode_8_, Mod4Mask, 0,
2096 ui::VKEY_F8, keycode_f8_, 0, 0 },
2097 { ui::VKEY_9, keycode_9_, Mod4Mask, 0,
2098 ui::VKEY_F9, keycode_f9_, 0, 0 },
2099 { ui::VKEY_0, keycode_0_, Mod4Mask, 0,
2100 ui::VKEY_F10, keycode_f10_, 0, 0 },
2101 { ui::VKEY_OEM_MINUS, keycode_minus_, Mod4Mask, 0,
2102 ui::VKEY_F11, keycode_f11_, 0, 0 },
2103 { ui::VKEY_OEM_PLUS, keycode_equal_, Mod4Mask, 0,
2104 ui::VKEY_F12, keycode_f12_, 0, 0 },
2105
2106 // The function keys should not be rewritten with Search key pressed.
2107 { ui::VKEY_F1, keycode_f1_, Mod4Mask, 0,
2108 ui::VKEY_F1, keycode_f1_, 0, 0 },
2109 { ui::VKEY_F2, keycode_f2_, Mod4Mask, 0,
2110 ui::VKEY_F2, keycode_f2_, 0, 0 },
2111 { ui::VKEY_F3, keycode_f3_, Mod4Mask, 0,
2112 ui::VKEY_F3, keycode_f3_, 0, 0 },
2113 { ui::VKEY_F4, keycode_f4_, Mod4Mask, 0,
2114 ui::VKEY_F4, keycode_f4_, 0, 0 },
2115 { ui::VKEY_F5, keycode_f5_, Mod4Mask, 0,
2116 ui::VKEY_F5, keycode_f5_, 0, 0 },
2117 { ui::VKEY_F6, keycode_f6_, Mod4Mask, 0,
2118 ui::VKEY_F6, keycode_f6_, 0, 0 },
2119 { ui::VKEY_F7, keycode_f7_, Mod4Mask, 0,
2120 ui::VKEY_F7, keycode_f7_, 0, 0 },
2121 { ui::VKEY_F8, keycode_f8_, Mod4Mask, 0,
2122 ui::VKEY_F8, keycode_f8_, 0, 0 },
2123 { ui::VKEY_F9, keycode_f9_, Mod4Mask, 0,
2124 ui::VKEY_F9, keycode_f9_, 0, 0 },
2125 { ui::VKEY_F10, keycode_f10_, Mod4Mask, 0,
2126 ui::VKEY_F10, keycode_f10_, 0, 0 },
2127 { ui::VKEY_F11, keycode_f11_, Mod4Mask, 0,
2128 ui::VKEY_F11, keycode_f11_, 0, 0 },
2129 { ui::VKEY_F12, keycode_f12_, Mod4Mask, 0,
2130 ui::VKEY_F12, keycode_f12_, 0, 0 },
2023 }; 2131 };
2024 2132
2025 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(chromeos_tests); ++i) { 2133 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) {
2026 EXPECT_EQ(GetExpectedResultAsString(chromeos_tests[i].output, 2134 EXPECT_EQ(GetExpectedResultAsString(tests[i].output,
2027 0, 2135 tests[i].output_mods,
2028 ui::ET_KEY_PRESSED, 2136 ui::ET_KEY_PRESSED,
2029 chromeos_tests[i].output_native, 2137 tests[i].output_native,
2030 0U, 2138 tests[i].output_native_mods,
2031 KeyPress), 2139 KeyPress),
2032 GetRewrittenEventAsString(&rewriter, 2140 GetRewrittenEventAsString(&rewriter,
2033 chromeos_tests[i].input, 2141 tests[i].input,
2034 0, 2142 tests[i].input_mods,
2035 ui::ET_KEY_PRESSED, 2143 ui::ET_KEY_PRESSED,
2036 chromeos_tests[i].input_native, 2144 tests[i].input_native,
2037 0)); 2145 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 } 2146 }
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 } 2147 }
2156 2148
2157 TEST_F(EventRewriterTest, TestRewriteExtendedKeysWithSearchRemapped) { 2149 TEST_F(EventRewriterTest, TestRewriteExtendedKeysWithSearchRemapped) {
2158 const CommandLine original_cl(*CommandLine::ForCurrentProcess()); 2150 const CommandLine original_cl(*CommandLine::ForCurrentProcess());
2159 2151
2160 // Remap Search to Control. 2152 // Remap Search to Control.
2161 TestingPrefService prefs; 2153 TestingPrefService prefs;
2162 chromeos::Preferences::RegisterUserPrefs(&prefs); 2154 chromeos::Preferences::RegisterUserPrefs(&prefs);
2163 IntegerPrefMember search; 2155 IntegerPrefMember search;
2164 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs); 2156 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs);
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
2232 // flag in the event is True. 2224 // flag in the event is True.
2233 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CONTROL, 2225 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CONTROL,
2234 ui::EF_CONTROL_DOWN, 2226 ui::EF_CONTROL_DOWN,
2235 ui::ET_KEY_PRESSED, 2227 ui::ET_KEY_PRESSED,
2236 keycode_control_l_, 2228 keycode_control_l_,
2237 0U, 2229 0U,
2238 KeyPress), 2230 KeyPress),
2239 rewritten_event); 2231 rewritten_event);
2240 } 2232 }
2241 #endif // OS_CHROMEOS 2233 #endif // OS_CHROMEOS
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698