Index: chrome/browser/ui/ash/event_rewriter_unittest.cc |
diff --git a/chrome/browser/ui/ash/event_rewriter_unittest.cc b/chrome/browser/ui/ash/event_rewriter_unittest.cc |
index 5c56d66021616b9435f32d074cee0a623c56ba39..518c1ca7fadc60081808dc5363e4bf2c1ca4e7f3 100644 |
--- a/chrome/browser/ui/ash/event_rewriter_unittest.cc |
+++ b/chrome/browser/ui/ash/event_rewriter_unittest.cc |
@@ -110,6 +110,8 @@ class EventRewriterTest : public testing::Test { |
keycode_backspace_(XKeysymToKeycode(display_, XK_BackSpace)), |
keycode_up_(XKeysymToKeycode(display_, XK_Up)), |
keycode_down_(XKeysymToKeycode(display_, XK_Down)), |
+ keycode_left_(XKeysymToKeycode(display_, XK_Left)), |
+ keycode_right_(XKeysymToKeycode(display_, XK_Right)), |
keycode_prior_(XKeysymToKeycode(display_, XK_Prior)), |
keycode_next_(XKeysymToKeycode(display_, XK_Next)), |
keycode_home_(XKeysymToKeycode(display_, XK_Home)), |
@@ -174,6 +176,8 @@ class EventRewriterTest : public testing::Test { |
const KeyCode keycode_backspace_; |
const KeyCode keycode_up_; |
const KeyCode keycode_down_; |
+ const KeyCode keycode_left_; |
+ const KeyCode keycode_right_; |
const KeyCode keycode_prior_; |
const KeyCode keycode_next_; |
const KeyCode keycode_home_; |
@@ -1678,6 +1682,7 @@ TEST_F(EventRewriterTest, TestRewriteCapsLockMod3InUse) { |
TEST_F(EventRewriterTest, TestRewriteBackspaceAndArrowKeys) { |
TestingPrefService prefs; |
+ chromeos::Preferences::RegisterUserPrefs(&prefs); |
EventRewriter rewriter; |
rewriter.set_pref_service_for_testing(&prefs); |
@@ -1779,6 +1784,214 @@ TEST_F(EventRewriterTest, TestRewriteBackspaceAndArrowKeys) { |
ui::ET_KEY_PRESSED, |
keycode_down_, |
ShiftMask | Mod1Mask | ControlMask)); |
+ |
+ // Make Search key act like a Function key for accessing extended key |
+ // bindings. |
+ const CommandLine original_cl(*CommandLine::ForCurrentProcess()); |
+ CommandLine::ForCurrentProcess()->AppendSwitchASCII( |
+ switches::kEnableChromebookFunctionKey, ""); |
+ BooleanPrefMember search_key_as_function_key; |
+ search_key_as_function_key.Init(prefs::kLanguageSearchKeyActsAsFunctionKey, |
+ &prefs, NULL); |
+ search_key_as_function_key.SetValue(true); |
+ |
+ // Alt+Backspace -> Alt+Backspace |
+ EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_BACK, |
+ ui::EF_ALT_DOWN, |
+ ui::ET_KEY_PRESSED, |
+ keycode_backspace_, |
+ Mod1Mask, |
+ KeyPress), |
+ GetRewrittenEventAsString(&rewriter, |
+ ui::VKEY_BACK, |
+ ui::EF_ALT_DOWN, |
+ ui::ET_KEY_PRESSED, |
+ keycode_backspace_, |
+ Mod1Mask)); |
+ |
+ // Search+Backspace -> Delete |
+ EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_DELETE, |
+ 0, |
+ ui::ET_KEY_PRESSED, |
+ keycode_delete_, |
+ 0U, |
+ KeyPress), |
+ GetRewrittenEventAsString(&rewriter, |
+ ui::VKEY_BACK, |
+ 0, |
+ ui::ET_KEY_PRESSED, |
+ keycode_backspace_, |
+ Mod4Mask)); |
+ |
+ // Ctrl+Search+Backspace -> Ctrl+Delete |
+ EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_DELETE, |
+ ui::EF_CONTROL_DOWN, |
+ ui::ET_KEY_PRESSED, |
+ keycode_delete_, |
+ ControlMask, |
+ KeyPress), |
+ GetRewrittenEventAsString(&rewriter, |
+ ui::VKEY_BACK, |
+ 0, |
+ ui::ET_KEY_PRESSED, |
+ keycode_backspace_, |
+ Mod4Mask | ControlMask)); |
+ |
+ // Alt+Search+Backspace -> Alt+Delete |
+ EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_DELETE, |
+ ui::EF_ALT_DOWN, |
+ ui::ET_KEY_PRESSED, |
+ keycode_delete_, |
+ Mod1Mask, |
+ KeyPress), |
+ GetRewrittenEventAsString(&rewriter, |
+ ui::VKEY_BACK, |
+ 0, |
+ ui::ET_KEY_PRESSED, |
+ keycode_backspace_, |
+ Mod4Mask | Mod1Mask)); |
+ |
+ // Alt+Up -> Alt+Up |
+ EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_UP, |
+ ui::EF_ALT_DOWN, |
+ ui::ET_KEY_PRESSED, |
+ keycode_up_, |
+ Mod1Mask, |
+ KeyPress), |
+ GetRewrittenEventAsString(&rewriter, |
+ ui::VKEY_UP, |
+ ui::EF_ALT_DOWN, |
+ ui::ET_KEY_PRESSED, |
+ keycode_up_, |
+ Mod1Mask)); |
+ |
+ // Search+Up -> Prior |
+ EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_PRIOR, |
+ 0, |
+ ui::ET_KEY_PRESSED, |
+ keycode_prior_, |
+ 0U, |
+ KeyPress), |
+ GetRewrittenEventAsString(&rewriter, |
+ ui::VKEY_UP, |
+ 0, |
+ ui::ET_KEY_PRESSED, |
+ keycode_up_, |
+ Mod4Mask)); |
+ |
+ // Alt+Down -> Alt+Down |
+ EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_DOWN, |
+ ui::EF_ALT_DOWN, |
+ ui::ET_KEY_PRESSED, |
+ keycode_down_, |
+ Mod1Mask, |
+ KeyPress), |
+ GetRewrittenEventAsString(&rewriter, |
+ ui::VKEY_DOWN, |
+ ui::EF_ALT_DOWN, |
+ ui::ET_KEY_PRESSED, |
+ keycode_down_, |
+ Mod1Mask)); |
+ |
+ // Search+Down -> Next |
+ EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_NEXT, |
+ 0, |
+ ui::ET_KEY_PRESSED, |
+ keycode_next_, |
+ 0U, |
+ KeyPress), |
+ GetRewrittenEventAsString(&rewriter, |
+ ui::VKEY_DOWN, |
+ 0, |
+ ui::ET_KEY_PRESSED, |
+ keycode_down_, |
+ Mod4Mask)); |
+ |
+ // Ctrl+Alt+Up -> Ctrl+Alt+Up |
+ EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_UP, |
+ ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, |
+ ui::ET_KEY_PRESSED, |
+ keycode_up_, |
+ Mod1Mask | ControlMask, |
+ KeyPress), |
+ GetRewrittenEventAsString(&rewriter, |
+ ui::VKEY_UP, |
+ ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, |
+ ui::ET_KEY_PRESSED, |
+ keycode_up_, |
+ Mod1Mask | ControlMask)); |
+ |
+ // Search+Left -> Home |
+ EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_HOME, |
+ 0, |
+ ui::ET_KEY_PRESSED, |
+ keycode_home_, |
+ 0U, |
+ KeyPress), |
+ GetRewrittenEventAsString(&rewriter, |
+ ui::VKEY_LEFT, |
+ 0, |
+ ui::ET_KEY_PRESSED, |
+ keycode_left_, |
+ Mod4Mask)); |
+ |
+ // Ctrl+Alt+Down -> Ctrl+Alt+Down |
+ EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_DOWN, |
+ ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, |
+ ui::ET_KEY_PRESSED, |
+ keycode_down_, |
+ Mod1Mask | ControlMask, |
+ KeyPress), |
+ GetRewrittenEventAsString(&rewriter, |
+ ui::VKEY_DOWN, |
+ ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, |
+ ui::ET_KEY_PRESSED, |
+ keycode_down_, |
+ Mod1Mask | ControlMask)); |
+ |
+ // Search+Right -> End |
+ EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_END, |
+ 0, |
+ ui::ET_KEY_PRESSED, |
+ keycode_end_, |
+ 0U, |
+ KeyPress), |
+ GetRewrittenEventAsString(&rewriter, |
+ ui::VKEY_RIGHT, |
+ 0, |
+ ui::ET_KEY_PRESSED, |
+ keycode_right_, |
+ Mod4Mask)); |
+ |
+ // Ctrl+Search+Left -> Control+Home |
+ EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_HOME, |
+ ui::EF_CONTROL_DOWN, |
+ ui::ET_KEY_PRESSED, |
+ keycode_home_, |
+ ControlMask, |
+ KeyPress), |
+ GetRewrittenEventAsString(&rewriter, |
+ ui::VKEY_LEFT, |
+ 0, |
+ ui::ET_KEY_PRESSED, |
+ keycode_left_, |
+ Mod4Mask | ControlMask)); |
+ |
+ // Ctrl+Search+Right -> Control+End |
+ EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_END, |
+ ui::EF_CONTROL_DOWN, |
+ ui::ET_KEY_PRESSED, |
+ keycode_end_, |
+ ControlMask, |
+ KeyPress), |
+ GetRewrittenEventAsString(&rewriter, |
+ ui::VKEY_RIGHT, |
+ 0, |
+ ui::ET_KEY_PRESSED, |
+ keycode_right_, |
+ Mod4Mask | ControlMask)); |
+ |
+ *CommandLine::ForCurrentProcess() = original_cl; |
} |
TEST_F(EventRewriterTest, TestRewriteBackspaceAndArrowKeysWithSearchRemapped) { |