diff options
author | ianwen <ianwen@chromium.org> | 2015-09-25 17:07:43 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-09-26 00:08:32 +0000 |
commit | 730fcbedc16dbea063e664d04f64736189d6fc7b (patch) | |
tree | 69e9f0b56e14b06371d45881f296b19185230379 | |
parent | 7dbbad9cd27b8661ae4c854347144aa2de1c06b5 (diff) | |
download | chromium_src-730fcbedc16dbea063e664d04f64736189d6fc7b.zip chromium_src-730fcbedc16dbea063e664d04f64736189d6fc7b.tar.gz chromium_src-730fcbedc16dbea063e664d04f64736189d6fc7b.tar.bz2 |
Create a new custom class that handles keyboard shortcuts for Custom Tab
This CL opens some methods inside of KeyboardShortcuts for reusability.
Also a new class, CustoMTabKeyboardShortcuts is created to handle the
small subset of shortcuts that custom tab supports.
BUG=527196
Review URL: https://codereview.chromium.org/1365453004
Cr-Commit-Position: refs/heads/master@{#350955}
-rw-r--r-- | chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java | 25 | ||||
-rw-r--r-- | chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java | 20 |
2 files changed, 22 insertions, 23 deletions
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java b/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java index 8111d13..c853efe 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java @@ -9,13 +9,9 @@ import android.view.KeyEvent; import org.chromium.base.annotations.SuppressFBWarnings; import org.chromium.chrome.R; import org.chromium.chrome.browser.tab.Tab; -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. @@ -137,21 +133,6 @@ public class KeyboardShortcuts { 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: case KeyEvent.KEYCODE_BUTTON_Y: activity.onMenuOrKeyboardAction(R.id.show_menu, false); @@ -204,10 +185,16 @@ public class KeyboardShortcuts { case KeyEvent.KEYCODE_BUTTON_X: activity.onMenuOrKeyboardAction(R.id.focus_url_bar, false); return true; + case CTRL | SHIFT | KeyEvent.KEYCODE_B: + activity.onMenuOrKeyboardAction(R.id.all_bookmarks_menu_id, 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_H: + activity.onMenuOrKeyboardAction(R.id.open_history_menu_id, false); + return true; case CTRL | KeyEvent.KEYCODE_P: activity.onMenuOrKeyboardAction(R.id.print_id, false); return true; diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java index 6da2a80..f3d7958 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java @@ -393,8 +393,23 @@ public class CustomTabActivity extends ChromeActivity { } @Override + public boolean onKeyDown(int keyCode, KeyEvent event) { + if (!getToolbarManager().isInitialized()) { + return super.onKeyDown(keyCode, event); + } + return KeyboardShortcuts.onKeyDown(event, this, true, false) + || super.onKeyDown(keyCode, event); + } + + @Override public boolean onMenuOrKeyboardAction(int id, boolean fromMenu) { - if (id == R.id.open_in_chrome_id) { + // Disable creating new tabs, bookmark, history, print, help, focus_url, etc. + if (id == R.id.focus_url_bar || id == R.id.all_bookmarks_menu_id + || id == R.id.bookmark_this_page_id || id == R.id.print_id || id == R.id.help_id + || id == R.id.recent_tabs_menu_id || id == R.id.new_incognito_tab_menu_id + || id == R.id.new_tab_menu_id) { + return true; + } else if (id == R.id.open_in_chrome_id) { String url = getTabModelSelector().getCurrentTab().getUrl(); if (DomDistillerUrlUtils.isDistilledPage(url)) { url = DomDistillerUrlUtils.getOriginalUrlFromDistillerUrl(url); @@ -416,9 +431,6 @@ public class CustomTabActivity extends ChromeActivity { RecordUserAction.record("MobileShortcutFindInPage"); } return true; - } else if (id == R.id.focus_url_bar) { - // Do nothing because url bar in custom tabs is not editable. - return true; } return super.onMenuOrKeyboardAction(id, fromMenu); } |