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

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

Issue 1278593004: Introduce ThreadedInputConnection behind a switch (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 4 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 955873fd787dd41f58152213b0ea23b3f5b6c139..9a9acb51389982d02b7412d1c7e04ec6746291bb 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
@@ -8,7 +8,6 @@ import android.content.res.Configuration;
import android.os.Handler;
import android.os.ResultReceiver;
import android.os.SystemClock;
-import android.text.Editable;
import android.text.SpannableString;
import android.text.style.BackgroundColorSpan;
import android.text.style.CharacterStyle;
@@ -16,7 +15,7 @@ import android.text.style.UnderlineSpan;
import android.view.KeyCharacterMap;
import android.view.KeyEvent;
import android.view.View;
-import android.view.inputmethod.EditorInfo;
+import android.view.inputmethod.BaseInputConnection;
import org.chromium.base.VisibleForTesting;
import org.chromium.base.annotations.CalledByNative;
@@ -101,7 +100,7 @@ public class ImeAdapter {
private long mNativeImeAdapterAndroid;
private InputMethodManagerWrapper mInputMethodManagerWrapper;
- private AdapterInputConnection mInputConnection;
+ public ChromiumBaseInputConnection mInputConnection;
private final ImeAdapterDelegate mViewEmbedder;
private final Handler mHandler;
private int mTextInputType;
@@ -126,16 +125,6 @@ public class ImeAdapter {
}
/**
- * Default factory for AdapterInputConnection classes.
- */
- public static class AdapterInputConnectionFactory {
- public AdapterInputConnection get(View view, ImeAdapter imeAdapter,
- Editable editable, EditorInfo outAttrs) {
- return new AdapterInputConnection(view, imeAdapter, editable, outAttrs);
- }
- }
-
- /**
* Overrides the InputMethodManagerWrapper that ImeAdapter uses to make calls to
* InputMethodManager.
* @param immw InputMethodManagerWrapper that should be used to call InputMethodManager.
@@ -158,7 +147,7 @@ public class ImeAdapter {
* Set the current active InputConnection when a new InputConnection is constructed.
* @param inputConnection The input connection that is currently used with IME.
*/
- void setInputConnection(AdapterInputConnection inputConnection) {
+ void setInputConnection(ChromiumBaseInputConnection inputConnection) {
mInputConnection = inputConnection;
mLastComposeText = null;
}
@@ -221,7 +210,7 @@ public class ImeAdapter {
attach(nativeImeAdapter, textInputType, textInputFlags, true);
if (mTextInputType != TextInputType.NONE) {
- mInputMethodManagerWrapper.restartInput(mViewEmbedder.getAttachedView());
+ if (mInputConnection != null) mInputConnection.restartInput();
if (showIfNeeded) {
showKeyboard();
}
@@ -385,17 +374,15 @@ public class ImeAdapter {
return null;
}
- void sendKeyEventWithKeyCode(int keyCode, int flags) {
+ boolean sendKeyEventWithKeyCode(int keyCode, int flags) {
long eventTime = SystemClock.uptimeMillis();
mLastSyntheticKeyCode = keyCode;
- translateAndSendNativeEvents(new KeyEvent(eventTime, eventTime,
- KeyEvent.ACTION_DOWN, keyCode, 0, 0,
- KeyCharacterMap.VIRTUAL_KEYBOARD, 0,
- flags));
- translateAndSendNativeEvents(new KeyEvent(SystemClock.uptimeMillis(), eventTime,
- KeyEvent.ACTION_UP, keyCode, 0, 0,
- KeyCharacterMap.VIRTUAL_KEYBOARD, 0,
- flags));
+ boolean result = translateAndSendNativeEvents(new KeyEvent(eventTime, eventTime,
+ KeyEvent.ACTION_DOWN, keyCode, 0, 0, KeyCharacterMap.VIRTUAL_KEYBOARD, 0, flags));
+ if (!result) return false;
+ result = translateAndSendNativeEvents(new KeyEvent(SystemClock.uptimeMillis(), eventTime,
+ KeyEvent.ACTION_UP, keyCode, 0, 0, KeyCharacterMap.VIRTUAL_KEYBOARD, 0, flags));
+ return result;
}
// Calls from Java to C++
@@ -482,10 +469,11 @@ public class ImeAdapter {
}
@VisibleForTesting
- protected void finishComposingText() {
+ protected boolean finishComposingText() {
mLastComposeText = null;
- if (mNativeImeAdapterAndroid == 0) return;
+ if (mNativeImeAdapterAndroid == 0) return false;
nativeFinishComposingText(mNativeImeAdapterAndroid);
+ return true;
}
boolean translateAndSendNativeEvents(KeyEvent event) {
@@ -560,11 +548,20 @@ public class ImeAdapter {
return true;
}
- // Calls from C++ to Java
+ /**
+ * Send a request to the native counterpart to give the latest text input state update.
+ */
+ boolean requestTextInputStateUpdate() {
+ if (mNativeImeAdapterAndroid == 0) return false;
+ nativeRequestTextInputStateUpdate(mNativeImeAdapterAndroid);
+ return true;
+ }
@CalledByNative
private void focusedNodeChanged(boolean isEditable) {
- if (mInputConnection != null && isEditable) mInputConnection.restartInput();
+ if (mInputConnection != null && isEditable) {
+ mInputConnection.restartInput();
+ }
}
@CalledByNative
@@ -588,7 +585,7 @@ public class ImeAdapter {
@CalledByNative
private void cancelComposition() {
- if (mInputConnection != null) mInputConnection.restartInput();
+ mInputMethodManagerWrapper.restartInput(mViewEmbedder.getAttachedView());
mLastComposeText = null;
}
@@ -601,32 +598,22 @@ public class ImeAdapter {
private native boolean nativeSendSyntheticKeyEvent(long nativeImeAdapterAndroid,
int eventType, long timestampMs, int keyCode, int modifiers, int unicodeChar);
-
private native boolean nativeSendKeyEvent(long nativeImeAdapterAndroid, KeyEvent event,
int action, int modifiers, long timestampMs, int keyCode, boolean isSystemKey,
int unicodeChar);
-
private static native void nativeAppendUnderlineSpan(long underlinePtr, int start, int end);
-
private static native void nativeAppendBackgroundColorSpan(long underlinePtr, int start,
int end, int backgroundColor);
-
private native void nativeSetComposingText(long nativeImeAdapterAndroid, CharSequence text,
String textStr, int newCursorPosition);
-
private native void nativeCommitText(long nativeImeAdapterAndroid, String textStr);
-
private native void nativeFinishComposingText(long nativeImeAdapterAndroid);
-
private native void nativeAttachImeAdapter(long nativeImeAdapterAndroid);
-
private native void nativeSetEditableSelectionOffsets(long nativeImeAdapterAndroid,
int start, int end);
-
private native void nativeSetComposingRegion(long nativeImeAdapterAndroid, int start, int end);
-
private native void nativeDeleteSurroundingText(long nativeImeAdapterAndroid,
int before, int after);
-
private native void nativeResetImeAdapter(long nativeImeAdapterAndroid);
+ private native void nativeRequestTextInputStateUpdate(long nativeImeAdapterAndroid);
}

Powered by Google App Engine
This is Rietveld 408576698