| 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
|
|
|