Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 75aee0a6 authored by Keisuke Kuroyanagi's avatar Keisuke Kuroyanagi Committed by Android (Google) Code Review
Browse files

Merge "Make TextViewActivityTest stable by sleeping between clicks." into nyc-dev

parents fc1d11ed 5f318b62
Loading
Loading
Loading
Loading
+5 −14
Original line number Diff line number Diff line
@@ -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);
    }
}
+3 −8
Original line number Diff line number Diff line
@@ -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));
    }

    /**
+61 −0
Original line number Diff line number Diff line
/*
 * 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);
        }
    }
}