Index: chrome/browser/chromeos/events/event_rewriter_unittest.cc |
diff --git a/chrome/browser/chromeos/events/event_rewriter_unittest.cc b/chrome/browser/chromeos/events/event_rewriter_unittest.cc |
index a4ed9395059cbeea75b83f45ad49fbd3c1664a2f..37eb1299fcc3f401ebd08b466337405b20792469 100644 |
--- a/chrome/browser/chromeos/events/event_rewriter_unittest.cc |
+++ b/chrome/browser/chromeos/events/event_rewriter_unittest.cc |
@@ -605,6 +605,13 @@ TEST_F(EventRewriterTest, TestRewriteModifiersNoRemapMultipleKeys) { |
{ui::VKEY_MENU, ui::DomCode::ALT_LEFT, |
ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, ui::DomKey::ALT}}, |
+ // Press Escape with Alt and Shift. Confirm the event is not rewritten. |
+ {ui::ET_KEY_PRESSED, |
+ {ui::VKEY_ESCAPE, ui::DomCode::ESCAPE, |
+ ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, ui::DomKey::ESCAPE}, |
+ {ui::VKEY_ESCAPE, ui::DomCode::ESCAPE, |
+ ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, ui::DomKey::ESCAPE}}, |
+ |
// Press Search with Caps Lock mask. Confirm the event is not rewritten. |
{ui::ET_KEY_PRESSED, |
{ui::VKEY_LWIN, ui::DomCode::META_LEFT, |
@@ -619,7 +626,18 @@ TEST_F(EventRewriterTest, TestRewriteModifiersNoRemapMultipleKeys) { |
{ui::VKEY_LWIN, ui::DomCode::META_LEFT, ui::EF_CAPS_LOCK_ON, |
ui::DomKey::META}}, |
- // Press Shift+Ctrl+Alt+Search+A. Confirm the event is not rewritten. |
+ // Press Shift+Ctrl+Alt+Search+Escape. Confirm the event is not rewritten. |
+ {ui::ET_KEY_PRESSED, |
+ {ui::VKEY_ESCAPE, ui::DomCode::ESCAPE, |
+ ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | |
+ ui::EF_COMMAND_DOWN, |
+ ui::DomKey::ESCAPE}, |
+ {ui::VKEY_ESCAPE, ui::DomCode::ESCAPE, |
+ ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | |
+ ui::EF_COMMAND_DOWN, |
+ ui::DomKey::ESCAPE}}, |
+ |
+ // Press Shift+Ctrl+Alt+Search+B. Confirm the event is not rewritten. |
{ui::ET_KEY_PRESSED, |
{ui::VKEY_B, ui::DomCode::US_B, |
ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | |
@@ -637,7 +655,7 @@ TEST_F(EventRewriterTest, TestRewriteModifiersNoRemapMultipleKeys) { |
} |
TEST_F(EventRewriterTest, TestRewriteModifiersDisableSome) { |
- // Disable Search and Control keys. |
+ // Disable Search, Control and Escape keys. |
syncable_prefs::TestingPrefServiceSyncable prefs; |
chromeos::Preferences::RegisterProfilePrefs(prefs.registry()); |
IntegerPrefMember search; |
@@ -646,6 +664,9 @@ TEST_F(EventRewriterTest, TestRewriteModifiersDisableSome) { |
IntegerPrefMember control; |
control.Init(prefs::kLanguageRemapControlKeyTo, &prefs); |
control.SetValue(chromeos::input_method::kVoidKey); |
+ IntegerPrefMember escape; |
+ escape.Init(prefs::kLanguageRemapEscapeKeyTo, &prefs); |
+ escape.SetValue(chromeos::input_method::kVoidKey); |
EventRewriter rewriter(NULL); |
rewriter.KeyboardDeviceAddedForTesting(kKeyboardDeviceId, "PC Keyboard"); |
@@ -673,6 +694,12 @@ TEST_F(EventRewriterTest, TestRewriteModifiersDisableSome) { |
{ui::VKEY_UNKNOWN, ui::DomCode::NONE, ui::EF_NONE, |
ui::DomKey::UNIDENTIFIED}}, |
+ // Press Escape. Confirm the event is now VKEY_UNKNOWN. |
+ {ui::ET_KEY_PRESSED, |
+ {ui::VKEY_ESCAPE, ui::DomCode::ESCAPE, ui::EF_NONE, ui::DomKey::ESCAPE}, |
+ {ui::VKEY_UNKNOWN, ui::DomCode::NONE, ui::EF_NONE, |
+ ui::DomKey::UNIDENTIFIED}}, |
+ |
// Press Control+Search. Confirm the event is now VKEY_UNKNOWN |
// without any modifiers. |
{ui::ET_KEY_PRESSED, |
@@ -808,7 +835,7 @@ TEST_F(EventRewriterTest, TestRewriteModifiersRemapToControl) { |
} |
TEST_F(EventRewriterTest, TestRewriteModifiersRemapToEscape) { |
- // Remap Search to ESC. |
+ // Remap Search to Escape. |
syncable_prefs::TestingPrefServiceSyncable prefs; |
chromeos::Preferences::RegisterProfilePrefs(prefs.registry()); |
IntegerPrefMember search; |
@@ -833,27 +860,30 @@ TEST_F(EventRewriterTest, TestRewriteModifiersRemapToEscape) { |
} |
TEST_F(EventRewriterTest, TestRewriteModifiersRemapMany) { |
- // Remap Search to Alt. |
+ // Remap Escape to Alt. |
syncable_prefs::TestingPrefServiceSyncable prefs; |
chromeos::Preferences::RegisterProfilePrefs(prefs.registry()); |
- IntegerPrefMember search; |
- search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs); |
- search.SetValue(chromeos::input_method::kAltKey); |
+ IntegerPrefMember escape; |
+ escape.Init(prefs::kLanguageRemapEscapeKeyTo, &prefs); |
+ escape.SetValue(chromeos::input_method::kAltKey); |
EventRewriter rewriter(NULL); |
rewriter.KeyboardDeviceAddedForTesting(kKeyboardDeviceId, "PC Keyboard"); |
rewriter.set_pref_service_for_testing(&prefs); |
- KeyTestCase s2a_tests[] = { |
- // Press Search. Confirm the event is now VKEY_MENU. |
+ KeyTestCase e2a_tests[] = { |
+ // Press Escape. Confirm the event is now VKEY_MENU. |
{ui::ET_KEY_PRESSED, |
- {ui::VKEY_LWIN, ui::DomCode::META_LEFT, ui::EF_COMMAND_DOWN, |
- ui::DomKey::META}, |
+ {ui::VKEY_ESCAPE, ui::DomCode::ESCAPE, ui::EF_NONE, ui::DomKey::ESCAPE}, |
{ui::VKEY_MENU, ui::DomCode::ALT_LEFT, ui::EF_ALT_DOWN, |
ui::DomKey::ALT}}, |
+ // Release Escape to clear flags. |
+ {ui::ET_KEY_RELEASED, |
+ {ui::VKEY_ESCAPE, ui::DomCode::ESCAPE, ui::EF_NONE, ui::DomKey::ESCAPE}, |
+ {ui::VKEY_MENU, ui::DomCode::ALT_LEFT, ui::EF_NONE, ui::DomKey::ALT}}, |
}; |
- for (const auto& test : s2a_tests) { |
+ for (const auto& test : e2a_tests) { |
CheckKeyTestCase(&rewriter, test); |
} |
@@ -901,31 +931,28 @@ TEST_F(EventRewriterTest, TestRewriteModifiersRemapMany) { |
{ui::VKEY_LWIN, ui::DomCode::META_LEFT, ui::EF_COMMAND_DOWN, |
ui::DomKey::META}}, |
- // Then, press all of the three, Control+Alt+Search. |
+ // Then, press all of the three, Control+Alt+Escape. |
{ui::ET_KEY_PRESSED, |
- {ui::VKEY_LWIN, ui::DomCode::META_LEFT, |
- ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN, |
- ui::DomKey::META}, |
+ {ui::VKEY_ESCAPE, ui::DomCode::ESCAPE, |
+ ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN, ui::DomKey::CONTROL}, |
{ui::VKEY_MENU, ui::DomCode::ALT_LEFT, |
ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN, |
ui::DomKey::ALT}}, |
- // Press Shift+Control+Alt+Search. |
+ // Press Shift+Control+Alt+Escape. |
{ui::ET_KEY_PRESSED, |
- {ui::VKEY_LWIN, ui::DomCode::META_LEFT, |
- ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | |
- ui::EF_COMMAND_DOWN, |
- ui::DomKey::META}, |
+ {ui::VKEY_ESCAPE, ui::DomCode::ESCAPE, |
+ ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN, |
+ ui::DomKey::ESCAPE}, |
{ui::VKEY_MENU, ui::DomCode::ALT_LEFT, |
ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | |
ui::EF_COMMAND_DOWN, |
ui::DomKey::ALT}}, |
- // Press Shift+Control+Alt+Search+B |
+ // Press Shift+Control+Alt+B |
{ui::ET_KEY_PRESSED, |
{ui::VKEY_B, ui::DomCode::US_B, |
- ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | |
- ui::EF_COMMAND_DOWN, |
+ ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN, |
ui::DomKey::Constant<'B'>::Character}, |
{ui::VKEY_B, ui::DomCode::US_B, |
ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | |
@@ -936,6 +963,51 @@ TEST_F(EventRewriterTest, TestRewriteModifiersRemapMany) { |
for (const auto& test : c2s_tests) { |
CheckKeyTestCase(&rewriter, test); |
} |
+ |
+ // Remap Search to Backspace. |
+ IntegerPrefMember search; |
+ search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs); |
+ search.SetValue(chromeos::input_method::kBackspaceKey); |
+ |
+ KeyTestCase s2b_tests[] = { |
+ // Release Control and Escape, as Search and Alt would transform Backspace |
+ // to Delete. |
+ {ui::ET_KEY_RELEASED, |
+ {ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, ui::EF_NONE, |
+ ui::DomKey::CONTROL}, |
+ {ui::VKEY_LWIN, ui::DomCode::META_LEFT, ui::EF_ALT_DOWN, |
+ ui::DomKey::META}}, |
+ {ui::ET_KEY_RELEASED, |
+ {ui::VKEY_ESCAPE, ui::DomCode::ESCAPE, ui::EF_NONE, ui::DomKey::ESCAPE}, |
+ {ui::VKEY_MENU, ui::DomCode::ALT_LEFT, ui::EF_NONE, ui::DomKey::ALT}}, |
+ // Press Search. Confirm the event is now VKEY_BACK. |
+ {ui::ET_KEY_PRESSED, |
+ {ui::VKEY_LWIN, ui::DomCode::META_LEFT, ui::EF_COMMAND_DOWN, |
+ ui::DomKey::META}, |
+ {ui::VKEY_BACK, ui::DomCode::BACKSPACE, ui::EF_NONE, |
+ ui::DomKey::BACKSPACE}}, |
+ }; |
+ |
+ for (const auto& test : s2b_tests) { |
+ CheckKeyTestCase(&rewriter, test); |
+ } |
+ |
+ // Remap Backspace to Escape. |
+ IntegerPrefMember backspace; |
+ backspace.Init(prefs::kLanguageRemapBackspaceKeyTo, &prefs); |
+ backspace.SetValue(chromeos::input_method::kEscapeKey); |
+ |
+ KeyTestCase b2e_tests[] = { |
+ // Press Backspace. Confirm the event is now VKEY_ESCAPE. |
+ {ui::ET_KEY_PRESSED, |
+ {ui::VKEY_BACK, ui::DomCode::BACKSPACE, ui::EF_NONE, |
+ ui::DomKey::BACKSPACE}, |
+ {ui::VKEY_ESCAPE, ui::DomCode::ESCAPE, ui::EF_NONE, ui::DomKey::ESCAPE}}, |
+ }; |
+ |
+ for (const auto& test : b2e_tests) { |
+ CheckKeyTestCase(&rewriter, test); |
+ } |
} |
TEST_F(EventRewriterTest, TestRewriteModifiersRemapToCapsLock) { |