/* * Copyright (C) 2014 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 androidx.test.espresso; import android.view.View; import org.hamcrest.Matcher; /** * Responsible for performing an interaction on the given View element.
* *

This is part of the test framework public API - developers are free to write their own * ViewAction implementations when necessary. When implementing a new ViewAction, follow these * rules: * *

*/ public interface ViewAction { /** * A mechanism for ViewActions to specify what type of views they can operate on. * *

A ViewAction can demand that the view passed to perform meets certain constraints. For * example it may want to ensure the view is already in the viewable physical screen of the device * or is of a certain type. * * @return a * Matcher that will be tested prior to calling perform. */ public Matcher getConstraints(); /** * Returns a description of the view action. The description should not be overly long and should * fit nicely in a sentence like: "performing %description% action on view with id ..." */ public String getDescription(); /** * Performs this action on the given view. * * @param uiController the controller to use to interact with the UI. * @param view the view to act upon. never null. */ public void perform(UiController uiController, View view); }