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

Unified Diff: trunk/src/android_webview/java/src/org/chromium/android_webview/AwWebContentsDelegateAdapter.java

Issue 23804007: Revert 221989 "Revert 221946 "[Android WebView] Enable spatial n..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 7 years, 3 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
Index: trunk/src/android_webview/java/src/org/chromium/android_webview/AwWebContentsDelegateAdapter.java
===================================================================
--- trunk/src/android_webview/java/src/org/chromium/android_webview/AwWebContentsDelegateAdapter.java (revision 222001)
+++ trunk/src/android_webview/java/src/org/chromium/android_webview/AwWebContentsDelegateAdapter.java (working copy)
@@ -10,6 +10,7 @@
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 @@
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 @@
@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;

Powered by Google App Engine
This is Rietveld 408576698