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

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: nit 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 1742 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
OLDNEW
« no previous file with comments | « chrome/browser/ui/ash/event_rewriter.cc ('k') | chrome/browser/ui/webui/chromeos/keyboard_overlay_ui.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698