Make deprecation of Alt-based 6pack rewrites more granular

- Decoupling the deprecations of the alt-based 6 pack keys
  from the i18n improvements

Bug: 1221679
Test: unit_tests --gtest_filter=EventRewriterTest.*
Change-Id: I9069877dc0dd7c73aa3d8a025f2bc5ba44b4affe
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2976300
Commit-Queue: Zentaro Kavanagh <[email protected]>
Reviewed-by: James Cook <[email protected]>
Reviewed-by: Scott Violet <[email protected]>
Cr-Commit-Position: refs/heads/master@{#895855}
diff --git a/chrome/browser/chromeos/events/event_rewriter_unittest.cc b/chrome/browser/chromeos/events/event_rewriter_unittest.cc
index 1776fdcd..22b195fd 100644
--- a/chrome/browser/chromeos/events/event_rewriter_unittest.cc
+++ b/chrome/browser/chromeos/events/event_rewriter_unittest.cc
@@ -1672,8 +1672,85 @@
   });
 }
 
+// TODO(crbug.com/1179893): Remove once the feature is enabled permanently.
+// For M92 kImprovedKeyboardShortcuts is enabled but kDeprecateAltBasedSixPack
+// is disabled.
+TEST_F(EventRewriterTest, TestRewriteExtendedKeysAltVariantsM92) {
+  chromeos::Preferences::RegisterProfilePrefs(prefs()->registry());
+  TestNonAppleKeyboardVariants({
+      // Alt+Backspace -> Delete
+      {ui::ET_KEY_PRESSED,
+       {ui::VKEY_BACK, ui::DomCode::BACKSPACE, ui::EF_ALT_DOWN,
+        ui::DomKey::BACKSPACE},
+       {ui::VKEY_DELETE, ui::DomCode::DEL, ui::EF_NONE, ui::DomKey::DEL}},
+      // Control+Alt+Backspace -> Control+Delete
+      {ui::ET_KEY_PRESSED,
+       {ui::VKEY_BACK, ui::DomCode::BACKSPACE,
+        ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, ui::DomKey::BACKSPACE},
+       {ui::VKEY_DELETE, ui::DomCode::DEL, ui::EF_CONTROL_DOWN,
+        ui::DomKey::DEL}},
+      // Search+Alt+Backspace -> Alt+Backspace
+      {ui::ET_KEY_PRESSED,
+       {ui::VKEY_BACK, ui::DomCode::BACKSPACE,
+        ui::EF_COMMAND_DOWN | ui::EF_ALT_DOWN, ui::DomKey::BACKSPACE},
+       {ui::VKEY_BACK, ui::DomCode::BACKSPACE, ui::EF_ALT_DOWN,
+        ui::DomKey::BACKSPACE}},
+      // Search+Control+Alt+Backspace -> Control+Alt+Backspace
+      {ui::ET_KEY_PRESSED,
+       {ui::VKEY_BACK, ui::DomCode::BACKSPACE,
+        ui::EF_COMMAND_DOWN | ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN,
+        ui::DomKey::BACKSPACE},
+       {ui::VKEY_BACK, ui::DomCode::BACKSPACE,
+        ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, ui::DomKey::BACKSPACE}},
+      // Alt+Up -> Prior
+      {ui::ET_KEY_PRESSED,
+       {ui::VKEY_UP, ui::DomCode::ARROW_UP, ui::EF_ALT_DOWN,
+        ui::DomKey::ARROW_UP},
+       {ui::VKEY_PRIOR, ui::DomCode::PAGE_UP, ui::EF_NONE,
+        ui::DomKey::PAGE_UP}},
+      // Alt+Down -> Next
+      {ui::ET_KEY_PRESSED,
+       {ui::VKEY_DOWN, ui::DomCode::ARROW_DOWN, ui::EF_ALT_DOWN,
+        ui::DomKey::ARROW_DOWN},
+       {ui::VKEY_NEXT, ui::DomCode::PAGE_DOWN, ui::EF_NONE,
+        ui::DomKey::PAGE_DOWN}},
+      // Ctrl+Alt+Up -> Home
+      {ui::ET_KEY_PRESSED,
+       {ui::VKEY_UP, ui::DomCode::ARROW_UP,
+        ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, ui::DomKey::ARROW_UP},
+       {ui::VKEY_HOME, ui::DomCode::HOME, ui::EF_NONE, ui::DomKey::HOME}},
+      // Ctrl+Alt+Down -> End
+      {ui::ET_KEY_PRESSED,
+       {ui::VKEY_DOWN, ui::DomCode::ARROW_DOWN,
+        ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, ui::DomKey::ARROW_DOWN},
+       {ui::VKEY_END, ui::DomCode::END, ui::EF_NONE, ui::DomKey::END}},
+
+      // NOTE: The following are workarounds to avoid rewriting the
+      // Alt variants by additionally pressing Search.
+      // Search+Ctrl+Alt+Up -> Ctrl+Alt+Up
+      {ui::ET_KEY_PRESSED,
+       {ui::VKEY_UP, ui::DomCode::ARROW_UP,
+        ui::EF_COMMAND_DOWN | ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN,
+        ui::DomKey::ARROW_UP},
+       {ui::VKEY_UP, ui::DomCode::ARROW_UP,
+        ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, ui::DomKey::ARROW_UP}},
+      // Search+Ctrl+Alt+Down -> Ctrl+Alt+Down
+      {ui::ET_KEY_PRESSED,
+       {ui::VKEY_DOWN, ui::DomCode::ARROW_DOWN,
+        ui::EF_COMMAND_DOWN | ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN,
+        ui::DomKey::ARROW_DOWN},
+       {ui::VKEY_DOWN, ui::DomCode::ARROW_DOWN,
+        ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, ui::DomKey::ARROW_DOWN}},
+  });
+}
+
+// TODO(crbug.com/1179893): Remove once the feature is enabled permanently.
+// This is the intended final state with both kImprovedKeyboardShortcuts and
+// kDeprecateAltBasedSixPack enabled.
 TEST_F(EventRewriterTest, TestRewriteExtendedKeysAltVariants) {
   chromeos::Preferences::RegisterProfilePrefs(prefs()->registry());
+  scoped_feature_list_.InitAndEnableFeature(
+      ::features::kDeprecateAltBasedSixPack);
   // All the previously supported Alt based rewrites no longer have any
   // effect. The Search workarounds no longer take effect and the Search+Key
   // portion is rewritten as expected.