| Index: content/public/android/java/src/org/chromium/content/browser/input/ImeAdapter.java
|
| diff --git a/content/public/android/java/src/org/chromium/content/browser/input/ImeAdapter.java b/content/public/android/java/src/org/chromium/content/browser/input/ImeAdapter.java
|
| index 55746b956cbb1d2904fb20f3a6a9328116e619ed..af2fda9d30401b62c2a162a69033b51909dad9b5 100644
|
| --- a/content/public/android/java/src/org/chromium/content/browser/input/ImeAdapter.java
|
| +++ b/content/public/android/java/src/org/chromium/content/browser/input/ImeAdapter.java
|
| @@ -617,18 +617,34 @@ public class ImeAdapter {
|
|
|
| boolean performEditorAction(int actionCode) {
|
| if (!isValid()) return false;
|
| - if (actionCode == EditorInfo.IME_ACTION_NEXT) {
|
| - sendSyntheticKeyPress(KeyEvent.KEYCODE_TAB,
|
| - KeyEvent.FLAG_SOFT_KEYBOARD | KeyEvent.FLAG_KEEP_TOUCH_MODE
|
| - | KeyEvent.FLAG_EDITOR_ACTION);
|
| - } else {
|
| - sendSyntheticKeyPress(KeyEvent.KEYCODE_ENTER,
|
| - KeyEvent.FLAG_SOFT_KEYBOARD | KeyEvent.FLAG_KEEP_TOUCH_MODE
|
| - | KeyEvent.FLAG_EDITOR_ACTION);
|
| + switch (actionCode) {
|
| + case EditorInfo.IME_ACTION_NEXT:
|
| + restartInput();
|
| + advanceFocusInForm(true);
|
| + break;
|
| + case EditorInfo.IME_ACTION_PREVIOUS:
|
| + restartInput();
|
| + advanceFocusInForm(false);
|
| + break;
|
| + default:
|
| + sendSyntheticKeyPress(KeyEvent.KEYCODE_ENTER,
|
| + KeyEvent.FLAG_SOFT_KEYBOARD | KeyEvent.FLAG_KEEP_TOUCH_MODE
|
| + | KeyEvent.FLAG_EDITOR_ACTION);
|
| + break;
|
| }
|
| return true;
|
| }
|
|
|
| + /**
|
| + * Advances the focus to next input field in the current form.
|
| + *
|
| + * @param forward indicates whether to advance forward or backward direction.
|
| + */
|
| + public void advanceFocusInForm(boolean forward) {
|
| + if (mNativeImeAdapterAndroid == 0) return;
|
| + nativeAdvanceFocusInForm(mNativeImeAdapterAndroid, forward);
|
| + }
|
| +
|
| void notifyUserAction() {
|
| mInputMethodManagerWrapper.notifyUserAction();
|
| }
|
| @@ -902,4 +918,5 @@ public class ImeAdapter {
|
| private native boolean nativeRequestTextInputStateUpdate(long nativeImeAdapterAndroid);
|
| private native void nativeRequestCursorUpdate(long nativeImeAdapterAndroid,
|
| boolean immediateRequest, boolean monitorRequest);
|
| + private native void nativeAdvanceFocusInForm(long nativeImeAdapterAndroid, boolean forward);
|
| }
|
|
|