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

Side by Side Diff: content/public/android/java/src/org/chromium/content/browser/input/ImeAdapter.java

Issue 2839993002: [Android] Adding Smart GO/NEXT feature in Chrome (Closed)
Patch Set: Added inputType check in ImeTest Created 3 years, 7 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 unified diff | Download patch
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.content.browser.input; 5 package org.chromium.content.browser.input;
6 6
7 import android.annotation.SuppressLint; 7 import android.annotation.SuppressLint;
8 import android.content.res.Configuration; 8 import android.content.res.Configuration;
9 import android.graphics.Rect; 9 import android.graphics.Rect;
10 import android.os.Build; 10 import android.os.Build;
(...skipping 12 matching lines...) Expand all
23 import android.view.inputmethod.BaseInputConnection; 23 import android.view.inputmethod.BaseInputConnection;
24 import android.view.inputmethod.EditorInfo; 24 import android.view.inputmethod.EditorInfo;
25 import android.view.inputmethod.InputConnection; 25 import android.view.inputmethod.InputConnection;
26 import android.view.inputmethod.InputMethodManager; 26 import android.view.inputmethod.InputMethodManager;
27 27
28 import org.chromium.base.Log; 28 import org.chromium.base.Log;
29 import org.chromium.base.TraceEvent; 29 import org.chromium.base.TraceEvent;
30 import org.chromium.base.VisibleForTesting; 30 import org.chromium.base.VisibleForTesting;
31 import org.chromium.base.annotations.CalledByNative; 31 import org.chromium.base.annotations.CalledByNative;
32 import org.chromium.base.annotations.JNINamespace; 32 import org.chromium.base.annotations.JNINamespace;
33 import org.chromium.blink_public.web.WebFocusType;
33 import org.chromium.blink_public.web.WebInputEventModifier; 34 import org.chromium.blink_public.web.WebInputEventModifier;
34 import org.chromium.blink_public.web.WebInputEventType; 35 import org.chromium.blink_public.web.WebInputEventType;
35 import org.chromium.blink_public.web.WebTextInputMode; 36 import org.chromium.blink_public.web.WebTextInputMode;
36 import org.chromium.content.browser.ViewUtils; 37 import org.chromium.content.browser.ViewUtils;
37 import org.chromium.content.browser.picker.InputDialogContainer; 38 import org.chromium.content.browser.picker.InputDialogContainer;
38 import org.chromium.content_public.browser.ImeEventObserver; 39 import org.chromium.content_public.browser.ImeEventObserver;
39 import org.chromium.content_public.browser.WebContents; 40 import org.chromium.content_public.browser.WebContents;
40 import org.chromium.ui.base.ime.TextInputType; 41 import org.chromium.ui.base.ime.TextInputType;
41 42
42 import java.lang.ref.WeakReference; 43 import java.lang.ref.WeakReference;
(...skipping 570 matching lines...) Expand 10 before | Expand all | Expand 10 after
613 case android.R.id.paste: 614 case android.R.id.paste:
614 mWebContents.paste(); 615 mWebContents.paste();
615 return true; 616 return true;
616 default: 617 default:
617 return false; 618 return false;
618 } 619 }
619 } 620 }
620 621
621 boolean performEditorAction(int actionCode) { 622 boolean performEditorAction(int actionCode) {
622 if (!isValid()) return false; 623 if (!isValid()) return false;
623 if (actionCode == EditorInfo.IME_ACTION_NEXT) { 624 switch (actionCode) {
624 sendSyntheticKeyPress(KeyEvent.KEYCODE_TAB, 625 case EditorInfo.IME_ACTION_NEXT:
625 KeyEvent.FLAG_SOFT_KEYBOARD | KeyEvent.FLAG_KEEP_TOUCH_MODE 626 advanceFocusInForm(WebFocusType.FORWARD);
626 | KeyEvent.FLAG_EDITOR_ACTION); 627 break;
627 } else { 628 case EditorInfo.IME_ACTION_PREVIOUS:
628 sendSyntheticKeyPress(KeyEvent.KEYCODE_ENTER, 629 advanceFocusInForm(WebFocusType.BACKWARD);
629 KeyEvent.FLAG_SOFT_KEYBOARD | KeyEvent.FLAG_KEEP_TOUCH_MODE 630 break;
630 | KeyEvent.FLAG_EDITOR_ACTION); 631 default:
632 sendSyntheticKeyPress(KeyEvent.KEYCODE_ENTER,
633 KeyEvent.FLAG_SOFT_KEYBOARD | KeyEvent.FLAG_KEEP_TOUCH_M ODE
634 | KeyEvent.FLAG_EDITOR_ACTION);
635 break;
631 } 636 }
632 return true; 637 return true;
633 } 638 }
634 639
640 /**
641 * Advances the focus to next input field in the current form.
642 *
643 * @param focusType indicates whether to advance forward or backward directi on.
644 */
645 private void advanceFocusInForm(int focusType) {
646 if (mNativeImeAdapterAndroid == 0) return;
647 nativeAdvanceFocusInForm(mNativeImeAdapterAndroid, focusType);
648 }
649
635 void notifyUserAction() { 650 void notifyUserAction() {
636 mInputMethodManagerWrapper.notifyUserAction(); 651 mInputMethodManagerWrapper.notifyUserAction();
637 } 652 }
638 653
639 @VisibleForTesting 654 @VisibleForTesting
640 protected void sendSyntheticKeyPress(int keyCode, int flags) { 655 protected void sendSyntheticKeyPress(int keyCode, int flags) {
641 long eventTime = SystemClock.uptimeMillis(); 656 long eventTime = SystemClock.uptimeMillis();
642 sendKeyEvent(new KeyEvent(eventTime, eventTime, 657 sendKeyEvent(new KeyEvent(eventTime, eventTime,
643 KeyEvent.ACTION_DOWN, keyCode, 0, 0, 658 KeyEvent.ACTION_DOWN, keyCode, 0, 0,
644 KeyCharacterMap.VIRTUAL_KEYBOARD, 0, 659 KeyCharacterMap.VIRTUAL_KEYBOARD, 0,
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after
900 private native void nativeSetEditableSelectionOffsets(long nativeImeAdapterA ndroid, 915 private native void nativeSetEditableSelectionOffsets(long nativeImeAdapterA ndroid,
901 int start, int end); 916 int start, int end);
902 private native void nativeSetComposingRegion(long nativeImeAdapterAndroid, i nt start, int end); 917 private native void nativeSetComposingRegion(long nativeImeAdapterAndroid, i nt start, int end);
903 private native void nativeDeleteSurroundingText(long nativeImeAdapterAndroid , 918 private native void nativeDeleteSurroundingText(long nativeImeAdapterAndroid ,
904 int before, int after); 919 int before, int after);
905 private native void nativeDeleteSurroundingTextInCodePoints( 920 private native void nativeDeleteSurroundingTextInCodePoints(
906 long nativeImeAdapterAndroid, int before, int after); 921 long nativeImeAdapterAndroid, int before, int after);
907 private native boolean nativeRequestTextInputStateUpdate(long nativeImeAdapt erAndroid); 922 private native boolean nativeRequestTextInputStateUpdate(long nativeImeAdapt erAndroid);
908 private native void nativeRequestCursorUpdate(long nativeImeAdapterAndroid, 923 private native void nativeRequestCursorUpdate(long nativeImeAdapterAndroid,
909 boolean immediateRequest, boolean monitorRequest); 924 boolean immediateRequest, boolean monitorRequest);
925 private native void nativeAdvanceFocusInForm(long nativeImeAdapterAndroid, i nt focusType);
910 } 926 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698