diff options
author | cjhopman@chromium.org <cjhopman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-07-31 10:29:56 +0000 |
---|---|---|
committer | cjhopman@chromium.org <cjhopman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-07-31 10:29:56 +0000 |
commit | f2a7be8e04908514a6fc50b90ff9db5d34ebf051 (patch) | |
tree | 83b85fd7673553cb1c95545234321ca818123177 /content | |
parent | 524ccb07e924f4b21ddf53bc204385c0596bd297 (diff) | |
download | chromium_src-f2a7be8e04908514a6fc50b90ff9db5d34ebf051.zip chromium_src-f2a7be8e04908514a6fc50b90ff9db5d34ebf051.tar.gz chromium_src-f2a7be8e04908514a6fc50b90ff9db5d34ebf051.tar.bz2 |
[Android] Hide text handles on any non-finish IME event
This removes the exposure of selection+insertion handles to the IME and
AdapterInputConnection. Instead, hide the handles in the
ContentViewCore's ImeAdapterDelegate.onImeEvent when !isFinish.
BUG=258821
TBR=tedchoc@chromium.org
Review URL: https://chromiumcodereview.appspot.com/21061006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@214668 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content')
4 files changed, 14 insertions, 15 deletions
diff --git a/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java b/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java index dbbbc4e..89faa7e 100644 --- a/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java +++ b/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java @@ -539,6 +539,7 @@ import java.util.Map; public void onImeEvent(boolean isFinish) { getContentViewClient().onImeEvent(); if (!isFinish) { + hideHandles(); undoScrollFocusedEditableNodeIntoViewIfNeeded(false); } } @@ -582,12 +583,6 @@ import java.util.Map; } }; } - - @Override - public void hideSelectionAndInsertionHandles() { - getInsertionHandleController().hideAndDisallowAutomaticShowing(); - getSelectionHandleController().hideAndDisallowAutomaticShowing(); - } } ); } diff --git a/content/public/android/java/src/org/chromium/content/browser/input/AdapterInputConnection.java b/content/public/android/java/src/org/chromium/content/browser/input/AdapterInputConnection.java index 876b52b4..ab8a1fc 100644 --- a/content/public/android/java/src/org/chromium/content/browser/input/AdapterInputConnection.java +++ b/content/public/android/java/src/org/chromium/content/browser/input/AdapterInputConnection.java @@ -311,7 +311,6 @@ public class AdapterInputConnection extends BaseInputConnection { @Override public boolean sendKeyEvent(KeyEvent event) { if (DEBUG) Log.w(TAG, "sendKeyEvent [" + event.getAction() + "]"); - mImeAdapter.hideSelectionAndInsertionHandleControllers(); // If this is a key-up, and backspace/del or if the key has a character representation, // need to update the underlying Editable (i.e. the local representation of the text diff --git a/content/public/android/java/src/org/chromium/content/browser/input/ImeAdapter.java b/content/public/android/java/src/org/chromium/content/browser/input/ImeAdapter.java index 33d819c..5ad2acb 100644 --- a/content/public/android/java/src/org/chromium/content/browser/input/ImeAdapter.java +++ b/content/public/android/java/src/org/chromium/content/browser/input/ImeAdapter.java @@ -48,7 +48,6 @@ public class ImeAdapter { void onDismissInput(); View getAttachedView(); ResultReceiver getNewShowKeyboardReceiver(); - void hideSelectionAndInsertionHandles(); } private class DelayedDismissInput implements Runnable { @@ -198,10 +197,6 @@ public class ImeAdapter { return modifiers; } - void hideSelectionAndInsertionHandleControllers() { - mViewEmbedder.hideSelectionAndInsertionHandles(); - } - public boolean isActive() { return mInputConnection != null && mInputConnection.isActive(); } @@ -342,9 +337,6 @@ public class ImeAdapter { // Committing an empty string finishes the current composition. boolean isFinish = text.isEmpty(); - if (!isFinish) { - mViewEmbedder.hideSelectionAndInsertionHandles(); - } mViewEmbedder.onImeEvent(isFinish); int keyCode = shouldSendKeyEventWithKeyCode(text); long timeStampMs = System.currentTimeMillis(); diff --git a/content/public/android/javatests/src/org/chromium/content/browser/input/InsertionHandleTest.java b/content/public/android/javatests/src/org/chromium/content/browser/input/InsertionHandleTest.java index ec35132..cdb2056 100644 --- a/content/public/android/javatests/src/org/chromium/content/browser/input/InsertionHandleTest.java +++ b/content/public/android/javatests/src/org/chromium/content/browser/input/InsertionHandleTest.java @@ -11,6 +11,7 @@ import android.graphics.Rect; import android.test.suitebuilder.annotation.MediumTest; import android.text.Editable; import android.text.Selection; +import android.view.KeyEvent; import org.chromium.base.test.util.DisabledTest; import org.chromium.base.test.util.Feature; @@ -96,6 +97,18 @@ public class InsertionHandleTest extends ContentShellTestBase { assertTrue(waitForHandleShowingEquals(false)); } + + @MediumTest + @Feature({"TextSelection", "TextInput", "Main"}) + public void testKeyEventHidesHandle() throws Throwable { + launchWithUrl(TEXTAREA_DATA_URL); + clickNodeToShowInsertionHandle(TEXTAREA_ID); + + getInstrumentation().sendKeySync(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_X)); + getInstrumentation().sendKeySync(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_X)); + assertTrue(waitForHandleShowingEquals(false)); + } + /** * @MediumTest * @Feature({"TextSelection", "TextInput", "Main"}) |