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

Unified Diff: content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java

Issue 2756813002: Refactor ContentViewClient (5/6) (Closed)
Patch Set: fix bug/tests Created 3 years, 9 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 | « content/public/android/java/src/org/chromium/content/browser/ContentViewClient.java ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java
diff --git a/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java b/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java
index b8394ca23a122b07ceb199e6d97c1ffcb87213a3..2a2b5993baf93fca8d61ee25615cfa2f191a5217 100644
--- a/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java
+++ b/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java
@@ -1385,7 +1385,7 @@ public class ContentViewCore implements AccessibilityStateChangeListener, Displa
*/
public boolean dispatchKeyEvent(KeyEvent event) {
if (GamepadList.dispatchKeyEvent(event)) return true;
- if (getContentViewClient().shouldOverrideKeyEvent(event)) {
+ if (!shouldPropagateKeyEvent(event)) {
return mContainerViewInternals.super_dispatchKeyEvent(event);
}
@@ -1395,6 +1395,30 @@ public class ContentViewCore implements AccessibilityStateChangeListener, Displa
}
/**
+ * Check whether a key should be propagated to the embedder or not.
+ * We need to send almost every key to Blink. However:
+ * 1. We don't want to block the device on the renderer for
+ * some keys like menu, home, call.
+ * 2. There are no WebKit equivalents for some of these keys
+ * (see app/keyboard_codes_win.h)
+ * Note that these are not the same set as KeyEvent.isSystemKey:
+ * for instance, AKEYCODE_MEDIA_* will be dispatched to webkit*.
+ */
+ private static boolean shouldPropagateKeyEvent(KeyEvent event) {
+ int keyCode = event.getKeyCode();
+ if (keyCode == KeyEvent.KEYCODE_MENU || keyCode == KeyEvent.KEYCODE_HOME
+ || keyCode == KeyEvent.KEYCODE_BACK || keyCode == KeyEvent.KEYCODE_CALL
+ || keyCode == KeyEvent.KEYCODE_ENDCALL || keyCode == KeyEvent.KEYCODE_POWER
+ || keyCode == KeyEvent.KEYCODE_HEADSETHOOK || keyCode == KeyEvent.KEYCODE_CAMERA
+ || keyCode == KeyEvent.KEYCODE_FOCUS || keyCode == KeyEvent.KEYCODE_VOLUME_DOWN
+ || keyCode == KeyEvent.KEYCODE_VOLUME_MUTE
+ || keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
+ return false;
+ }
+ return true;
+ }
+
+ /**
* @see View#onHoverEvent(MotionEvent)
* Mouse move events are sent on hover enter, hover move and hover exit.
* They are sent on hover exit because sometimes it acts as both a hover
« no previous file with comments | « content/public/android/java/src/org/chromium/content/browser/ContentViewClient.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698