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

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

Issue 643193003: Support InputMethodManager#updateCursorAnchorInfo for Android 5.0 (C++ version) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Send ImeCompositionRangeChanged only when necessary Created 5 years, 11 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 side-by-side diff with in-line comments
Download patch
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 d3f14cf6423be7e60d96f9548fce08b54ecd930e..6015060aa930e99d43012bdab9e92c7a6f7b0f53 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
@@ -16,7 +16,10 @@ import android.text.style.UnderlineSpan;
import android.view.KeyCharacterMap;
import android.view.KeyEvent;
import android.view.View;
+import android.view.inputmethod.CursorAnchorInfo;
import android.view.inputmethod.EditorInfo;
+import android.view.inputmethod.InputConnection;
+import android.view.inputmethod.InputMethodManager;
import org.chromium.base.CalledByNative;
import org.chromium.base.JNINamespace;
@@ -566,6 +569,17 @@ public class ImeAdapter {
}
/**
+ * Send a request to the native counterpart to call back
+ * {@link InputMethodManager#updateCursorAnchorInfo(View, CursorAnchorInfo)} when necessary.
+ * @param cursorUpdateMode The flag passed to {@link InputConnection#requestCursorUpdates(int)}.
+ * @return Whether the native counterpart of ImeAdapter received the call.
+ */
+ boolean requestCursorUpdates(int cursorUpdateMode) {
+ if (mNativeImeAdapterAndroid == 0) return false;
+ return nativeRequestCursorUpdates(mNativeImeAdapterAndroid, cursorUpdateMode);
+ }
+
+ /**
* Send a request to the native counterpart to unselect text.
* @return Whether the native counterpart of ImeAdapter received the call.
*/
@@ -623,6 +637,14 @@ public class ImeAdapter {
}
@CalledByNative
+ private void updateCursorAnchorInfo(Object cursorAnchorInfo) {
+ if (cursorAnchorInfo instanceof CursorAnchorInfo) {
+ mInputMethodManagerWrapper.updateCursorAnchorInfo(mViewEmbedder.getAttachedView(),
+ (CursorAnchorInfo) cursorAnchorInfo);
+ }
+ }
+
+ @CalledByNative
private void populateUnderlinesFromSpans(CharSequence text, long underlines) {
if (!(text instanceof SpannableString)) return;
@@ -686,6 +708,9 @@ public class ImeAdapter {
private native void nativeDeleteSurroundingText(long nativeImeAdapterAndroid,
int before, int after);
+ private native boolean nativeRequestCursorUpdates(long nativeImeAdapterAndroid,
+ int cursorUpdateMode);
+
private native void nativeUnselect(long nativeImeAdapterAndroid);
private native void nativeSelectAll(long nativeImeAdapterAndroid);
private native void nativeCut(long nativeImeAdapterAndroid);

Powered by Google App Engine
This is Rietveld 408576698