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

Unified Diff: ash/common/accelerators/accelerator_table_unittest.cc

Issue 2802583002: Add test to check search key based accelerators. (Closed)
Patch Set: Created 3 years, 8 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/common/accelerators/accelerator_table_unittest.cc
diff --git a/ash/common/accelerators/accelerator_table_unittest.cc b/ash/common/accelerators/accelerator_table_unittest.cc
index e469625545a0282e11a622e8ac2eff0d9b5d65da..ddd00f4adf04f1e1fef2b1ec699b8db8d646ea27 100644
--- a/ash/common/accelerators/accelerator_table_unittest.cc
+++ b/ash/common/accelerators/accelerator_table_unittest.cc
@@ -23,6 +23,168 @@ struct Cmp {
}
};
+const int kDebugModifier =
+ ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | ui::EF_SHIFT_DOWN;
+
+const AcceleratorData kAcceleratorDataAchived20170405[] = {
afakhry 2017/04/05 16:01:32 We can keep this snapshot of only the non-Search-b
afakhry 2017/04/05 16:01:32 Please add a comment explaining what this snapshot
wutao 2017/04/05 16:49:32 Done.
wutao 2017/04/05 16:49:32 Done.
+ {true, ui::VKEY_SPACE, ui::EF_CONTROL_DOWN, PREVIOUS_IME},
+ {false, ui::VKEY_SPACE, ui::EF_CONTROL_DOWN, PREVIOUS_IME},
+ // Shortcuts for Japanese IME.
afakhry 2017/04/05 16:01:32 You don't need to include these comments here. Ple
wutao 2017/04/05 16:49:32 Done.
+ {true, ui::VKEY_CONVERT, ui::EF_NONE, SWITCH_IME},
+ {true, ui::VKEY_NONCONVERT, ui::EF_NONE, SWITCH_IME},
+ {true, ui::VKEY_DBE_SBCSCHAR, ui::EF_NONE, SWITCH_IME},
+ {true, ui::VKEY_DBE_DBCSCHAR, ui::EF_NONE, SWITCH_IME},
+ // Shortcut for Koren IME.
+ {true, ui::VKEY_HANGUL, ui::EF_NONE, SWITCH_IME},
+
+ {true, ui::VKEY_TAB, ui::EF_ALT_DOWN, CYCLE_FORWARD_MRU},
+ {true, ui::VKEY_TAB, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN,
+ CYCLE_BACKWARD_MRU},
+ {true, ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_NONE, TOGGLE_OVERVIEW},
+ {true, ui::VKEY_BROWSER_SEARCH, ui::EF_NONE, TOGGLE_APP_LIST},
+ {true, ui::VKEY_WLAN, ui::EF_NONE, TOGGLE_WIFI},
+ {true, ui::VKEY_KBD_BRIGHTNESS_DOWN, ui::EF_NONE, KEYBOARD_BRIGHTNESS_DOWN},
+ {true, ui::VKEY_KBD_BRIGHTNESS_UP, ui::EF_NONE, KEYBOARD_BRIGHTNESS_UP},
+ // Maximize button.
+ {true, ui::VKEY_MEDIA_LAUNCH_APP2, ui::EF_CONTROL_DOWN, TOGGLE_MIRROR_MODE},
+ {true, ui::VKEY_MEDIA_LAUNCH_APP2, ui::EF_ALT_DOWN, SWAP_PRIMARY_DISPLAY},
+ // Cycle windows button.
+ {true, ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_CONTROL_DOWN, TAKE_SCREENSHOT},
+ {true, ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN,
+ TAKE_PARTIAL_SCREENSHOT},
+ {true, ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN,
+ TAKE_WINDOW_SCREENSHOT},
+ {true, ui::VKEY_BRIGHTNESS_DOWN, ui::EF_NONE, BRIGHTNESS_DOWN},
+ {true, ui::VKEY_BRIGHTNESS_DOWN, ui::EF_ALT_DOWN, KEYBOARD_BRIGHTNESS_DOWN},
+ {true, ui::VKEY_BRIGHTNESS_UP, ui::EF_NONE, BRIGHTNESS_UP},
+ {true, ui::VKEY_BRIGHTNESS_UP, ui::EF_ALT_DOWN, KEYBOARD_BRIGHTNESS_UP},
+ {true, ui::VKEY_BRIGHTNESS_DOWN, ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN,
+ MAGNIFY_SCREEN_ZOOM_OUT},
+ {true, ui::VKEY_BRIGHTNESS_UP, ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN,
+ MAGNIFY_SCREEN_ZOOM_IN},
+ {true, ui::VKEY_L, ui::EF_COMMAND_DOWN, LOCK_SCREEN},
+ {true, ui::VKEY_L, ui::EF_COMMAND_DOWN | ui::EF_SHIFT_DOWN, SUSPEND},
+ // The lock key on Chrome OS keyboards produces F13 scancodes.
+ {true, ui::VKEY_F13, ui::EF_NONE, LOCK_PRESSED},
+ {false, ui::VKEY_F13, ui::EF_NONE, LOCK_RELEASED},
+ // Generic keyboards can use VKEY_SLEEP to mimic ChromeOS keyboard's lock
+ // key.
+ {true, ui::VKEY_SLEEP, ui::EF_NONE, LOCK_PRESSED},
+ {false, ui::VKEY_SLEEP, ui::EF_NONE, LOCK_RELEASED},
+ {true, ui::VKEY_POWER, ui::EF_NONE, POWER_PRESSED},
+ {false, ui::VKEY_POWER, ui::EF_NONE, POWER_RELEASED},
+ {true, ui::VKEY_M, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, OPEN_FILE_MANAGER},
+ {true, ui::VKEY_OEM_2, ui::EF_CONTROL_DOWN, OPEN_GET_HELP},
+ {true, ui::VKEY_OEM_2, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN,
+ OPEN_GET_HELP},
+ {true, ui::VKEY_T, ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN, OPEN_CROSH},
+ {true, ui::VKEY_I, ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN,
+ TOUCH_HUD_MODE_CHANGE},
+ {true, ui::VKEY_I,
+ ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | ui::EF_SHIFT_DOWN,
+ TOUCH_HUD_CLEAR},
+ {true, ui::VKEY_P, ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN,
+ TOUCH_HUD_PROJECTION_TOGGLE},
+ {true, ui::VKEY_H, ui::EF_COMMAND_DOWN | ui::EF_SHIFT_DOWN,
+ TOGGLE_HIGH_CONTRAST},
+ {true, ui::VKEY_Z, ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN,
+ TOGGLE_SPOKEN_FEEDBACK},
+ {true, ui::VKEY_OEM_COMMA, ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN,
+ SWITCH_TO_PREVIOUS_USER},
+ {true, ui::VKEY_OEM_PERIOD, ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN,
+ SWITCH_TO_NEXT_USER},
+ // Single shift release turns off caps lock.
+ {false, ui::VKEY_LSHIFT, ui::EF_NONE, DISABLE_CAPS_LOCK},
+ {false, ui::VKEY_SHIFT, ui::EF_NONE, DISABLE_CAPS_LOCK},
+ {false, ui::VKEY_RSHIFT, ui::EF_NONE, DISABLE_CAPS_LOCK},
+ // Accelerators to toggle Caps Lock.
+ // The following is triggered when Search is released while Alt is still
+ // down. The key_code here is LWIN (for search) and Alt is a modifier.
+ {false, ui::VKEY_LWIN, ui::EF_ALT_DOWN, TOGGLE_CAPS_LOCK},
+ // The following is triggered when Alt is released while search is still
+ // down. The key_code here is MENU (for Alt) and Search is a modifier
+ // (EF_COMMAND_DOWN is used for Search as a modifier).
+ {false, ui::VKEY_MENU, ui::EF_COMMAND_DOWN, TOGGLE_CAPS_LOCK},
+ {true, ui::VKEY_VOLUME_MUTE, ui::EF_NONE, VOLUME_MUTE},
+ {true, ui::VKEY_VOLUME_DOWN, ui::EF_NONE, VOLUME_DOWN},
+ {true, ui::VKEY_VOLUME_UP, ui::EF_NONE, VOLUME_UP},
+ {true, ui::VKEY_ESCAPE, ui::EF_COMMAND_DOWN, SHOW_TASK_MANAGER},
+ {true, ui::VKEY_SPACE, ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN, NEXT_IME},
+ {true, ui::VKEY_I, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, OPEN_FEEDBACK_PAGE},
+ {true, ui::VKEY_Q, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, EXIT},
+ {true, ui::VKEY_N, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN,
+ NEW_INCOGNITO_WINDOW},
+ {true, ui::VKEY_N, ui::EF_CONTROL_DOWN, NEW_WINDOW},
+ {true, ui::VKEY_T, ui::EF_CONTROL_DOWN, NEW_TAB},
+ {true, ui::VKEY_OEM_MINUS, ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN,
+ SCALE_UI_UP},
+ {true, ui::VKEY_OEM_PLUS, ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN,
+ SCALE_UI_DOWN},
+ {true, ui::VKEY_0, ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN, SCALE_UI_RESET},
+ {true, ui::VKEY_BROWSER_REFRESH, ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN,
+ ROTATE_SCREEN},
+ {true, ui::VKEY_BROWSER_REFRESH,
+ ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN, ROTATE_WINDOW},
+ {true, ui::VKEY_T, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, RESTORE_TAB},
+ {true, ui::VKEY_PRINT, ui::EF_NONE, TAKE_SCREENSHOT},
+ // On Chrome OS, Search key is mapped to LWIN. The Search key binding should
+ // act on release instead of press when using Search as a modifier key for
+ // extended keyboard shortcuts.
+ {false, ui::VKEY_LWIN, ui::EF_NONE, TOGGLE_APP_LIST},
+ {true, ui::VKEY_MEDIA_LAUNCH_APP2, ui::EF_NONE, TOGGLE_FULLSCREEN},
+ {true, ui::VKEY_MEDIA_LAUNCH_APP2, ui::EF_SHIFT_DOWN, TOGGLE_FULLSCREEN},
+ {true, ui::VKEY_ESCAPE, ui::EF_SHIFT_DOWN | ui::EF_COMMAND_DOWN, UNPIN},
+ {true, ui::VKEY_L, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, FOCUS_SHELF},
+ {true, ui::VKEY_HELP, ui::EF_NONE, SHOW_KEYBOARD_OVERLAY},
+ {true, ui::VKEY_OEM_2, ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN,
+ SHOW_KEYBOARD_OVERLAY},
+ {true, ui::VKEY_OEM_2,
+ ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN,
+ SHOW_KEYBOARD_OVERLAY},
+ {true, ui::VKEY_F14, ui::EF_NONE, SHOW_KEYBOARD_OVERLAY},
+ {true, ui::VKEY_N, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN,
+ SHOW_MESSAGE_CENTER_BUBBLE},
+ {true, ui::VKEY_P, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, SHOW_STYLUS_TOOLS},
+ {true, ui::VKEY_S, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN,
+ SHOW_SYSTEM_TRAY_BUBBLE},
+ {true, ui::VKEY_K, ui::EF_SHIFT_DOWN | ui::EF_COMMAND_DOWN,
+ SHOW_IME_MENU_BUBBLE},
+ {true, ui::VKEY_1, ui::EF_ALT_DOWN, LAUNCH_APP_0},
+ {true, ui::VKEY_2, ui::EF_ALT_DOWN, LAUNCH_APP_1},
+ {true, ui::VKEY_3, ui::EF_ALT_DOWN, LAUNCH_APP_2},
+ {true, ui::VKEY_4, ui::EF_ALT_DOWN, LAUNCH_APP_3},
+ {true, ui::VKEY_5, ui::EF_ALT_DOWN, LAUNCH_APP_4},
+ {true, ui::VKEY_6, ui::EF_ALT_DOWN, LAUNCH_APP_5},
+ {true, ui::VKEY_7, ui::EF_ALT_DOWN, LAUNCH_APP_6},
+ {true, ui::VKEY_8, ui::EF_ALT_DOWN, LAUNCH_APP_7},
+ {true, ui::VKEY_9, ui::EF_ALT_DOWN, LAUNCH_LAST_APP},
+
+ // Window management shortcuts.
+ {true, ui::VKEY_OEM_4, ui::EF_ALT_DOWN, WINDOW_CYCLE_SNAP_LEFT},
+ {true, ui::VKEY_OEM_6, ui::EF_ALT_DOWN, WINDOW_CYCLE_SNAP_RIGHT},
+ {true, ui::VKEY_OEM_MINUS, ui::EF_ALT_DOWN, WINDOW_MINIMIZE},
+ {true, ui::VKEY_OEM_PLUS, ui::EF_ALT_DOWN, TOGGLE_MAXIMIZED},
+ {true, ui::VKEY_OEM_PLUS, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN,
+ WINDOW_POSITION_CENTER},
+ {true, ui::VKEY_BROWSER_FORWARD, ui::EF_CONTROL_DOWN, FOCUS_NEXT_PANE},
+ {true, ui::VKEY_BROWSER_BACK, ui::EF_CONTROL_DOWN, FOCUS_PREVIOUS_PANE},
+
+ // Media Player shortcuts.
+ {true, ui::VKEY_MEDIA_NEXT_TRACK, ui::EF_NONE, MEDIA_NEXT_TRACK},
+ {true, ui::VKEY_MEDIA_PLAY_PAUSE, ui::EF_NONE, MEDIA_PLAY_PAUSE},
+ {true, ui::VKEY_MEDIA_PREV_TRACK, ui::EF_NONE, MEDIA_PREV_TRACK},
+
+ // Debugging shortcuts that need to be available to end-users in
+ // release builds.
+ {true, ui::VKEY_U, kDebugModifier, PRINT_UI_HIERARCHIES},
+
+ // TODO(yusukes): Handle VKEY_MEDIA_STOP, and
+ // VKEY_MEDIA_LAUNCH_MAIL.
+};
+
+const size_t kAchivedAcceleratorDataLength =
+ arraysize(kAcceleratorDataAchived20170405);
+
} // namespace
TEST(AcceleratorTableTest, CheckDuplicatedAccelerators) {
@@ -101,4 +263,22 @@ TEST(AcceleratorTableTest, CheckDeprecatedAccelerators) {
}
}
+TEST(AcceleratorTableTest, CheckSearchKeyBasedAccelerators) {
+ std::set<AcceleratorData, Cmp> achived_accelerators;
+ for (size_t i = 0; i < kAchivedAcceleratorDataLength; ++i)
+ achived_accelerators.insert(kAcceleratorDataAchived20170405[i]);
+
+ for (size_t i = 0; i < kAcceleratorDataLength; ++i) {
+ const AcceleratorData& entry = kAcceleratorData[i];
+ if (achived_accelerators.find(entry) != achived_accelerators.end())
+ continue;
+ EXPECT_TRUE(entry.modifiers & ui::EF_COMMAND_DOWN)
+ << "Non-command key based accelerator: " << entry.trigger_on_press
afakhry 2017/04/05 16:01:32 Use Search instead of command. Search-based accele
wutao 2017/04/05 16:49:32 Done.
+ << ", " << entry.keycode << ", "
+ << (entry.modifiers & ui::EF_SHIFT_DOWN) << ", "
+ << (entry.modifiers & ui::EF_CONTROL_DOWN) << ", "
+ << (entry.modifiers & ui::EF_ALT_DOWN);
+ }
+}
+
} // namespace ash
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698