| Index: android_webview/java/src/org/chromium/android_webview/AwWebContentsDelegateAdapter.java
|
| diff --git a/android_webview/java/src/org/chromium/android_webview/AwWebContentsDelegateAdapter.java b/android_webview/java/src/org/chromium/android_webview/AwWebContentsDelegateAdapter.java
|
| index da09a1a3eb0c9816f9cd5e5e638c42e7f5df459b..7e3512d7ec64f28b71cf73d941ba2f3540d9a5f6 100644
|
| --- a/android_webview/java/src/org/chromium/android_webview/AwWebContentsDelegateAdapter.java
|
| +++ b/android_webview/java/src/org/chromium/android_webview/AwWebContentsDelegateAdapter.java
|
| @@ -10,6 +10,7 @@ import android.os.Looper;
|
| import android.os.Message;
|
| import android.util.Log;
|
| import android.view.KeyEvent;
|
| +import android.view.View;
|
| import android.webkit.ConsoleMessage;
|
| import android.webkit.ValueCallback;
|
|
|
| @@ -37,11 +38,14 @@ class AwWebContentsDelegateAdapter extends AwWebContentsDelegate {
|
|
|
| final AwContentsClient mContentsClient;
|
| final PreferredSizeChangedListener mPreferredSizeChangedListener;
|
| + final View mContainerView;
|
|
|
| public AwWebContentsDelegateAdapter(AwContentsClient contentsClient,
|
| - PreferredSizeChangedListener preferredSizeChangedListener) {
|
| + PreferredSizeChangedListener preferredSizeChangedListener,
|
| + View containerView) {
|
| mContentsClient = contentsClient;
|
| mPreferredSizeChangedListener = preferredSizeChangedListener;
|
| + mContainerView = containerView;
|
| }
|
|
|
| @Override
|
| @@ -51,10 +55,46 @@ class AwWebContentsDelegateAdapter extends AwWebContentsDelegate {
|
|
|
| @Override
|
| public void handleKeyboardEvent(KeyEvent event) {
|
| + if (event.getAction() == KeyEvent.ACTION_DOWN) {
|
| + int direction;
|
| + switch (event.getKeyCode()) {
|
| + case KeyEvent.KEYCODE_DPAD_DOWN:
|
| + direction = View.FOCUS_DOWN;
|
| + break;
|
| + case KeyEvent.KEYCODE_DPAD_UP:
|
| + direction = View.FOCUS_UP;
|
| + break;
|
| + case KeyEvent.KEYCODE_DPAD_LEFT:
|
| + direction = View.FOCUS_LEFT;
|
| + break;
|
| + case KeyEvent.KEYCODE_DPAD_RIGHT:
|
| + direction = View.FOCUS_RIGHT;
|
| + break;
|
| + default:
|
| + direction = 0;
|
| + break;
|
| + }
|
| + if (direction != 0 && tryToMoveFocus(direction)) return;
|
| + }
|
| mContentsClient.onUnhandledKeyEvent(event);
|
| }
|
|
|
| @Override
|
| + public boolean takeFocus(boolean reverse) {
|
| + int direction =
|
| + (reverse == (mContainerView.getLayoutDirection() == View.LAYOUT_DIRECTION_RTL)) ?
|
| + View.FOCUS_RIGHT : View.FOCUS_LEFT;
|
| + if (tryToMoveFocus(direction)) return true;
|
| + direction = reverse ? View.FOCUS_UP : View.FOCUS_DOWN;
|
| + return tryToMoveFocus(direction);
|
| + }
|
| +
|
| + private boolean tryToMoveFocus(int direction) {
|
| + View focus = mContainerView.focusSearch(direction);
|
| + return focus != null && focus != mContainerView && focus.requestFocus();
|
| + }
|
| +
|
| + @Override
|
| public boolean addMessageToConsole(int level, String message, int lineNumber,
|
| String sourceId) {
|
| ConsoleMessage.MessageLevel messageLevel = ConsoleMessage.MessageLevel.DEBUG;
|
|
|