Index: chrome/android/java_staging/src/org/chromium/chrome/browser/KeyboardShortcuts.java |
diff --git a/chrome/android/java_staging/src/org/chromium/chrome/browser/KeyboardShortcuts.java b/chrome/android/java_staging/src/org/chromium/chrome/browser/KeyboardShortcuts.java |
deleted file mode 100644 |
index 414fb2509621b3cfd669daa23f07f86a9c3bb480..0000000000000000000000000000000000000000 |
--- a/chrome/android/java_staging/src/org/chromium/chrome/browser/KeyboardShortcuts.java |
+++ /dev/null |
@@ -1,238 +0,0 @@ |
-// Copyright 2015 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-package org.chromium.chrome.browser; |
- |
-import android.view.KeyEvent; |
- |
-import org.chromium.base.annotations.SuppressFBWarnings; |
-import org.chromium.chrome.R; |
-import org.chromium.chrome.browser.tabmodel.TabCreatorManager.TabCreator; |
-import org.chromium.chrome.browser.tabmodel.TabModel; |
-import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType; |
-import org.chromium.chrome.browser.tabmodel.TabModelUtils; |
-import org.chromium.content.browser.ContentViewCore; |
-import org.chromium.content_public.browser.LoadUrlParams; |
-import org.chromium.ui.base.PageTransition; |
- |
-/** |
- * Implements app-level keyboard shortcuts for ChromeTabbedActivity and DocumentActivity. |
- */ |
-public class KeyboardShortcuts { |
- |
- private static final int CTRL = 1 << 31; |
- private static final int ALT = 1 << 30; |
- private static final int SHIFT = 1 << 29; |
- |
- private KeyboardShortcuts() {} |
- |
- private static int getMetaState(KeyEvent event) { |
- return (event.isCtrlPressed() ? CTRL : 0) |
- | (event.isAltPressed() ? ALT : 0) |
- | (event.isShiftPressed() ? SHIFT : 0); |
- } |
- |
- /** |
- * This should be called from the Activity's dispatchKeyEvent() to handle keyboard shortcuts. |
- * |
- * Note: dispatchKeyEvent() is called before the active view or web page gets a chance to handle |
- * the key event. So the keys handled here cannot be overridden by any view or web page. |
- * |
- * @param event The KeyEvent to handle. |
- * @param activity The ChromeActivity in which the key was pressed. |
- * @param uiInitialized Whether the UI has been initialized. If this is false, most keys will |
- * not be handled. |
- * @return True if the event was handled. False if the event was ignored. Null if the event |
- * should be handled by the activity's parent class. |
- */ |
- @SuppressFBWarnings("NP_BOOLEAN_RETURN_NULL") |
- public static Boolean dispatchKeyEvent(KeyEvent event, ChromeActivity activity, |
- boolean uiInitialized) { |
- int keyCode = event.getKeyCode(); |
- if (!uiInitialized) { |
- if (keyCode == KeyEvent.KEYCODE_SEARCH || keyCode == KeyEvent.KEYCODE_MENU) return true; |
- return null; |
- } |
- |
- switch (keyCode) { |
- case KeyEvent.KEYCODE_SEARCH: |
- if (event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount() == 0) { |
- activity.onMenuOrKeyboardAction(R.id.focus_url_bar, false); |
- } |
- // Always consume the SEARCH key events to prevent android from showing |
- // the default app search UI, which locks up Chrome. |
- return true; |
- case KeyEvent.KEYCODE_MENU: |
- if (event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount() == 0) { |
- activity.onMenuOrKeyboardAction(R.id.show_menu, false); |
- } |
- return true; |
- case KeyEvent.KEYCODE_TV: |
- case KeyEvent.KEYCODE_GUIDE: |
- case KeyEvent.KEYCODE_DVR: |
- case KeyEvent.KEYCODE_AVR_INPUT: |
- case KeyEvent.KEYCODE_AVR_POWER: |
- case KeyEvent.KEYCODE_STB_INPUT: |
- case KeyEvent.KEYCODE_STB_POWER: |
- case KeyEvent.KEYCODE_TV_INPUT: |
- case KeyEvent.KEYCODE_TV_POWER: |
- case KeyEvent.KEYCODE_WINDOW: |
- // Do not consume the AV device-related keys so that the system will take |
- // an appropriate action, such as switching to TV mode. |
- return false; |
- } |
- |
- return null; |
- } |
- |
- /** |
- * This should be called from the Activity's onKeyDown() to handle keyboard shortcuts. |
- * |
- * Note: onKeyDown() is called after the active view or web page has had a chance to handle |
- * the key event. So the keys handled here *can* be overridden by any view or web page. |
- * |
- * @param event The KeyEvent to handle. |
- * @param activity The ChromeActivity in which the key was pressed. |
- * @param isCurrentTabVisible Whether page-related actions are valid, e.g. reload, zoom in. |
- * This should be false when in the tab switcher. |
- * @param tabSwitchingEnabled Whether shortcuts that switch between tabs are enabled (e.g. |
- * Ctrl+Tab, Ctrl+3). |
- * @return Whether the key event was handled. |
- */ |
- public static boolean onKeyDown(KeyEvent event, ChromeActivity activity, |
- boolean isCurrentTabVisible, boolean tabSwitchingEnabled) { |
- int keyCode = event.getKeyCode(); |
- if (event.getRepeatCount() != 0 || KeyEvent.isModifierKey(keyCode)) return false; |
- if (!event.isCtrlPressed() && !event.isAltPressed() |
- && keyCode != KeyEvent.KEYCODE_F3 |
- && keyCode != KeyEvent.KEYCODE_F5) { |
- return false; |
- } |
- |
- TabModel curModel = activity.getCurrentTabModel(); |
- int count = curModel.getCount(); |
- |
- int metaState = getMetaState(event); |
- int keyCodeAndMeta = keyCode | metaState; |
- |
- switch (keyCodeAndMeta) { |
- case CTRL | KeyEvent.KEYCODE_T: |
- activity.onMenuOrKeyboardAction(curModel.isIncognito() |
- ? R.id.new_incognito_tab_menu_id |
- : R.id.new_tab_menu_id, false); |
- return true; |
- case CTRL | KeyEvent.KEYCODE_N: |
- activity.onMenuOrKeyboardAction(R.id.new_tab_menu_id, false); |
- return true; |
- case CTRL | SHIFT | KeyEvent.KEYCODE_N: |
- activity.onMenuOrKeyboardAction(R.id.new_incognito_tab_menu_id, false); |
- return true; |
- case CTRL | SHIFT | KeyEvent.KEYCODE_B: |
- case CTRL | KeyEvent.KEYCODE_H: |
- String url = keyCode == KeyEvent.KEYCODE_B |
- ? UrlConstants.BOOKMARKS_URL |
- : UrlConstants.HISTORY_URL; |
- Tab currentTab = TabModelUtils.getCurrentTab(curModel); |
- if (currentTab != null && isCurrentTabVisible) { |
- currentTab.loadUrl(new LoadUrlParams(url, PageTransition.AUTO_BOOKMARK)); |
- } else { |
- TabCreator tabCreator = activity.getCurrentTabCreator(); |
- if (tabCreator != null) { |
- tabCreator.launchUrl(url, TabLaunchType.FROM_KEYBOARD); |
- } |
- } |
- return true; |
- case ALT | KeyEvent.KEYCODE_F: |
- activity.onMenuOrKeyboardAction(R.id.show_menu, false); |
- return true; |
- } |
- |
- if (isCurrentTabVisible) { |
- if (tabSwitchingEnabled && (metaState == CTRL || metaState == ALT)) { |
- int numCode = keyCode - KeyEvent.KEYCODE_0; |
- if (numCode > 0 && numCode <= Math.min(count, 8)) { |
- // Ctrl+1 to Ctrl+8: select tab by index |
- TabModelUtils.setIndex(curModel, numCode - 1); |
- return true; |
- } else if (numCode == 9 && count != 0) { |
- // Ctrl+9: select last tab |
- TabModelUtils.setIndex(curModel, count - 1); |
- return true; |
- } |
- } |
- |
- switch (keyCodeAndMeta) { |
- case CTRL | KeyEvent.KEYCODE_TAB: |
- case CTRL | KeyEvent.KEYCODE_PAGE_DOWN: |
- if (tabSwitchingEnabled && count > 1) { |
- TabModelUtils.setIndex(curModel, (curModel.index() + 1) % count); |
- } |
- return true; |
- case CTRL | SHIFT | KeyEvent.KEYCODE_TAB: |
- case CTRL | KeyEvent.KEYCODE_PAGE_UP: |
- if (tabSwitchingEnabled && count > 1) { |
- TabModelUtils.setIndex(curModel, (curModel.index() + count - 1) % count); |
- } |
- return true; |
- case CTRL | KeyEvent.KEYCODE_W: |
- case CTRL | KeyEvent.KEYCODE_F4: |
- TabModelUtils.closeCurrentTab(curModel); |
- return true; |
- case CTRL | KeyEvent.KEYCODE_F: |
- case CTRL | KeyEvent.KEYCODE_G: |
- case CTRL | SHIFT | KeyEvent.KEYCODE_G: |
- case KeyEvent.KEYCODE_F3: |
- case SHIFT | KeyEvent.KEYCODE_F3: |
- activity.onMenuOrKeyboardAction(R.id.find_in_page_id, false); |
- return true; |
- case CTRL | KeyEvent.KEYCODE_L: |
- case ALT | KeyEvent.KEYCODE_D: |
- activity.onMenuOrKeyboardAction(R.id.focus_url_bar, false); |
- return true; |
- case KeyEvent.KEYCODE_BOOKMARK: |
- case CTRL | KeyEvent.KEYCODE_D: |
- activity.onMenuOrKeyboardAction(R.id.bookmark_this_page_id, false); |
- return true; |
- case CTRL | KeyEvent.KEYCODE_P: |
- activity.onMenuOrKeyboardAction(R.id.print_id, false); |
- return true; |
- case CTRL | KeyEvent.KEYCODE_PLUS: |
- case CTRL | KeyEvent.KEYCODE_EQUALS: |
- case CTRL | SHIFT | KeyEvent.KEYCODE_PLUS: |
- case CTRL | SHIFT | KeyEvent.KEYCODE_EQUALS: |
- case KeyEvent.KEYCODE_ZOOM_IN: |
- ContentViewCore cvc = activity.getCurrentContentViewCore(); |
- if (cvc != null) cvc.zoomIn(); |
- return true; |
- case CTRL | KeyEvent.KEYCODE_MINUS: |
- case KeyEvent.KEYCODE_ZOOM_OUT: |
- cvc = activity.getCurrentContentViewCore(); |
- if (cvc != null) cvc.zoomOut(); |
- return true; |
- case CTRL | KeyEvent.KEYCODE_0: |
- cvc = activity.getCurrentContentViewCore(); |
- if (cvc != null) cvc.zoomReset(); |
- return true; |
- case CTRL | KeyEvent.KEYCODE_R: |
- case KeyEvent.KEYCODE_F5: |
- Tab tab = activity.getActivityTab(); |
- if (tab != null) tab.reload(); |
- return true; |
- case ALT | KeyEvent.KEYCODE_DPAD_LEFT: |
- tab = activity.getActivityTab(); |
- if (tab != null && tab.canGoBack()) tab.goBack(); |
- return true; |
- case ALT | KeyEvent.KEYCODE_DPAD_RIGHT: |
- tab = activity.getActivityTab(); |
- if (tab != null && tab.canGoForward()) tab.goForward(); |
- return true; |
- case CTRL | SHIFT | KeyEvent.KEYCODE_SLASH: // i.e. Ctrl+? |
- activity.onMenuOrKeyboardAction(R.id.help_id, false); |
- return true; |
- } |
- } |
- |
- return false; |
- } |
-} |