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

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

Issue 14100003: [Android] Moving input related files to a separate input/ directory. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 7 years, 8 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/InsertionHandleTest.java
diff --git a/content/public/android/javatests/src/org/chromium/content/browser/InsertionHandleTest.java b/content/public/android/javatests/src/org/chromium/content/browser/InsertionHandleTest.java
deleted file mode 100644
index 4f519f0262a5f034b4d47d03386b3db5db96f8c2..0000000000000000000000000000000000000000
--- a/content/public/android/javatests/src/org/chromium/content/browser/InsertionHandleTest.java
+++ /dev/null
@@ -1,358 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package org.chromium.content.browser;
-
-import android.content.ClipData;
-import android.content.ClipboardManager;
-import android.content.Context;
-import android.graphics.Rect;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.text.Editable;
-import android.text.Selection;
-
-import org.chromium.base.test.util.DisabledTest;
-import org.chromium.base.test.util.Feature;
-import org.chromium.content.browser.test.util.Criteria;
-import org.chromium.content.browser.test.util.CriteriaHelper;
-import org.chromium.content.browser.test.util.DOMUtils;
-import org.chromium.content.browser.test.util.TestCallbackHelperContainer;
-import org.chromium.content.browser.test.util.TestTouchUtils;
-import org.chromium.content.browser.test.util.TouchCommon;
-import org.chromium.content_shell_apk.ContentShellTestBase;
-
-public class InsertionHandleTest extends ContentShellTestBase {
-
- private static final String TEXTAREA_FILENAME =
- "content/insertion_handle/editable_long_text.html";
- private static final String TEXTAREA_ID = "textarea";
- private static final String INPUT_TEXT_FILENAME = "content/insertion_handle/input_text.html";
- private static final String INPUT_TEXT_ID = "input_text";
- // Offset to compensate for the fact that the handle is below the text.
- private static final int VERTICAL_OFFSET = 10;
- private static final int HANDLE_POSITION_TOLERANCE = 20;
- private static final String PASTE_TEXT = "**test text to paste**";
-
- // TODO(cjhopman): Due to http://crbug.com/179511, these tests must wait for the ContentViewCore
- // to have the correct page scale factor (otherwise clicks will be sent to the wrong
- // coordinates). This workaround should be removed when that bug is fixed.
- private void assertWaitForPageScaleFactor(final float scale) throws InterruptedException {
- assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
- @Override
- public boolean isSatisfied() {
- return getContentViewCore().getScale() == scale;
- }
- }));
- }
-
- @Override
- public void startActivityWithTestUrl(String filename) throws Throwable {
- super.startActivityWithTestUrl(filename);
- assertWaitForPageScaleFactor(1);
- }
-
- /**
- * @MediumTest
- * @Feature({"TextSelection", "TextInput", "Main"})
- * http://crbug.com/169648
- */
- @DisabledTest
- public void testUnselectHidesHandle() throws Throwable {
- startActivityWithTestUrl(TEXTAREA_FILENAME);
- clickNodeToShowInsertionHandle(TEXTAREA_ID);
-
- // Unselecting should cause the handle to disappear.
- getImeAdapter().unselect();
- assertTrue(waitForHandleShowingEquals(false));
- }
-
- /**
- * @MediumTest
- * @Feature({"TextSelection", "TextInput", "Main"})
- * http://crbug.com/169648
- */
- @DisabledTest
- public void testDragInsertionHandle() throws Throwable {
- startActivityWithTestUrl(TEXTAREA_FILENAME);
-
- clickNodeToShowInsertionHandle(TEXTAREA_ID);
-
- InsertionHandleController ihc = getContentViewCore().getInsertionHandleControllerForTest();
- HandleView handle = ihc.getHandleViewForTest();
-
- int initialX = handle.getPositionX();
- int initialY = handle.getPositionY();
- int dragToX = initialX + 120;
- int dragToY = initialY + 120;
-
- dragHandleTo(dragToX, dragToY);
- assertWaitForHandleNear(dragToX, dragToY);
- }
-
- /**
- * @MediumTest
- * @Feature({"TextSelection", "TextInput"})
- * http://crbug.com/169648
- */
- @DisabledTest
- public void testPasteAtInsertionHandle() throws Throwable {
- startActivityWithTestUrl(TEXTAREA_FILENAME);
-
- clickNodeToShowInsertionHandle(TEXTAREA_ID);
-
- int offset = getSelectionStart();
- String initialText = getEditableText();
-
- saveToClipboard(PASTE_TEXT);
- pasteOnMainSync();
-
- String expectedText =
- initialText.substring(0, offset) + PASTE_TEXT + initialText.substring(offset);
- assertTrue(waitForEditableTextEquals(expectedText));
- assertTrue(waitForHandleShowingEquals(false));
- }
-
- /**
- * @MediumTest
- * @Feature({"TextSelection", "TextInput", "Main"})
- * http://crbug.com/169648
- */
- @DisabledTest
- public void testDragInsertionHandleInputText() throws Throwable {
- startActivityWithTestUrl(INPUT_TEXT_FILENAME);
-
- clickNodeToShowInsertionHandle(INPUT_TEXT_ID);
-
- InsertionHandleController ihc = getContentViewCore().getInsertionHandleControllerForTest();
- HandleView handle = ihc.getHandleViewForTest();
-
- int initialX = handle.getPositionX();
- int initialY = handle.getPositionY();
- int dragToX = initialX + 120;
- int dragToY = initialY;
- dragHandleTo(dragToX, dragToY);
- assertWaitForHandleNear(dragToX, initialY);
-
- TestTouchUtils.sleepForDoubleTapTimeout(getInstrumentation());
-
- initialX = handle.getPositionX();
- initialY = handle.getPositionY();
- dragToY = initialY + 120;
- dragHandleTo(initialX, dragToY);
- // Vertical drag should not change the y-position.
- assertWaitForHandleNear(initialX, initialY);
- }
-
- /**
- * @MediumTest
- * @Feature({"TextSelection", "TextInput", "Main"})
- * http://crbug.com/169648
- */
- @DisabledTest
- public void testDragInsertionHandleInputTextOutsideBounds() throws Throwable {
- startActivityWithTestUrl(INPUT_TEXT_FILENAME);
-
- clickNodeToShowInsertionHandle(INPUT_TEXT_ID);
-
- InsertionHandleController ihc = getContentViewCore().getInsertionHandleControllerForTest();
- HandleView handle = ihc.getHandleViewForTest();
-
- int initialX = handle.getPositionX();
- int initialY = handle.getPositionY();
- int dragToX = initialX;
- int dragToY = initialY + 150;
-
- // A vertical drag should not move the insertion handle.
- dragHandleTo(dragToX, dragToY);
- assertWaitForHandleNear(initialX, initialY);
-
- // The input box does not go to the edge of the screen, and neither should the insertion
- // handle.
- dragToX = getContentView().getWidth();
- dragHandleTo(dragToX, dragToY);
- assertTrue(handle.getPositionX() < dragToX - 100);
- }
-
- @Override
- protected void tearDown() throws Exception {
- super.tearDown();
- // No way to just clear clipboard, so setting to empty string instead.
- saveToClipboard("");
- }
-
- private void clickNodeToShowInsertionHandle(String nodeId) throws Throwable {
- // On the first click the keyboard will be displayed but no insertion handles. On the second
- // click (only if it changes the selection), the insertion handle is displayed. So that the
- // second click changes the selection, the two clicks should be in sufficiently different
- // locations.
- Rect nodeBounds = DOMUtils.getNodeBounds(getContentView(),
- new TestCallbackHelperContainer(getContentView()), nodeId);
-
- RenderCoordinates renderCoordinates = getContentView().getRenderCoordinates();
- int offsetX = getContentView().getContentViewCore().getViewportSizeOffsetWidthPix();
- int offsetY = getContentView().getContentViewCore().getViewportSizeOffsetHeightPix();
- float left = renderCoordinates.fromLocalCssToPix(nodeBounds.left) + offsetX;
- float right = renderCoordinates.fromLocalCssToPix(nodeBounds.right) + offsetX;
- float top = renderCoordinates.fromLocalCssToPix(nodeBounds.top) + offsetY;
- float bottom = renderCoordinates.fromLocalCssToPix(nodeBounds.bottom) + offsetY;
-
- TouchCommon touchCommon = new TouchCommon(this);
- touchCommon.singleClickView(getContentView(),
- (int)(left + 3 * (right - left) / 4), (int)(top + (bottom - top) / 2));
-
-
- TestTouchUtils.sleepForDoubleTapTimeout(getInstrumentation());
- assertTrue(waitForHasSelectionPosition());
-
- // TODO(cjhopman): Wait for keyboard display finished?
- touchCommon.singleClickView(getContentView(),
- (int)(left + (right - left) / 4), (int)(top + (bottom - top) / 2));
- assertTrue(waitForHandleShowingEquals(true));
- assertTrue(waitForHandleViewStopped());
- }
-
- private boolean waitForHandleViewStopped() throws Throwable {
- // If the polling interval is too short, slowly moving may be detected as not moving.
- final int POLLING_INTERVAL = 200;
- return CriteriaHelper.pollForCriteria(new Criteria() {
- int mPositionX = -1;
- int mPositionY = -1;
- @Override
- public boolean isSatisfied() {
- int lastPositionX = mPositionX;
- int lastPositionY = mPositionY;
- InsertionHandleController ihc =
- getContentViewCore().getInsertionHandleControllerForTest();
- HandleView handle = ihc.getHandleViewForTest();
- mPositionX = handle.getPositionX();
- mPositionY = handle.getPositionY();
- return !handle.isDragging() &&
- mPositionX == lastPositionX && mPositionY == lastPositionY;
- }
- }, CriteriaHelper.DEFAULT_MAX_TIME_TO_POLL, POLLING_INTERVAL);
- }
-
- private boolean waitForEditableTextEquals(final String expectedText)
- throws Throwable {
- return CriteriaHelper.pollForCriteria(new Criteria() {
- @Override
- public boolean isSatisfied() {
- return getEditableText().trim().equals(expectedText.trim());
- }
- });
- }
-
- private boolean waitForHasSelectionPosition()
- throws Throwable {
- return CriteriaHelper.pollForCriteria(new Criteria() {
- @Override
- public boolean isSatisfied() {
- int start = getSelectionStart();
- int end = getSelectionEnd();
- return start > 0 && start == end;
- }
- });
- }
-
- private void dragHandleTo(int dragToX, int dragToY, int steps) throws Throwable {
- InsertionHandleController ihc = getContentViewCore().getInsertionHandleControllerForTest();
- HandleView handle = ihc.getHandleViewForTest();
- int initialX = handle.getPositionX();
- int initialY = handle.getPositionY();
- ContentView view = getContentView();
-
- int fromLocation[] = TestTouchUtils.getAbsoluteLocationFromRelative(view, initialX,
- initialY + VERTICAL_OFFSET);
- int toLocation[] = TestTouchUtils.getAbsoluteLocationFromRelative(view, dragToX,
- dragToY + VERTICAL_OFFSET);
-
- long downTime = TestTouchUtils.dragStart(getInstrumentation(), fromLocation[0],
- fromLocation[1]);
- assertWaitForHandleDraggingEquals(true);
- TestTouchUtils.dragTo(getInstrumentation(), fromLocation[0], toLocation[0],
- fromLocation[1], toLocation[1], steps, downTime);
- TestTouchUtils.dragEnd(getInstrumentation(), toLocation[0], toLocation[1], downTime);
- assertWaitForHandleDraggingEquals(false);
- assertTrue(waitForHandleViewStopped());
- }
-
- private void dragHandleTo(int dragToX, int dragToY) throws Throwable {
- dragHandleTo(dragToX, dragToY, 5);
- }
-
- private void assertWaitForHandleDraggingEquals(final boolean expected) throws Throwable {
- InsertionHandleController ihc = getContentViewCore().getInsertionHandleControllerForTest();
- final HandleView handle = ihc.getHandleViewForTest();
- assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
- @Override
- public boolean isSatisfied() {
- return handle.isDragging() == expected;
- }
- }));
- }
-
- private static boolean isHandleNear(HandleView handle, int x, int y) {
- return (Math.abs(handle.getPositionX() - x) < HANDLE_POSITION_TOLERANCE) &&
- (Math.abs(handle.getPositionY() - VERTICAL_OFFSET - y) < HANDLE_POSITION_TOLERANCE);
- }
-
- private void assertWaitForHandleNear(final int x, final int y) throws Throwable {
- InsertionHandleController ihc = getContentViewCore().getInsertionHandleControllerForTest();
- final HandleView handle = ihc.getHandleViewForTest();
- assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
- @Override
- public boolean isSatisfied() {
- return isHandleNear(handle, x, y);
- }
- }));
- }
-
- private boolean waitForHandleShowingEquals(final boolean shouldBeShowing)
- throws Throwable {
- return CriteriaHelper.pollForCriteria(new Criteria() {
- @Override
- public boolean isSatisfied() {
- InsertionHandleController ihc =
- getContentViewCore().getInsertionHandleControllerForTest();
- boolean isShowing = ihc != null && ihc.isShowing();
- return isShowing == shouldBeShowing;
- }
- });
- }
-
- private void pasteOnMainSync() {
- getInstrumentation().runOnMainSync(new Runnable() {
- @Override
- public void run() {
- getContentViewCore().getInsertionHandleControllerForTest().paste();
- }
- });
- }
-
- private int getSelectionStart() {
- return Selection.getSelectionStart(getEditable());
- }
-
- private int getSelectionEnd() {
- return Selection.getSelectionEnd(getEditable());
- }
-
- private Editable getEditable() {
- return getContentViewCore().getEditableForTest();
- }
-
- private String getEditableText() {
- return getEditable().toString();
- }
-
- private void saveToClipboard(String text) {
- ClipboardManager clipMgr =
- (ClipboardManager) getActivity().getSystemService(Context.CLIPBOARD_SERVICE);
- clipMgr.setPrimaryClip(ClipData.newPlainText(null, text));
- }
-
- private ImeAdapter getImeAdapter() {
- return getContentViewCore().getImeAdapterForTest();
- }
-}

Powered by Google App Engine
This is Rietveld 408576698