mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
85 lines
3.6 KiB
Java
85 lines
3.6 KiB
Java
package org.mozilla.gecko.tests;
|
|
|
|
import static org.mozilla.gecko.tests.helpers.AssertionHelper.*;
|
|
import static org.mozilla.gecko.tests.helpers.TextInputHelper.*;
|
|
|
|
import org.mozilla.gecko.tests.components.GeckoViewComponent.InputConnectionTest;
|
|
import org.mozilla.gecko.tests.helpers.*;
|
|
|
|
import android.view.inputmethod.EditorInfo;
|
|
import android.view.inputmethod.InputConnection;
|
|
|
|
/**
|
|
* Tests the proper operation of GeckoInputConnection
|
|
*/
|
|
public class testInputConnection extends UITest {
|
|
|
|
private static final String INITIAL_TEXT = "foo";
|
|
|
|
public void testInputConnection() throws InterruptedException {
|
|
GeckoHelper.blockForReady();
|
|
|
|
NavigationHelper.enterAndLoadUrl(StringHelper.ROBOCOP_INPUT_URL + "#" + INITIAL_TEXT);
|
|
mToolbar.assertTitle(StringHelper.ROBOCOP_INPUT_TITLE);
|
|
|
|
mGeckoView.mTextInput
|
|
.waitForInputConnection()
|
|
.testInputConnection(new BasicInputConnectionTest());
|
|
}
|
|
|
|
private class BasicInputConnectionTest implements InputConnectionTest {
|
|
@Override
|
|
public void test(InputConnection ic, EditorInfo info) {
|
|
// Test initial text provided by the hash in the test page URL
|
|
assertText("Initial text matches URL hash", ic, INITIAL_TEXT);
|
|
|
|
// Test setSelection
|
|
ic.setSelection(0, 3);
|
|
assertSelection("Can set selection to range", ic, 0, 3);
|
|
ic.setSelection(-3, 6);
|
|
// Test both forms of assert
|
|
assertTextAndSelection("Can handle invalid range", ic, INITIAL_TEXT, 0, 3);
|
|
ic.setSelection(3, 3);
|
|
assertSelectionAt("Can collapse selection", ic, 3);
|
|
ic.setSelection(4, 4);
|
|
assertTextAndSelectionAt("Can handle invalid cursor", ic, INITIAL_TEXT, 3);
|
|
|
|
// Test commitText
|
|
ic.commitText("", 10); // Selection past end of new text
|
|
assertTextAndSelectionAt("Can commit empty text", ic, "foo", 3);
|
|
ic.commitText("bar", 1); // Selection at end of new text
|
|
assertTextAndSelectionAt("Can commit text (select after)", ic, "foobar", 6);
|
|
ic.commitText("foo", -1); // Selection at start of new text
|
|
assertTextAndSelectionAt("Can commit text (select before)", ic, "foobarfoo", 5);
|
|
|
|
// Test deleteSurroundingText
|
|
ic.deleteSurroundingText(1, 0);
|
|
assertTextAndSelectionAt("Can delete text before", ic, "foobrfoo", 4);
|
|
ic.deleteSurroundingText(1, 1);
|
|
assertTextAndSelectionAt("Can delete text before/after", ic, "foofoo", 3);
|
|
ic.deleteSurroundingText(0, 10);
|
|
assertTextAndSelectionAt("Can delete text after", ic, "foo", 3);
|
|
ic.deleteSurroundingText(0, 0);
|
|
assertTextAndSelectionAt("Can delete empty text", ic, "foo", 3);
|
|
|
|
// Test setComposingText
|
|
ic.setComposingText("foo", 1);
|
|
assertTextAndSelectionAt("Can start composition", ic, "foofoo", 6);
|
|
ic.setComposingText("", 1);
|
|
assertTextAndSelectionAt("Can set empty composition", ic, "foo", 3);
|
|
ic.setComposingText("bar", 1);
|
|
assertTextAndSelectionAt("Can update composition", ic, "foobar", 6);
|
|
|
|
// Test finishComposingText
|
|
ic.finishComposingText();
|
|
assertTextAndSelectionAt("Can finish composition", ic, "foobar", 6);
|
|
|
|
// Test getTextBeforeCursor
|
|
assertEquals("Can retrieve text before cursor", "bar", ic.getTextBeforeCursor(3, 0));
|
|
|
|
// Test getTextAfterCursor
|
|
assertEquals("Can retrieve text after cursor", "", ic.getTextAfterCursor(3, 0));
|
|
}
|
|
}
|
|
}
|