| 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 d7f70154e5fef20d7d0675f27394d7e41102cd08..f5b850c29ffddd75136f5ffddec00589dd8089c0 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
|
| @@ -620,18 +620,32 @@ 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:
|
| + advanceFocusInForm(true);
|
| + break;
|
| + case EditorInfo.IME_ACTION_PREVIOUS:
|
| + 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.
|
| + */
|
| + private void advanceFocusInForm(boolean forward) {
|
| + if (mNativeImeAdapterAndroid == 0) return;
|
| + nativeAdvanceFocusInForm(mNativeImeAdapterAndroid, forward);
|
| + }
|
| +
|
| void notifyUserAction() {
|
| mInputMethodManagerWrapper.notifyUserAction();
|
| }
|
| @@ -907,4 +921,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);
|
| }
|
|
|