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

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

Issue 2020973002: Reland: Fix setComposingText with empty text when newCursorPosition != 1 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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 side-by-side diff with in-line comments
Download patch
Index: content/public/android/javatests/src/org/chromium/content/browser/input/ImeTest.java
diff --git a/content/public/android/javatests/src/org/chromium/content/browser/input/ImeTest.java b/content/public/android/javatests/src/org/chromium/content/browser/input/ImeTest.java
index f2e37c29eebb31345ed0afe4b296c470b9a13d48..591e12fb2fb9bb811fb2a3bae31a5b8c69cd39f7 100644
--- a/content/public/android/javatests/src/org/chromium/content/browser/input/ImeTest.java
+++ b/content/public/android/javatests/src/org/chromium/content/browser/input/ImeTest.java
@@ -188,6 +188,116 @@ public class ImeTest extends ContentShellTestBase {
waitAndVerifyUpdateSelection(10, 8, 8, 2, 6);
}
+ // When newCursorPosition != 1, setComposingText doesn't work for ReplicaInputConnection
+ // because there is a bug in BaseInputConnection.
+ @CommandLineFlags.Add("enable-features=ImeThread")
+ @SmallTest
+ @Feature({"TextInput", "Main"})
+ public void testSetComposingTextWithEmptyTextForDifferentnewCursorPositions() throws Throwable {
+ commitText("hello", 1);
+ waitAndVerifyUpdateSelection(0, 5, 5, -1, -1);
+
+ // Cursor exceeds the left boundary.
+ setComposingText("", -100);
+ waitAndVerifyUpdateSelection(1, 0, 0, -1, -1);
+
+ // Cursor exceeds the right boundary.
+ setComposingText("", 100);
+ waitAndVerifyUpdateSelection(2, 5, 5, -1, -1);
+
+ // Cursor is on the left boundary.
+ setComposingText("", -5);
+ waitAndVerifyUpdateSelection(3, 0, 0, -1, -1);
+
+ // Cursor is on the right boundary.
+ setComposingText("", 6);
+ waitAndVerifyUpdateSelection(4, 5, 5, -1, -1);
+
+ // Cursor is between the left boundary and the composing text.
+ setComposingText("", -3);
+ waitAndVerifyUpdateSelection(5, 2, 2, -1, -1);
+
+ // Cursor is between the composing text and the right boundary.
+ setComposingText("", 2);
+ waitAndVerifyUpdateSelection(6, 3, 3, -1, -1);
+
+ // Cursor is on the left of composing text.
+ // Note that we shouldn't call waitAndVerifyUpdateSelection() because the selection doesn't
+ // change.
+ setComposingText("", 0);
+ assertTextsAroundCursor("hel", "", "lo");
+
+ // Cursor is on the right of composing text.
+ setComposingText("", 1);
+ assertTextsAroundCursor("hel", "", "lo");
+ }
+
+ // When newCursorPosition != 1, setComposingText doesn't work for ReplicaInputConnection
+ // because there is a bug in BaseInputConnection.
+ @CommandLineFlags.Add("enable-features=ImeThread")
+ @SmallTest
+ @Feature({"TextInput", "Main"})
+ public void testSetComposingTextWithEmptyTextAndPreviousComposition() throws Throwable {
+ commitText("hello", 1);
+ waitAndVerifyUpdateSelection(0, 5, 5, -1, -1);
+
+ setComposingText("AB", 1);
+ waitAndVerifyUpdateSelection(1, 7, 7, 5, 7);
+
+ // Cursor exceeds the left boundary.
+ setComposingText("", -100);
+ waitAndVerifyUpdateSelection(2, 0, 0, -1, -1);
+
+ setComposingText("AB", 1);
+ waitAndVerifyUpdateSelection(3, 2, 2, 0, 2);
+
+ // Cursor exceeds the right boundary.
+ setComposingText("", 100);
+ waitAndVerifyUpdateSelection(4, 5, 5, -1, -1);
+
+ setComposingText("AB", 1);
+ waitAndVerifyUpdateSelection(5, 7, 7, 5, 7);
+
+ // Cursor is on the left boundary.
+ setComposingText("", -5);
+ waitAndVerifyUpdateSelection(6, 0, 0, -1, -1);
+
+ setComposingText("AB", 1);
+ waitAndVerifyUpdateSelection(7, 2, 2, 0, 2);
+
+ // Cursor is on the right boundary.
+ setComposingText("", 6);
+ waitAndVerifyUpdateSelection(8, 5, 5, -1, -1);
+
+ setComposingText("AB", 1);
+ waitAndVerifyUpdateSelection(9, 7, 7, 5, 7);
+
+ // Cursor is between the left boundary and the composing text.
+ setComposingText("", -3);
+ waitAndVerifyUpdateSelection(10, 2, 2, -1, -1);
+
+ setComposingText("AB", 1);
+ waitAndVerifyUpdateSelection(11, 4, 4, 2, 4);
+
+ // Cursor is between the composing text and the right boundary.
+ setComposingText("", 2);
+ waitAndVerifyUpdateSelection(12, 3, 3, -1, -1);
+
+ setComposingText("AB", 1);
+ waitAndVerifyUpdateSelection(13, 5, 5, 3, 5);
+
+ // Cursor is on the left of composing text.
+ setComposingText("", 0);
+ waitAndVerifyUpdateSelection(14, 3, 3, -1, -1);
+
+ setComposingText("AB", 1);
+ waitAndVerifyUpdateSelection(15, 5, 5, 3, 5);
+
+ // Cursor is on the right of composing text.
+ setComposingText("", 1);
+ waitAndVerifyUpdateSelection(16, 3, 3, -1, -1);
+ }
+
@SmallTest
@Feature({"TextInput", "Main"})
public void testCommitWhileComposingText() throws Throwable {

Powered by Google App Engine
This is Rietveld 408576698