Index: content/public/android/java/src/org/chromium/content/browser/ContentViewClient.java |
diff --git a/content/public/android/java/src/org/chromium/content/browser/ContentViewClient.java b/content/public/android/java/src/org/chromium/content/browser/ContentViewClient.java |
index 7885f3ccfcdb685598da2e49da39e56ae646fbc8..81825090adeb07caa1924cdc56684c2637a75c5e 100644 |
--- a/content/public/android/java/src/org/chromium/content/browser/ContentViewClient.java |
+++ b/content/public/android/java/src/org/chromium/content/browser/ContentViewClient.java |
@@ -53,27 +53,8 @@ public class ContentViewClient { |
public boolean shouldOverrideKeyEvent(KeyEvent event) { |
int keyCode = event.getKeyCode(); |
- // We need to send almost every key to WebKit. 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. |
- 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 true; |
- } |
+ |
+ if (!shouldPropagateKey(keyCode)) return true; |
// We also have to intercept some shortcuts before we send them to the ContentView. |
if (event.isCtrlPressed() && ( |
@@ -180,4 +161,31 @@ public class ContentViewClient { |
return false; |
} |
+ /** |
+ * 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*. |
+ */ |
+ public static boolean shouldPropagateKey(int keyCode) { |
+ 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; |
+ } |
} |