diff options
author | henrika@chromium.org <henrika@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-09 11:03:32 +0000 |
---|---|---|
committer | henrika@chromium.org <henrika@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-09 11:03:32 +0000 |
commit | 047fcf7f3ec16fd04e46a503f5ca4ca7ac0d042c (patch) | |
tree | 34ddc6f797e7fd87edf93852889a6a43800f2757 /android_webview/java | |
parent | b555953ffc451ca005fd6082c96a78ac4e31c303 (diff) | |
download | chromium_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.java | 2 | ||||
-rw-r--r-- | android_webview/java/src/org/chromium/android_webview/AwWebContentsDelegateAdapter.java | 42 |
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; |