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

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

Issue 2483323004: Make ImeTest only run with ImeThread enabled (Closed)
Patch Set: Created 4 years, 1 month 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 6a65a9b60018abdc52d62e1d3f5a2f6df9a7cef4..c8e20aa08ae12a5176473406fb04c82f4949cb35 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
@@ -10,7 +10,6 @@ import android.content.ClipboardManager;
import android.content.Context;
import android.content.res.Configuration;
import android.os.Handler;
-import android.os.Looper;
import android.test.suitebuilder.annotation.MediumTest;
import android.test.suitebuilder.annotation.SmallTest;
import android.text.InputType;
@@ -23,13 +22,10 @@ import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputConnection;
import org.chromium.base.ThreadUtils;
-import org.chromium.base.test.util.CommandLineFlags;
import org.chromium.base.test.util.DisabledTest;
import org.chromium.base.test.util.Feature;
import org.chromium.base.test.util.RetryOnFailure;
import org.chromium.base.test.util.UrlUtils;
-import org.chromium.base.test.util.parameter.Parameter;
-import org.chromium.base.test.util.parameter.ParameterizedTest;
import org.chromium.content.browser.ContentViewCore;
import org.chromium.content.browser.test.util.Criteria;
import org.chromium.content.browser.test.util.CriteriaHelper;
@@ -49,25 +45,8 @@ import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeoutException;
/**
- * IME (input method editor) and text input tests. Note that we run each test case twice,
- * once with ImeThread feature and once without it.
+ * IME (input method editor) and text input tests.
*/
-@ParameterizedTest.Set(tests = {
- @ParameterizedTest(parameters = {
- @Parameter(
- tag = CommandLineFlags.Parameter.PARAMETER_TAG,
- arguments = {
- @Parameter.Argument(
- name = CommandLineFlags.Parameter.ADD_ARG,
- stringArray = {"enable-features=ImeThread"})})}),
- @ParameterizedTest(parameters = {
- @Parameter(
- tag = CommandLineFlags.Parameter.PARAMETER_TAG,
- arguments = {
- @Parameter.Argument(
- name = CommandLineFlags.Parameter.ADD_ARG,
- stringArray = {"disable-features=ImeThread"})})})
- })
public class ImeTest extends ContentShellTestBase {
protected ChromiumBaseInputConnection mConnection;
private TestInputConnectionFactory mConnectionFactory;
@@ -105,10 +84,6 @@ public class ImeTest extends ContentShellTestBase {
mConnection = getInputConnection();
mImeAdapter = getImeAdapter();
- if (usingReplicaInputConnection()) {
- // This is not needed if onCreateInputConnection() can return correct selection range.
- waitAndVerifyUpdateSelection(0, 0, 0, -1, -1);
- }
waitForKeyboardStates(1, 0, 1, new Integer[] {TextInputType.TEXT});
assertEquals(0, mConnectionFactory.getOutAttrs().initialSelStart);
assertEquals(0, mConnectionFactory.getOutAttrs().initialSelEnd);
@@ -182,7 +157,6 @@ public class ImeTest extends ContentShellTestBase {
@SmallTest
@Feature({"TextInput", "Main"})
public void testCompositionWithNullTextNotCrash() throws Throwable {
- if (usingReplicaInputConnection()) return;
commitText(null, 1);
assertTextsAroundCursor("", null, "");
@@ -242,10 +216,6 @@ public class ImeTest extends ContentShellTestBase {
@SmallTest
@Feature({"TextInput", "Main"})
public void testSetComposingTextForNewCursorPositions() throws Throwable {
- // When newCursorPosition != 1, setComposingText doesn't work for ReplicaInputConnection
- // because there is a bug in BaseInputConnection.
- if (usingReplicaInputConnection()) return;
-
// Cursor is on the right of composing text when newCursorPosition > 0.
setComposingText("ab", 1);
waitAndVerifyUpdateSelection(0, 2, 2, 0, 2);
@@ -293,10 +263,6 @@ public class ImeTest extends ContentShellTestBase {
@Feature({"TextInput", "Main"})
@RetryOnFailure
public void testCommitTextForNewCursorPositions() throws Throwable {
- // When newCursorPosition != 1, commitText doesn't work for ReplicaInputConnection
- // because there is a bug in BaseInputConnection.
- if (usingReplicaInputConnection()) return;
-
// Cursor is on the left of committing text.
commitText("ab", 0);
waitAndVerifyUpdateSelection(0, 0, 0, -1, -1);
@@ -494,18 +460,8 @@ public class ImeTest extends ContentShellTestBase {
private void assertTextsAroundCursor(
CharSequence before, CharSequence selected, CharSequence after) throws Exception {
assertEquals(before, getTextBeforeCursor(100, 0));
-
- CharSequence actualSelected = getSelectedText(0);
- assertEquals(selected, actualSelected);
-
- if (usingReplicaInputConnection() && after.equals("\n")) {
- // When the text ends with \n, we have a second new line that is not user
- // visible/editable one, it is a side effect of using <br> internally.
- // Replica model simply deviates from the blink editor in this case.
- assertEquals("", getTextAfterCursor(100, 0));
- } else {
- assertEquals(after, getTextAfterCursor(100, 0));
- }
+ assertEquals(selected, getSelectedText(0));
+ assertEquals(after, getTextAfterCursor(100, 0));
}
private void waitForKeyboardStates(int show, int hide, int restart, Integer[] history)
@@ -818,15 +774,11 @@ public class ImeTest extends ContentShellTestBase {
assertTextsAroundCursor("blablargblarg", null, "");
}
+ // crbug.com/606059
@MediumTest
@Feature({"TextInput"})
@RetryOnFailure
public void testPasteLongText() throws Exception {
- // Chrome can crash after pasting long text into textarea, becasue there is an overflow bug
- // in SpannableStringBuilder#replace(). This can be avoided by enabling ImeThread.
- // crbug.com/606059
- if (usingReplicaInputConnection()) return;
-
final int textLength = 25000;
final String text = new String(new char[textLength]).replace("\0", "a");
setClip(text);
@@ -1119,10 +1071,6 @@ public class ImeTest extends ContentShellTestBase {
dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_B));
assertEquals("hôˆb", getTextBeforeCursor(9, 0));
int index = 4;
- if (usingReplicaInputConnection()) {
- // A transitional state due to finishComposingText.
- waitAndVerifyUpdateSelection(index++, 3, 3, -1, -1);
- }
waitAndVerifyUpdateSelection(index++, 4, 4, -1, -1);
// ALT-i
@@ -1138,10 +1086,6 @@ public class ImeTest extends ContentShellTestBase {
assertEquals("hôˆb", getTextBeforeCursor(9, 0));
dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_DEL));
assertEquals("hôˆb", getTextBeforeCursor(9, 0));
- if (usingReplicaInputConnection()) {
- // A transitional state due to finishComposingText in deleteSurroundingTextImpl.
- waitAndVerifyUpdateSelection(index++, 5, 5, -1, -1);
- }
waitAndVerifyUpdateSelection(index++, 4, 4, -1, -1);
}
@@ -1225,50 +1169,7 @@ public class ImeTest extends ContentShellTestBase {
dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_LEFT));
dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_DPAD_LEFT));
- if (usingReplicaInputConnection()) {
- // Ideally getTextBeforeCursor immediately after dispatchKeyEvent should return a
- // correct value, but we have a stop-gap solution in render_widget_input_handler and it
- // make take some round trip time until we get the correct value.
- waitUntilGetCharacterBeforeCursorBecomes("l");
- } else {
- assertTextsAroundCursor("hell", null, "o");
- }
- }
-
- private void waitUntilGetCharacterBeforeCursorBecomes(final String expectedText)
- throws InterruptedException {
- pollForCriteriaOnThread(Criteria.equals(expectedText, new Callable<String>() {
- @Override
- public String call() {
- return (String) mConnection.getTextBeforeCursor(1, 0);
- }
- }));
- }
-
- private void pollForCriteriaOnThread(final Criteria criteria) throws InterruptedException {
- final Callable<Boolean> callable = new Callable<Boolean>() {
- @Override
- public Boolean call() throws Exception {
- return criteria.isSatisfied();
- }
- };
- CriteriaHelper.pollInstrumentationThread(new Criteria() {
- @Override
- public boolean isSatisfied() {
- try {
- return runBlockingOnImeThread(callable);
- } catch (Exception e) {
- e.printStackTrace();
- fail();
- return false;
- }
- }
-
- @Override
- public String getFailureReason() {
- return criteria.getFailureReason();
- }
- });
+ assertTextsAroundCursor("hell", null, "o");
}
@SmallTest
@@ -1487,27 +1388,8 @@ public class ImeTest extends ContentShellTestBase {
private void waitForEventLogs(String expectedLogs) throws Exception {
final String code = "getEventLogs()";
final String sanitizedExpectedLogs = "\"" + expectedLogs + "\"";
- if (usingReplicaInputConnection()) {
- // When using replica input connection, update from JavaScript will come at a later
- // time.
- CriteriaHelper.pollInstrumentationThread(new Criteria() {
- @Override
- public boolean isSatisfied() {
- try {
- String eventLogs = JavaScriptUtils.executeJavaScriptAndWaitForResult(
- getContentViewCore().getWebContents(), code);
- updateFailureReason(eventLogs);
- return sanitizedExpectedLogs.equals(eventLogs);
- } catch (InterruptedException | TimeoutException e) {
- updateFailureReason(e.getMessage());
- return false;
- }
- }
- });
- } else {
- assertEquals(sanitizedExpectedLogs, JavaScriptUtils.executeJavaScriptAndWaitForResult(
- getContentViewCore().getWebContents(), code));
- }
+ assertEquals(sanitizedExpectedLogs, JavaScriptUtils.executeJavaScriptAndWaitForResult(
+ getContentViewCore().getWebContents(), code));
}
// https://crbug.com/604675
@@ -1941,10 +1823,6 @@ public class ImeTest extends ContentShellTestBase {
mConnection = getInputConnection();
}
- private boolean usingReplicaInputConnection() {
- return mConnectionFactory.getHandler().getLooper() == Looper.getMainLooper();
- }
-
private static class TestInputConnectionFactory implements ChromiumBaseInputConnection.Factory {
private final ChromiumBaseInputConnection.Factory mFactory;
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698