diff options
| author | 2016-04-01 19:16:31 +0900 | |
|---|---|---|
| committer | 2016-04-01 19:16:31 +0900 | |
| commit | 5f318b62853495f286e011de9cb1571e22431314 (patch) | |
| tree | e98ddf0436f010b461a7542c205d91ca9db7310c | |
| parent | e5c431ccc02c16571750dd465cc3d91f7216e7d0 (diff) | |
Make TextViewActivityTest stable by sleeping between clicks.
Bug: 27893257
Change-Id: I2eaaa38b4af9333a46a8702098b4ec0806def538
3 files changed, 69 insertions, 22 deletions
diff --git a/core/tests/coretests/src/android/widget/espresso/MouseClickAction.java b/core/tests/coretests/src/android/widget/espresso/MouseClickAction.java index b8ea2de3abfd..bec4180cc1f4 100644 --- a/core/tests/coretests/src/android/widget/espresso/MouseClickAction.java +++ b/core/tests/coretests/src/android/widget/espresso/MouseClickAction.java @@ -21,7 +21,6 @@ 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.MotionEvents; import android.support.test.espresso.action.MotionEvents.DownResultHolder; import android.support.test.espresso.action.Press; @@ -34,7 +33,7 @@ import android.view.ViewConfiguration; * ViewAction for performing an click on View by a mouse. */ public final class MouseClickAction implements ViewAction { - private final GeneralClickAction mGeneralClickAction; + private final ViewClickAction mViewClickAction; @MouseUiController.MouseButton private final int mButton; @@ -100,30 +99,22 @@ public final class MouseClickAction implements ViewAction { */ public MouseClickAction(Tapper tapper, CoordinatesProvider coordinatesProvider, @MouseUiController.MouseButton int button) { - mGeneralClickAction = new GeneralClickAction(tapper, coordinatesProvider, Press.PINPOINT); + mViewClickAction = new ViewClickAction(tapper, coordinatesProvider, Press.PINPOINT); mButton = button; } @Override public Matcher<View> getConstraints() { - return mGeneralClickAction.getConstraints(); + return mViewClickAction.getConstraints(); } @Override public String getDescription() { - return mGeneralClickAction.getDescription(); + return mViewClickAction.getDescription(); } @Override public void perform(UiController uiController, View view) { - mGeneralClickAction.perform(new MouseUiController(uiController, mButton), view); - long doubleTapTimeout = ViewConfiguration.getDoubleTapTimeout(); - if (0 < doubleTapTimeout) { - // Wait to avoid false gesture detection. Without this wait, consecutive clicks can be - // detected as a triple click. e.g. 2 double clicks are detected as a triple click and - // a single click because espresso isn't aware of triple click detection logic, which - // is TextView specific gesture. - uiController.loopMainThreadForAtLeast(doubleTapTimeout); - } + mViewClickAction.perform(new MouseUiController(uiController, mButton), view); } } diff --git a/core/tests/coretests/src/android/widget/espresso/TextViewActions.java b/core/tests/coretests/src/android/widget/espresso/TextViewActions.java index 4cecb65f5fa3..335d021efd14 100644 --- a/core/tests/coretests/src/android/widget/espresso/TextViewActions.java +++ b/core/tests/coretests/src/android/widget/espresso/TextViewActions.java @@ -17,15 +17,10 @@ package android.widget.espresso; import static android.support.test.espresso.action.ViewActions.actionWithAssertions; - -import org.hamcrest.core.Is; -import org.hamcrest.core.IsInstanceOf; - import android.graphics.Rect; import android.support.test.espresso.PerformException; 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.Press; import android.support.test.espresso.action.Tap; import android.support.test.espresso.util.HumanReadables; @@ -55,7 +50,7 @@ public final class TextViewActions { */ public static ViewAction clickOnTextAtIndex(int index) { return actionWithAssertions( - new GeneralClickAction(Tap.SINGLE, new TextCoordinates(index), Press.FINGER)); + new ViewClickAction(Tap.SINGLE, new TextCoordinates(index), Press.FINGER)); } /** @@ -101,7 +96,7 @@ public final class TextViewActions { */ public static ViewAction doubleClickOnTextAtIndex(int index) { return actionWithAssertions( - new GeneralClickAction(Tap.DOUBLE, new TextCoordinates(index), Press.FINGER)); + new ViewClickAction(Tap.DOUBLE, new TextCoordinates(index), Press.FINGER)); } /** @@ -131,7 +126,7 @@ public final class TextViewActions { */ public static ViewAction longPressOnTextAtIndex(int index) { return actionWithAssertions( - new GeneralClickAction(Tap.LONG, new TextCoordinates(index), Press.FINGER)); + new ViewClickAction(Tap.LONG, new TextCoordinates(index), Press.FINGER)); } /** diff --git a/core/tests/coretests/src/android/widget/espresso/ViewClickAction.java b/core/tests/coretests/src/android/widget/espresso/ViewClickAction.java new file mode 100644 index 000000000000..8bce1b09517b --- /dev/null +++ b/core/tests/coretests/src/android/widget/espresso/ViewClickAction.java @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2016 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; +import android.view.ViewConfiguration; + +public final class ViewClickAction implements ViewAction { + private final GeneralClickAction mGeneralClickAction; + + public ViewClickAction(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(uiController, view); + long doubleTapTimeout = ViewConfiguration.getDoubleTapTimeout(); + if (0 < doubleTapTimeout) { + // Wait to avoid false gesture detection. Without this wait, consecutive clicks can be + // detected as a double click or triple click. e.g. 2 double clicks on TextView are + // detected as a triple click and a single click because espresso isn't aware of + // TextView specific gestures. + uiController.loopMainThreadForAtLeast(doubleTapTimeout); + } + } +} |