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

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

Issue 393933004: Send the real key code in deleteSurroundingText (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: added tests 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/javatests/src/org/chromium/content/browser/input/AdapterInputConnectionTest.java
diff --git a/content/public/android/javatests/src/org/chromium/content/browser/input/AdapterInputConnectionTest.java b/content/public/android/javatests/src/org/chromium/content/browser/input/AdapterInputConnectionTest.java
index 83e22feb771e3ea40800ee67eb503e731e3d1e74..a57f5ec71138802bd4e5bed990f458df0ad971bf 100644
--- a/content/public/android/javatests/src/org/chromium/content/browser/input/AdapterInputConnectionTest.java
+++ b/content/public/android/javatests/src/org/chromium/content/browser/input/AdapterInputConnectionTest.java
@@ -9,6 +9,8 @@ import android.os.IBinder;
import android.os.ResultReceiver;
import android.test.suitebuilder.annotation.MediumTest;
import android.text.Editable;
+import android.text.Selection;
+import android.view.KeyEvent;
import android.view.View;
import android.view.inputmethod.EditorInfo;
@@ -27,6 +29,7 @@ public class AdapterInputConnectionTest extends ContentShellTestBase {
private AdapterInputConnection mConnection;
private TestInputMethodManagerWrapper mWrapper;
private Editable mEditable;
+ private TestImeAdapter mImeAdapter;
@Override
public void setUp() throws Exception {
@@ -35,11 +38,11 @@ public class AdapterInputConnectionTest extends ContentShellTestBase {
assertTrue("Page failed to load", waitForActiveShellToBeDoneLoading());
mWrapper = new TestInputMethodManagerWrapper(getActivity());
ImeAdapterDelegate delegate = new TestImeAdapterDelegate();
- ImeAdapter imeAdapter = new TestImeAdapter(mWrapper, delegate);
+ mImeAdapter = new TestImeAdapter(mWrapper, delegate);
EditorInfo info = new EditorInfo();
mEditable = Editable.Factory.getInstance().newEditable("");
mConnection = new AdapterInputConnection(
- getContentViewCore().getContainerView(), imeAdapter, mEditable, info);
+ getContentViewCore().getContainerView(), mImeAdapter, mEditable, info);
}
@MediumTest
@@ -82,10 +85,59 @@ public class AdapterInputConnectionTest extends ContentShellTestBase {
mWrapper.verifyUpdateSelectionCall(0, 4, 4, 0 ,4);
}
+ @MediumTest
+ @Feature({"TextInput", "Main"})
+ public void testDeleteSurroundingText() throws Throwable {
+ // Tests back deletion of a single character with empty input.
+ mConnection.deleteSurroundingText(1, 0);
+ assertEquals(0, mImeAdapter.getDeleteSurroundingTextCallCount());
+ Integer[] keyEvents = mImeAdapter.getKeyEvents();
+ assertEquals(1, keyEvents.length);
+ assertEquals(KeyEvent.KEYCODE_DEL, keyEvents[0].intValue());
+
+ // Tests forward deletion of a single character with non-empty input.
+ mEditable.replace(0, mEditable.length(), " hello");
+ Selection.setSelection(mEditable, 0, 0);
+ mConnection.deleteSurroundingText(0, 1);
+ assertEquals(0, mImeAdapter.getDeleteSurroundingTextCallCount());
+ keyEvents = mImeAdapter.getKeyEvents();
+ assertEquals(2, keyEvents.length);
+ assertEquals(KeyEvent.KEYCODE_FORWARD_DEL, keyEvents[1].intValue());
+
+ // Tests back deletion of multiple characters with non-empty input.
+ mEditable.replace(0, mEditable.length(), "hello ");
+ Selection.setSelection(mEditable, mEditable.length(), mEditable.length());
+ mConnection.deleteSurroundingText(2, 0);
+ assertEquals(1, mImeAdapter.getDeleteSurroundingTextCallCount());
+ assertEquals(2, mImeAdapter.getKeyEvents().length);
+ }
+
private static class TestImeAdapter extends ImeAdapter {
+ private final ArrayList<Integer> mKeyEventQueue = new ArrayList<Integer>();
+ private int mDeleteSurroundingTextCounter;
+
public TestImeAdapter(InputMethodManagerWrapper wrapper, ImeAdapterDelegate embedder) {
super(wrapper, embedder);
}
+
+ @Override
+ public boolean deleteSurroundingText(int beforeLength, int afterLength) {
+ ++mDeleteSurroundingTextCounter;
+ return true;
+ }
+
+ @Override
+ public void sendKeyEventWithKeyCode(int keyCode, int flags) {
+ mKeyEventQueue.add(keyCode);
+ }
+
+ public int getDeleteSurroundingTextCallCount() {
+ return mDeleteSurroundingTextCounter;
+ }
+
+ public Integer[] getKeyEvents() {
+ return mKeyEventQueue.toArray(new Integer[mKeyEventQueue.size()]);
+ }
}
private static class TestInputMethodManagerWrapper extends InputMethodManagerWrapper {
« no previous file with comments | « content/public/android/java/src/org/chromium/content/browser/input/ImeAdapter.java ('k') | content/renderer/render_widget.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698