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

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

Issue 373523002: Send correct key-codes when doing composition events instead of always 0. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: added comments and fixed tests to work with Hui's change Created 6 years, 5 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/AdapterInputConnection.java
diff --git a/content/public/android/java/src/org/chromium/content/browser/input/AdapterInputConnection.java b/content/public/android/java/src/org/chromium/content/browser/input/AdapterInputConnection.java
index de9f9cce77fdea84ce6f403d65421ea9443a6b78..71fcd01e42e344ff11d23d163cfc85aa44de2432 100644
--- a/content/public/android/java/src/org/chromium/content/browser/input/AdapterInputConnection.java
+++ b/content/public/android/java/src/org/chromium/content/browser/input/AdapterInputConnection.java
@@ -8,7 +8,6 @@ import android.os.SystemClock;
import android.text.Editable;
import android.text.InputType;
import android.text.Selection;
-import android.text.TextUtils;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
@@ -46,6 +45,9 @@ public class AdapterInputConnection extends BaseInputConnection {
private int mLastUpdateCompositionEnd = INVALID_COMPOSITION;
@VisibleForTesting
+ public int mUpdateStateCalls = 0;
+
+ @VisibleForTesting
AdapterInputConnection(View view, ImeAdapter imeAdapter, Editable editable,
EditorInfo outAttrs) {
super(view, true);
@@ -139,6 +141,8 @@ public class AdapterInputConnection extends BaseInputConnection {
Log.w(TAG, "updateState [" + text + "] [" + selectionStart + " " + selectionEnd + "] ["
+ compositionStart + " " + compositionEnd + "] [" + isNonImeChange + "]");
}
+ mUpdateStateCalls++;
+
// If this update is from the IME, no further state modification is necessary because the
// state should have been updated already by the IM framework directly.
if (!isNonImeChange) return;
@@ -213,7 +217,6 @@ public class AdapterInputConnection extends BaseInputConnection {
@Override
public boolean setComposingText(CharSequence text, int newCursorPosition) {
if (DEBUG) Log.w(TAG, "setComposingText [" + text + "] [" + newCursorPosition + "]");
- if (maybePerformEmptyCompositionWorkaround(text)) return true;
super.setComposingText(text, newCursorPosition);
updateSelectionIfRequired();
return mImeAdapter.checkCompositionQueueAndCallNative(text, newCursorPosition, false);
@@ -225,7 +228,6 @@ public class AdapterInputConnection extends BaseInputConnection {
@Override
public boolean commitText(CharSequence text, int newCursorPosition) {
if (DEBUG) Log.w(TAG, "commitText [" + text + "] [" + newCursorPosition + "]");
- if (maybePerformEmptyCompositionWorkaround(text)) return true;
super.commitText(text, newCursorPosition);
updateSelectionIfRequired();
return mImeAdapter.checkCompositionQueueAndCallNative(text, newCursorPosition,
@@ -460,7 +462,12 @@ public class AdapterInputConnection extends BaseInputConnection {
super.setComposingRegion(a, b);
}
updateSelectionIfRequired();
- return mImeAdapter.setComposingRegion(a, b);
+
+ CharSequence regionText = null;
+ if (b > a) {
+ regionText = mEditable.subSequence(start, end);
+ }
+ return mImeAdapter.setComposingRegion(regionText, a, b);
}
boolean isActive() {
@@ -471,33 +478,6 @@ public class AdapterInputConnection extends BaseInputConnection {
return mImeAdapter.getInputMethodManagerWrapper();
}
- /**
- * This method works around the issue crbug.com/373934 where Blink does not cancel
- * the composition when we send a commit with the empty text.
- *
- * TODO(aurimas) Remove this once crbug.com/373934 is fixed.
- *
- * @param text Text that software keyboard requested to commit.
- * @return Whether the workaround was performed.
- */
- private boolean maybePerformEmptyCompositionWorkaround(CharSequence text) {
- int selectionStart = Selection.getSelectionStart(mEditable);
- int selectionEnd = Selection.getSelectionEnd(mEditable);
- int compositionStart = getComposingSpanStart(mEditable);
- int compositionEnd = getComposingSpanEnd(mEditable);
- if (TextUtils.isEmpty(text) && (selectionStart == selectionEnd)
- && compositionStart != INVALID_COMPOSITION
- && compositionEnd != INVALID_COMPOSITION) {
- beginBatchEdit();
- finishComposingText();
- int selection = Selection.getSelectionStart(mEditable);
- deleteSurroundingText(selection - compositionStart, selection - compositionEnd);
- endBatchEdit();
- return true;
- }
- return false;
- }
-
@VisibleForTesting
static class ImeState {
public final String text;

Powered by Google App Engine
This is Rietveld 408576698