Loading core/tests/coretests/src/android/widget/TextViewActivityMouseTest.java +104 −0 Original line number Diff line number Diff line Loading @@ -16,7 +16,11 @@ package android.widget; import static android.widget.espresso.TextViewActions.mouseDoubleClickOnTextAtIndex; import static android.widget.espresso.TextViewActions.mouseLongClickOnTextAtIndex; import static android.widget.espresso.TextViewActions.mouseDoubleClickAndDragOnText; import static android.widget.espresso.TextViewActions.mouseDragOnText; import static android.widget.espresso.TextViewActions.mouseLongClickAndDragOnText; import static android.widget.espresso.TextViewAssertions.hasSelection; import static android.support.test.espresso.Espresso.onView; import static android.support.test.espresso.action.ViewActions.click; Loading Loading @@ -62,4 +66,104 @@ public class TextViewActivityMouseTest extends ActivityInstrumentationTestCase2< onView(withId(R.id.textview)).check(hasSelection("llo wor")); } @SmallTest public void testSelectTextByLongClick() throws Exception { getActivity(); final String helloWorld = "Hello world!"; onView(withId(R.id.textview)).perform(click()); onView(withId(R.id.textview)).perform(typeTextIntoFocusedView(helloWorld)); onView(withId(R.id.textview)).perform(mouseLongClickOnTextAtIndex(0)); onView(withId(R.id.textview)).check(hasSelection("Hello")); onView(withId(R.id.textview)).perform(mouseLongClickOnTextAtIndex( helloWorld.indexOf("world"))); onView(withId(R.id.textview)).check(hasSelection("world")); onView(withId(R.id.textview)).perform(mouseLongClickOnTextAtIndex( helloWorld.indexOf("llo"))); onView(withId(R.id.textview)).check(hasSelection("Hello")); onView(withId(R.id.textview)).perform(mouseLongClickOnTextAtIndex( helloWorld.indexOf("rld"))); onView(withId(R.id.textview)).check(hasSelection("world")); } @SmallTest public void testSelectTextByDoubleClick() throws Exception { getActivity(); final String helloWorld = "Hello world!"; onView(withId(R.id.textview)).perform(click()); onView(withId(R.id.textview)).perform(typeTextIntoFocusedView(helloWorld)); onView(withId(R.id.textview)).perform(mouseDoubleClickOnTextAtIndex(0)); onView(withId(R.id.textview)).check(hasSelection("Hello")); onView(withId(R.id.textview)).perform(mouseDoubleClickOnTextAtIndex( helloWorld.indexOf("world"))); onView(withId(R.id.textview)).check(hasSelection("world")); onView(withId(R.id.textview)).perform(mouseDoubleClickOnTextAtIndex( helloWorld.indexOf("llo"))); onView(withId(R.id.textview)).check(hasSelection("Hello")); onView(withId(R.id.textview)).perform(mouseDoubleClickOnTextAtIndex( helloWorld.indexOf("rld"))); onView(withId(R.id.textview)).check(hasSelection("world")); } @SmallTest public void testSelectTextByDoubleClickAndDrag() throws Exception { getActivity(); final String text = "abcd efg hijk lmn"; onView(withId(R.id.textview)).perform(click()); onView(withId(R.id.textview)).perform(typeTextIntoFocusedView(text)); onView(withId(R.id.textview)).perform( mouseDoubleClickAndDragOnText(text.indexOf("f"), text.indexOf("j"))); onView(withId(R.id.textview)).check(hasSelection("efg hijk")); } @SmallTest public void testSelectTextByDoubleClickAndDrag_reverse() throws Exception { getActivity(); final String text = "abcd efg hijk lmn"; onView(withId(R.id.textview)).perform(click()); onView(withId(R.id.textview)).perform(typeTextIntoFocusedView(text)); onView(withId(R.id.textview)).perform( mouseDoubleClickAndDragOnText(text.indexOf("j"), text.indexOf("f"))); onView(withId(R.id.textview)).check(hasSelection("efg hijk")); } @SmallTest public void testSelectTextByLongPressAndDrag() throws Exception { getActivity(); final String text = "abcd efg hijk lmn"; onView(withId(R.id.textview)).perform(click()); onView(withId(R.id.textview)).perform(typeTextIntoFocusedView(text)); onView(withId(R.id.textview)).perform( mouseLongClickAndDragOnText(text.indexOf("f"), text.indexOf("j"))); onView(withId(R.id.textview)).check(hasSelection("efg hijk")); } @SmallTest public void testSelectTextByLongPressAndDrag_reverse() throws Exception { getActivity(); final String text = "abcd efg hijk lmn"; onView(withId(R.id.textview)).perform(click()); onView(withId(R.id.textview)).perform(typeTextIntoFocusedView(text)); onView(withId(R.id.textview)).perform( mouseLongClickAndDragOnText(text.indexOf("j"), text.indexOf("f"))); onView(withId(R.id.textview)).check(hasSelection("efg hijk")); } } core/tests/coretests/src/android/widget/espresso/DragAction.java +105 −28 Original line number Diff line number Diff line Loading @@ -90,6 +90,72 @@ public final class DragAction implements ViewAction { } }, /** * Starts a drag with a mouse double click. */ MOUSE_DOUBLE_CLICK { private DownMotionPerformer downMotion = new DownMotionPerformer() { @Override @Nullable public MotionEvent perform( UiController uiController, float[] coordinates, float[] precision) { return performDoubleTap(uiController, coordinates, precision); } }; @Override public Status sendSwipe( UiController uiController, float[] startCoordinates, float[] endCoordinates, float[] precision) { return sendLinearDrag( uiController, downMotion, startCoordinates, endCoordinates, precision); } @Override public String toString() { return "mouse double click and drag to select"; } @Override public UiController wrapUiController(UiController uiController) { return new MouseUiController(uiController); } }, /** * Starts a drag with a mouse long click. */ MOUSE_LONG_CLICK { private DownMotionPerformer downMotion = new DownMotionPerformer() { @Override public MotionEvent perform( UiController uiController, float[] coordinates, float[] precision) { MotionEvent downEvent = MotionEvents.sendDown( uiController, coordinates, precision) .down; return performLongPress(uiController, coordinates, precision); } }; @Override public Status sendSwipe( UiController uiController, float[] startCoordinates, float[] endCoordinates, float[] precision) { return sendLinearDrag( uiController, downMotion, startCoordinates, endCoordinates, precision); } @Override public String toString() { return "mouse long click and drag to select"; } @Override public UiController wrapUiController(UiController uiController) { return new MouseUiController(uiController); } }, /** * Starts a drag with a tap. */ Loading Loading @@ -127,15 +193,7 @@ public final class DragAction implements ViewAction { @Override public MotionEvent perform( UiController uiController, float[] coordinates, float[] precision) { MotionEvent downEvent = MotionEvents.sendDown( uiController, coordinates, precision) .down; // Duration before a press turns into a long press. // Factor 1.5 is needed, otherwise a long press is not safely detected. // See android.test.TouchUtils longClickView long longPressTimeout = (long) (ViewConfiguration.getLongPressTimeout() * 1.5f); uiController.loopMainThreadForAtLeast(longPressTimeout); return downEvent; return performLongPress(uiController, coordinates, precision); } }; Loading @@ -162,25 +220,7 @@ public final class DragAction implements ViewAction { @Nullable public MotionEvent perform( UiController uiController, float[] coordinates, float[] precision) { MotionEvent downEvent = MotionEvents.sendDown( uiController, coordinates, precision) .down; try { if (!MotionEvents.sendUp(uiController, downEvent)) { String logMessage = "Injection of up event as part of the double tap " + "failed. Sending cancel event."; Log.d(TAG, logMessage); MotionEvents.sendCancel(uiController, downEvent); return null; } long doubleTapMinimumTimeout = ViewConfiguration.getDoubleTapMinTime(); uiController.loopMainThreadForAtLeast(doubleTapMinimumTimeout); return MotionEvents.sendDown(uiController, coordinates, precision).down; } finally { downEvent.recycle(); } return performDoubleTap(uiController, coordinates, precision); } }; Loading Loading @@ -267,6 +307,43 @@ public final class DragAction implements ViewAction { return res; } private static MotionEvent performLongPress( UiController uiController, float[] coordinates, float[] precision) { MotionEvent downEvent = MotionEvents.sendDown( uiController, coordinates, precision) .down; // Duration before a press turns into a long press. // Factor 1.5 is needed, otherwise a long press is not safely detected. // See android.test.TouchUtils longClickView long longPressTimeout = (long) (ViewConfiguration.getLongPressTimeout() * 1.5f); uiController.loopMainThreadForAtLeast(longPressTimeout); return downEvent; } @Nullable private static MotionEvent performDoubleTap( UiController uiController, float[] coordinates, float[] precision) { MotionEvent downEvent = MotionEvents.sendDown( uiController, coordinates, precision) .down; try { if (!MotionEvents.sendUp(uiController, downEvent)) { String logMessage = "Injection of up event as part of the double tap " + "failed. Sending cancel event."; Log.d(TAG, logMessage); MotionEvents.sendCancel(uiController, downEvent); return null; } long doubleTapMinimumTimeout = ViewConfiguration.getDoubleTapMinTime(); uiController.loopMainThreadForAtLeast(doubleTapMinimumTimeout); return MotionEvents.sendDown(uiController, coordinates, precision).down; } finally { downEvent.recycle(); } } @Override public UiController wrapUiController(UiController uiController) { return uiController; Loading core/tests/coretests/src/android/widget/espresso/MouseClickAction.java 0 → 100644 +55 −0 Original line number Diff line number Diff line /* * Copyright (C) 2015 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License */ package android.widget.espresso; import org.hamcrest.Matcher; import android.support.test.espresso.UiController; import android.support.test.espresso.ViewAction; import android.support.test.espresso.action.CoordinatesProvider; import android.support.test.espresso.action.GeneralClickAction; import android.support.test.espresso.action.PrecisionDescriber; import android.support.test.espresso.action.Tapper; import android.view.View; /** * ViewAction for performing an click on View by a mouse. */ public final class MouseClickAction implements ViewAction { private final GeneralClickAction mGeneralClickAction; public MouseClickAction(Tapper tapper, CoordinatesProvider coordinatesProvider, PrecisionDescriber precisionDescriber) { mGeneralClickAction = new GeneralClickAction(tapper, coordinatesProvider, precisionDescriber); } @Override public Matcher<View> getConstraints() { return mGeneralClickAction.getConstraints(); } @Override public String getDescription() { return mGeneralClickAction.getDescription(); } @Override public void perform(UiController uiController, View view) { mGeneralClickAction.perform(new MouseUiController(uiController), view); } } core/tests/coretests/src/android/widget/espresso/TextViewActions.java +89 −0 Original line number Diff line number Diff line Loading @@ -52,6 +52,21 @@ public final class TextViewActions { new GeneralClickAction(Tap.SINGLE, new TextCoordinates(index), Press.FINGER)); } /** * Returns an action that clicks by mouse on text at an index on the TextView.<br> * <br> * View constraints: * <ul> * <li>must be a TextView displayed on screen * <ul> * * @param index The index of the TextView's text to click on. */ public static ViewAction mouseClickOnTextAtIndex(int index) { return actionWithAssertions( new MouseClickAction(Tap.SINGLE, new TextCoordinates(index), Press.PINPOINT)); } /** * Returns an action that double-clicks on text at an index on the TextView.<br> * <br> Loading @@ -67,6 +82,21 @@ public final class TextViewActions { new GeneralClickAction(Tap.DOUBLE, new TextCoordinates(index), Press.FINGER)); } /** * Returns an action that double-clicks by mouse on text at an index on the TextView.<br> * <br> * View constraints: * <ul> * <li>must be a TextView displayed on screen * <ul> * * @param index The index of the TextView's text to double-click on. */ public static ViewAction mouseDoubleClickOnTextAtIndex(int index) { return actionWithAssertions( new MouseClickAction(Tap.DOUBLE, new TextCoordinates(index), Press.PINPOINT)); } /** * Returns an action that long presses on text at an index on the TextView.<br> * <br> Loading @@ -82,6 +112,21 @@ public final class TextViewActions { new GeneralClickAction(Tap.LONG, new TextCoordinates(index), Press.FINGER)); } /** * Returns an action that long click by mouse on text at an index on the TextView.<br> * <br> * View constraints: * <ul> * <li>must be a TextView displayed on screen * <ul> * * @param index The index of the TextView's text to long click on. */ public static ViewAction mouseLongClickOnTextAtIndex(int index) { return actionWithAssertions( new MouseClickAction(Tap.LONG, new TextCoordinates(index), Press.PINPOINT)); } /** * Returns an action that long presses then drags on text from startIndex to endIndex on the * TextView.<br> Loading Loading @@ -148,6 +193,50 @@ public final class TextViewActions { TextView.class)); } /** * Returns an action that double click then drags by mouse on text from startIndex to endIndex * on the TextView.<br> * <br> * View constraints: * <ul> * <li>must be a TextView displayed on screen * <ul> * * @param startIndex The index of the TextView's text to start a drag from * @param endIndex The index of the TextView's text to end the drag at */ public static ViewAction mouseDoubleClickAndDragOnText(int startIndex, int endIndex) { return actionWithAssertions( new DragAction( DragAction.Drag.MOUSE_DOUBLE_CLICK, new TextCoordinates(startIndex), new TextCoordinates(endIndex), Press.PINPOINT, TextView.class)); } /** * Returns an action that long click then drags by mouse on text from startIndex to endIndex * on the TextView.<br> * <br> * View constraints: * <ul> * <li>must be a TextView displayed on screen * <ul> * * @param startIndex The index of the TextView's text to start a drag from * @param endIndex The index of the TextView's text to end the drag at */ public static ViewAction mouseLongClickAndDragOnText(int startIndex, int endIndex) { return actionWithAssertions( new DragAction( DragAction.Drag.MOUSE_LONG_CLICK, new TextCoordinates(startIndex), new TextCoordinates(endIndex), Press.PINPOINT, TextView.class)); } public enum Handle { SELECTION_START, SELECTION_END, Loading Loading
core/tests/coretests/src/android/widget/TextViewActivityMouseTest.java +104 −0 Original line number Diff line number Diff line Loading @@ -16,7 +16,11 @@ package android.widget; import static android.widget.espresso.TextViewActions.mouseDoubleClickOnTextAtIndex; import static android.widget.espresso.TextViewActions.mouseLongClickOnTextAtIndex; import static android.widget.espresso.TextViewActions.mouseDoubleClickAndDragOnText; import static android.widget.espresso.TextViewActions.mouseDragOnText; import static android.widget.espresso.TextViewActions.mouseLongClickAndDragOnText; import static android.widget.espresso.TextViewAssertions.hasSelection; import static android.support.test.espresso.Espresso.onView; import static android.support.test.espresso.action.ViewActions.click; Loading Loading @@ -62,4 +66,104 @@ public class TextViewActivityMouseTest extends ActivityInstrumentationTestCase2< onView(withId(R.id.textview)).check(hasSelection("llo wor")); } @SmallTest public void testSelectTextByLongClick() throws Exception { getActivity(); final String helloWorld = "Hello world!"; onView(withId(R.id.textview)).perform(click()); onView(withId(R.id.textview)).perform(typeTextIntoFocusedView(helloWorld)); onView(withId(R.id.textview)).perform(mouseLongClickOnTextAtIndex(0)); onView(withId(R.id.textview)).check(hasSelection("Hello")); onView(withId(R.id.textview)).perform(mouseLongClickOnTextAtIndex( helloWorld.indexOf("world"))); onView(withId(R.id.textview)).check(hasSelection("world")); onView(withId(R.id.textview)).perform(mouseLongClickOnTextAtIndex( helloWorld.indexOf("llo"))); onView(withId(R.id.textview)).check(hasSelection("Hello")); onView(withId(R.id.textview)).perform(mouseLongClickOnTextAtIndex( helloWorld.indexOf("rld"))); onView(withId(R.id.textview)).check(hasSelection("world")); } @SmallTest public void testSelectTextByDoubleClick() throws Exception { getActivity(); final String helloWorld = "Hello world!"; onView(withId(R.id.textview)).perform(click()); onView(withId(R.id.textview)).perform(typeTextIntoFocusedView(helloWorld)); onView(withId(R.id.textview)).perform(mouseDoubleClickOnTextAtIndex(0)); onView(withId(R.id.textview)).check(hasSelection("Hello")); onView(withId(R.id.textview)).perform(mouseDoubleClickOnTextAtIndex( helloWorld.indexOf("world"))); onView(withId(R.id.textview)).check(hasSelection("world")); onView(withId(R.id.textview)).perform(mouseDoubleClickOnTextAtIndex( helloWorld.indexOf("llo"))); onView(withId(R.id.textview)).check(hasSelection("Hello")); onView(withId(R.id.textview)).perform(mouseDoubleClickOnTextAtIndex( helloWorld.indexOf("rld"))); onView(withId(R.id.textview)).check(hasSelection("world")); } @SmallTest public void testSelectTextByDoubleClickAndDrag() throws Exception { getActivity(); final String text = "abcd efg hijk lmn"; onView(withId(R.id.textview)).perform(click()); onView(withId(R.id.textview)).perform(typeTextIntoFocusedView(text)); onView(withId(R.id.textview)).perform( mouseDoubleClickAndDragOnText(text.indexOf("f"), text.indexOf("j"))); onView(withId(R.id.textview)).check(hasSelection("efg hijk")); } @SmallTest public void testSelectTextByDoubleClickAndDrag_reverse() throws Exception { getActivity(); final String text = "abcd efg hijk lmn"; onView(withId(R.id.textview)).perform(click()); onView(withId(R.id.textview)).perform(typeTextIntoFocusedView(text)); onView(withId(R.id.textview)).perform( mouseDoubleClickAndDragOnText(text.indexOf("j"), text.indexOf("f"))); onView(withId(R.id.textview)).check(hasSelection("efg hijk")); } @SmallTest public void testSelectTextByLongPressAndDrag() throws Exception { getActivity(); final String text = "abcd efg hijk lmn"; onView(withId(R.id.textview)).perform(click()); onView(withId(R.id.textview)).perform(typeTextIntoFocusedView(text)); onView(withId(R.id.textview)).perform( mouseLongClickAndDragOnText(text.indexOf("f"), text.indexOf("j"))); onView(withId(R.id.textview)).check(hasSelection("efg hijk")); } @SmallTest public void testSelectTextByLongPressAndDrag_reverse() throws Exception { getActivity(); final String text = "abcd efg hijk lmn"; onView(withId(R.id.textview)).perform(click()); onView(withId(R.id.textview)).perform(typeTextIntoFocusedView(text)); onView(withId(R.id.textview)).perform( mouseLongClickAndDragOnText(text.indexOf("j"), text.indexOf("f"))); onView(withId(R.id.textview)).check(hasSelection("efg hijk")); } }
core/tests/coretests/src/android/widget/espresso/DragAction.java +105 −28 Original line number Diff line number Diff line Loading @@ -90,6 +90,72 @@ public final class DragAction implements ViewAction { } }, /** * Starts a drag with a mouse double click. */ MOUSE_DOUBLE_CLICK { private DownMotionPerformer downMotion = new DownMotionPerformer() { @Override @Nullable public MotionEvent perform( UiController uiController, float[] coordinates, float[] precision) { return performDoubleTap(uiController, coordinates, precision); } }; @Override public Status sendSwipe( UiController uiController, float[] startCoordinates, float[] endCoordinates, float[] precision) { return sendLinearDrag( uiController, downMotion, startCoordinates, endCoordinates, precision); } @Override public String toString() { return "mouse double click and drag to select"; } @Override public UiController wrapUiController(UiController uiController) { return new MouseUiController(uiController); } }, /** * Starts a drag with a mouse long click. */ MOUSE_LONG_CLICK { private DownMotionPerformer downMotion = new DownMotionPerformer() { @Override public MotionEvent perform( UiController uiController, float[] coordinates, float[] precision) { MotionEvent downEvent = MotionEvents.sendDown( uiController, coordinates, precision) .down; return performLongPress(uiController, coordinates, precision); } }; @Override public Status sendSwipe( UiController uiController, float[] startCoordinates, float[] endCoordinates, float[] precision) { return sendLinearDrag( uiController, downMotion, startCoordinates, endCoordinates, precision); } @Override public String toString() { return "mouse long click and drag to select"; } @Override public UiController wrapUiController(UiController uiController) { return new MouseUiController(uiController); } }, /** * Starts a drag with a tap. */ Loading Loading @@ -127,15 +193,7 @@ public final class DragAction implements ViewAction { @Override public MotionEvent perform( UiController uiController, float[] coordinates, float[] precision) { MotionEvent downEvent = MotionEvents.sendDown( uiController, coordinates, precision) .down; // Duration before a press turns into a long press. // Factor 1.5 is needed, otherwise a long press is not safely detected. // See android.test.TouchUtils longClickView long longPressTimeout = (long) (ViewConfiguration.getLongPressTimeout() * 1.5f); uiController.loopMainThreadForAtLeast(longPressTimeout); return downEvent; return performLongPress(uiController, coordinates, precision); } }; Loading @@ -162,25 +220,7 @@ public final class DragAction implements ViewAction { @Nullable public MotionEvent perform( UiController uiController, float[] coordinates, float[] precision) { MotionEvent downEvent = MotionEvents.sendDown( uiController, coordinates, precision) .down; try { if (!MotionEvents.sendUp(uiController, downEvent)) { String logMessage = "Injection of up event as part of the double tap " + "failed. Sending cancel event."; Log.d(TAG, logMessage); MotionEvents.sendCancel(uiController, downEvent); return null; } long doubleTapMinimumTimeout = ViewConfiguration.getDoubleTapMinTime(); uiController.loopMainThreadForAtLeast(doubleTapMinimumTimeout); return MotionEvents.sendDown(uiController, coordinates, precision).down; } finally { downEvent.recycle(); } return performDoubleTap(uiController, coordinates, precision); } }; Loading Loading @@ -267,6 +307,43 @@ public final class DragAction implements ViewAction { return res; } private static MotionEvent performLongPress( UiController uiController, float[] coordinates, float[] precision) { MotionEvent downEvent = MotionEvents.sendDown( uiController, coordinates, precision) .down; // Duration before a press turns into a long press. // Factor 1.5 is needed, otherwise a long press is not safely detected. // See android.test.TouchUtils longClickView long longPressTimeout = (long) (ViewConfiguration.getLongPressTimeout() * 1.5f); uiController.loopMainThreadForAtLeast(longPressTimeout); return downEvent; } @Nullable private static MotionEvent performDoubleTap( UiController uiController, float[] coordinates, float[] precision) { MotionEvent downEvent = MotionEvents.sendDown( uiController, coordinates, precision) .down; try { if (!MotionEvents.sendUp(uiController, downEvent)) { String logMessage = "Injection of up event as part of the double tap " + "failed. Sending cancel event."; Log.d(TAG, logMessage); MotionEvents.sendCancel(uiController, downEvent); return null; } long doubleTapMinimumTimeout = ViewConfiguration.getDoubleTapMinTime(); uiController.loopMainThreadForAtLeast(doubleTapMinimumTimeout); return MotionEvents.sendDown(uiController, coordinates, precision).down; } finally { downEvent.recycle(); } } @Override public UiController wrapUiController(UiController uiController) { return uiController; Loading
core/tests/coretests/src/android/widget/espresso/MouseClickAction.java 0 → 100644 +55 −0 Original line number Diff line number Diff line /* * Copyright (C) 2015 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License */ package android.widget.espresso; import org.hamcrest.Matcher; import android.support.test.espresso.UiController; import android.support.test.espresso.ViewAction; import android.support.test.espresso.action.CoordinatesProvider; import android.support.test.espresso.action.GeneralClickAction; import android.support.test.espresso.action.PrecisionDescriber; import android.support.test.espresso.action.Tapper; import android.view.View; /** * ViewAction for performing an click on View by a mouse. */ public final class MouseClickAction implements ViewAction { private final GeneralClickAction mGeneralClickAction; public MouseClickAction(Tapper tapper, CoordinatesProvider coordinatesProvider, PrecisionDescriber precisionDescriber) { mGeneralClickAction = new GeneralClickAction(tapper, coordinatesProvider, precisionDescriber); } @Override public Matcher<View> getConstraints() { return mGeneralClickAction.getConstraints(); } @Override public String getDescription() { return mGeneralClickAction.getDescription(); } @Override public void perform(UiController uiController, View view) { mGeneralClickAction.perform(new MouseUiController(uiController), view); } }
core/tests/coretests/src/android/widget/espresso/TextViewActions.java +89 −0 Original line number Diff line number Diff line Loading @@ -52,6 +52,21 @@ public final class TextViewActions { new GeneralClickAction(Tap.SINGLE, new TextCoordinates(index), Press.FINGER)); } /** * Returns an action that clicks by mouse on text at an index on the TextView.<br> * <br> * View constraints: * <ul> * <li>must be a TextView displayed on screen * <ul> * * @param index The index of the TextView's text to click on. */ public static ViewAction mouseClickOnTextAtIndex(int index) { return actionWithAssertions( new MouseClickAction(Tap.SINGLE, new TextCoordinates(index), Press.PINPOINT)); } /** * Returns an action that double-clicks on text at an index on the TextView.<br> * <br> Loading @@ -67,6 +82,21 @@ public final class TextViewActions { new GeneralClickAction(Tap.DOUBLE, new TextCoordinates(index), Press.FINGER)); } /** * Returns an action that double-clicks by mouse on text at an index on the TextView.<br> * <br> * View constraints: * <ul> * <li>must be a TextView displayed on screen * <ul> * * @param index The index of the TextView's text to double-click on. */ public static ViewAction mouseDoubleClickOnTextAtIndex(int index) { return actionWithAssertions( new MouseClickAction(Tap.DOUBLE, new TextCoordinates(index), Press.PINPOINT)); } /** * Returns an action that long presses on text at an index on the TextView.<br> * <br> Loading @@ -82,6 +112,21 @@ public final class TextViewActions { new GeneralClickAction(Tap.LONG, new TextCoordinates(index), Press.FINGER)); } /** * Returns an action that long click by mouse on text at an index on the TextView.<br> * <br> * View constraints: * <ul> * <li>must be a TextView displayed on screen * <ul> * * @param index The index of the TextView's text to long click on. */ public static ViewAction mouseLongClickOnTextAtIndex(int index) { return actionWithAssertions( new MouseClickAction(Tap.LONG, new TextCoordinates(index), Press.PINPOINT)); } /** * Returns an action that long presses then drags on text from startIndex to endIndex on the * TextView.<br> Loading Loading @@ -148,6 +193,50 @@ public final class TextViewActions { TextView.class)); } /** * Returns an action that double click then drags by mouse on text from startIndex to endIndex * on the TextView.<br> * <br> * View constraints: * <ul> * <li>must be a TextView displayed on screen * <ul> * * @param startIndex The index of the TextView's text to start a drag from * @param endIndex The index of the TextView's text to end the drag at */ public static ViewAction mouseDoubleClickAndDragOnText(int startIndex, int endIndex) { return actionWithAssertions( new DragAction( DragAction.Drag.MOUSE_DOUBLE_CLICK, new TextCoordinates(startIndex), new TextCoordinates(endIndex), Press.PINPOINT, TextView.class)); } /** * Returns an action that long click then drags by mouse on text from startIndex to endIndex * on the TextView.<br> * <br> * View constraints: * <ul> * <li>must be a TextView displayed on screen * <ul> * * @param startIndex The index of the TextView's text to start a drag from * @param endIndex The index of the TextView's text to end the drag at */ public static ViewAction mouseLongClickAndDragOnText(int startIndex, int endIndex) { return actionWithAssertions( new DragAction( DragAction.Drag.MOUSE_LONG_CLICK, new TextCoordinates(startIndex), new TextCoordinates(endIndex), Press.PINPOINT, TextView.class)); } public enum Handle { SELECTION_START, SELECTION_END, Loading