| 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 90e970cf045df5c5f2d636979d45e8b767bec014..e6c45309d7bfb88487ab3e9a61407e0ffad54835 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
|
| @@ -264,6 +264,100 @@ public class ImeTest extends ContentShellTestBase {
|
|
|
| @SmallTest
|
| @Feature({"TextInput", "Main"})
|
| + public void testGuessedKeycodeFromTyping() throws Throwable {
|
| + assertEquals(0, ImeAdapter.getTypedKeycodeGuess(null, ""));
|
| + assertEquals(KeyEvent.KEYCODE_X, ImeAdapter.getTypedKeycodeGuess(null, "x"));
|
| + assertEquals(0, ImeAdapter.getTypedKeycodeGuess(null, "xyz"));
|
| +
|
| + assertEquals(0, ImeAdapter.getTypedKeycodeGuess("abc", "abc"));
|
| + assertEquals(KeyEvent.KEYCODE_DEL, ImeAdapter.getTypedKeycodeGuess("abc", ""));
|
| +
|
| + assertEquals(KeyEvent.KEYCODE_H, ImeAdapter.getTypedKeycodeGuess("", "h"));
|
| + assertEquals(KeyEvent.KEYCODE_DEL, ImeAdapter.getTypedKeycodeGuess("h", ""));
|
| + assertEquals(KeyEvent.KEYCODE_E, ImeAdapter.getTypedKeycodeGuess("h", "he"));
|
| + assertEquals(KeyEvent.KEYCODE_L, ImeAdapter.getTypedKeycodeGuess("he", "hel"));
|
| + assertEquals(KeyEvent.KEYCODE_O, ImeAdapter.getTypedKeycodeGuess("hel", "helo"));
|
| + assertEquals(KeyEvent.KEYCODE_DEL, ImeAdapter.getTypedKeycodeGuess("helo", "hel"));
|
| + assertEquals(KeyEvent.KEYCODE_L, ImeAdapter.getTypedKeycodeGuess("hel", "hell"));
|
| + assertEquals(KeyEvent.KEYCODE_L, ImeAdapter.getTypedKeycodeGuess("hell", "helll"));
|
| + assertEquals(KeyEvent.KEYCODE_DEL, ImeAdapter.getTypedKeycodeGuess("helll", "hell"));
|
| + assertEquals(KeyEvent.KEYCODE_O, ImeAdapter.getTypedKeycodeGuess("hell", "hello"));
|
| +
|
| + assertEquals(KeyEvent.KEYCODE_X, ImeAdapter.getTypedKeycodeGuess("xxx", "xxxx"));
|
| + assertEquals(KeyEvent.KEYCODE_X, ImeAdapter.getTypedKeycodeGuess("xxx", "xxxxx"));
|
| + assertEquals(KeyEvent.KEYCODE_DEL, ImeAdapter.getTypedKeycodeGuess("xxx", "xx"));
|
| + assertEquals(KeyEvent.KEYCODE_DEL, ImeAdapter.getTypedKeycodeGuess("xxx", "x"));
|
| +
|
| + assertEquals(KeyEvent.KEYCODE_Y, ImeAdapter.getTypedKeycodeGuess("xxx", "xxxy"));
|
| + assertEquals(KeyEvent.KEYCODE_Y, ImeAdapter.getTypedKeycodeGuess("xxx", "xxxxy"));
|
| + assertEquals(0, ImeAdapter.getTypedKeycodeGuess("xxx", "xy"));
|
| + assertEquals(0, ImeAdapter.getTypedKeycodeGuess("xxx", "y"));
|
| +
|
| + assertEquals(0, ImeAdapter.getTypedKeycodeGuess("foo", "bar"));
|
| + assertEquals(0, ImeAdapter.getTypedKeycodeGuess("foo", "bars"));
|
| + assertEquals(0, ImeAdapter.getTypedKeycodeGuess("foo", "ba"));
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"TextInput", "Main"})
|
| + public void testKeyCodesWhileComposingText() throws Throwable {
|
| + DOMUtils.focusNode(mContentViewCore, "input_radio");
|
| + assertWaitForKeyboardStatus(false);
|
| + DOMUtils.focusNode(mContentViewCore, "textarea");
|
| + assertWaitForKeyboardStatus(true);
|
| +
|
| + // The calls below are a reflection of what the stock Google Keyboard (Android 4.4) sends
|
| + // when the noted key is touched on screen. Exercise care when altering to make sure
|
| + // that the test reflects reality.
|
| + mConnection = (TestAdapterInputConnection) getAdapterInputConnection();
|
| + waitAndVerifyEditableCallback(mConnection.mImeUpdateQueue, 0, "", 0, 0, -1, -1);
|
| +
|
| + // H
|
| + setComposingText(mConnection, "h", 1);
|
| + assertEquals(KeyEvent.KEYCODE_H, mImeAdapter.mLastSyntheticKeyCode);
|
| + assertEquals("h", mConnection.getTextBeforeCursor(9, 0));
|
| +
|
| + // O
|
| + setComposingText(mConnection, "ho", 1);
|
| + assertEquals(KeyEvent.KEYCODE_O, mImeAdapter.mLastSyntheticKeyCode);
|
| + assertEquals("ho", mConnection.getTextBeforeCursor(9, 0));
|
| +
|
| + // DEL
|
| + setComposingText(mConnection, "h", 1);
|
| + assertEquals(KeyEvent.KEYCODE_DEL, mImeAdapter.mLastSyntheticKeyCode);
|
| + assertEquals("h", mConnection.getTextBeforeCursor(9, 0));
|
| +
|
| + // I
|
| + setComposingText(mConnection, "hi", 1);
|
| + assertEquals(KeyEvent.KEYCODE_I, mImeAdapter.mLastSyntheticKeyCode);
|
| + assertEquals("hi", mConnection.getTextBeforeCursor(9, 0));
|
| +
|
| + // SPACE
|
| + commitText(mConnection, "hi",1);
|
| + assertEquals(0, mImeAdapter.mLastSyntheticKeyCode);
|
| + commitText(mConnection, " ", 1);
|
| + assertEquals(KeyEvent.KEYCODE_SPACE, mImeAdapter.mLastSyntheticKeyCode);
|
| + assertEquals("hi ", mConnection.getTextBeforeCursor(9, 0));
|
| +
|
| + // DEL
|
| + deleteSurroundingText(mConnection, 1, 0);
|
| + //assertEquals(KeyEvent.KEYCODE_DEL, mImeAdapter.mLastSyntheticKeyCode);
|
| + setComposingRegion(mConnection, 0, 2);
|
| + assertEquals("hi", mConnection.getTextBeforeCursor(9, 0));
|
| +
|
| + // DEL
|
| + setComposingText(mConnection, "h", 1);
|
| + assertEquals(KeyEvent.KEYCODE_DEL, mImeAdapter.mLastSyntheticKeyCode);
|
| + assertEquals("h", mConnection.getTextBeforeCursor(9, 0));
|
| +
|
| + // DEL
|
| + setComposingText(mConnection, "", 1);
|
| + assertEquals(KeyEvent.KEYCODE_DEL, mImeAdapter.mLastSyntheticKeyCode);
|
| + assertEquals("", mConnection.getTextBeforeCursor(9, 0));
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"TextInput", "Main"})
|
| public void testEnterKeyEventWhileComposingText() throws Throwable {
|
| DOMUtils.focusNode(mContentViewCore, "input_radio");
|
| assertWaitForKeyboardStatus(false);
|
| @@ -449,6 +543,16 @@ public class ImeTest extends ContentShellTestBase {
|
| });
|
| }
|
|
|
| + private void deleteSurroundingText(final AdapterInputConnection connection, final int before,
|
| + final int after) {
|
| + ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| + @Override
|
| + public void run() {
|
| + connection.deleteSurroundingText(before, after);
|
| + }
|
| + });
|
| + }
|
| +
|
| private static class TestAdapterInputConnectionFactory extends
|
| ImeAdapter.AdapterInputConnectionFactory {
|
| @Override
|
|
|