summaryrefslogtreecommitdiffstats
path: root/android_webview/java
diff options
context:
space:
mode:
authorhenrika@chromium.org <henrika@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-09 11:03:32 +0000
committerhenrika@chromium.org <henrika@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-09 11:03:32 +0000
commit047fcf7f3ec16fd04e46a503f5ca4ca7ac0d042c (patch)
tree34ddc6f797e7fd87edf93852889a6a43800f2757 /android_webview/java
parentb555953ffc451ca005fd6082c96a78ac4e31c303 (diff)
downloadchromium_src-047fcf7f3ec16fd04e46a503f5ca4ca7ac0d042c.zip
chromium_src-047fcf7f3ec16fd04e46a503f5ca4ca7ac0d042c.tar.gz
chromium_src-047fcf7f3ec16fd04e46a503f5ca4ca7ac0d042c.tar.bz2
Revert 221989 "Revert 221946 "[Android WebView] Enable spatial n..."
> Revert 221946 "[Android WebView] Enable spatial navigation / DPAD" > > > [Android WebView] Enable spatial navigation / DPAD > > > > Turn on the --enable-spatial-navigation flag, and also bubble up > > unhandled DPAD events to the neighboring views in the view tree. > > Likewise, WebContentsDelegate::TakeFocus() bubble to logical next > > or previous neighbor view. > > > > Also disabled the FileSystem API while in the area updating flags. > > > > BUG=286698 > > > > Review URL: https://chromiumcodereview.appspot.com/23619024 > > TBR=joth@chromium.org > > Review URL: https://codereview.chromium.org/23494033 TBR=henrika@chromium.org Review URL: https://codereview.chromium.org/23804007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@222002 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'android_webview/java')
-rw-r--r--android_webview/java/src/org/chromium/android_webview/AwContents.java2
-rw-r--r--android_webview/java/src/org/chromium/android_webview/AwWebContentsDelegateAdapter.java42
2 files changed, 42 insertions, 2 deletions
diff --git a/android_webview/java/src/org/chromium/android_webview/AwContents.java b/android_webview/java/src/org/chromium/android_webview/AwContents.java
index d54a6101..631d5ed 100644
--- a/android_webview/java/src/org/chromium/android_webview/AwContents.java
+++ b/android_webview/java/src/org/chromium/android_webview/AwContents.java
@@ -490,7 +490,7 @@ public class AwContents {
mLayoutSizer.setDelegate(new AwLayoutSizerDelegate());
mLayoutSizer.setDIPScale(mDIPScale);
mWebContentsDelegate = new AwWebContentsDelegateAdapter(contentsClient,
- mLayoutSizer.getPreferredSizeChangedListener());
+ mLayoutSizer.getPreferredSizeChangedListener(), mContainerView);
mContentsClientBridge = new AwContentsClientBridge(contentsClient);
mZoomControls = new AwZoomControls(this);
mIoThreadClient = new IoThreadClientImpl();
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 da09a1a..7e3512d 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;