summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorianwen <ianwen@chromium.org>2015-09-25 17:07:43 -0700
committerCommit bot <commit-bot@chromium.org>2015-09-26 00:08:32 +0000
commit730fcbedc16dbea063e664d04f64736189d6fc7b (patch)
tree69e9f0b56e14b06371d45881f296b19185230379
parent7dbbad9cd27b8661ae4c854347144aa2de1c06b5 (diff)
downloadchromium_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.java25
-rw-r--r--chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java20
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);
}