Home | History | Annotate | Download | only in launcherhelper
      1 /*
      2  * Copyright (C) 2015 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 package android.support.test.launcherhelper;
     17 
     18 import android.support.test.uiautomator.BySelector;
     19 import android.support.test.uiautomator.Direction;
     20 import android.support.test.uiautomator.UiDevice;
     21 import android.support.test.uiautomator.UiObject2;
     22 
     23 /**
     24  * Defines the common use cases a launcher UI automation helper should fulfill.
     25  * <p>Class will be instantiated by {@link LauncherStrategyFactory} based on current launcher
     26  * package, and a {@link UiDevice} instance will be provided via {@link #setUiDevice(UiDevice)}
     27  * method.
     28  */
     29 public interface ILauncherStrategy {
     30     public static final long LAUNCH_FAILED_TIMESTAMP = -1;
     31 
     32     /**
     33      * Returns the launcher application package that this {@link ILauncherStrategy} can automate
     34      * @return
     35      */
     36     public String getSupportedLauncherPackage();
     37 
     38     /**
     39      * Injects a {@link UiDevice} instance for UI interactions
     40      * @param uiDevice
     41      */
     42     public void setUiDevice(UiDevice uiDevice);
     43 
     44     /**
     45      * Shows the home screen of launcher
     46      */
     47     public void open();
     48 
     49     /**
     50      * Opens the all apps drawer of launcher
     51      * @param reset if the all apps drawer should be reset to the beginning
     52      * @return {@link UiObject2} representation of the all apps drawer
     53      */
     54     public UiObject2 openAllApps(boolean reset);
     55 
     56     /**
     57      * Returns a {@link BySelector} describing the button to open the all apps drawer
     58      * @return
     59      */
     60     public BySelector getAllAppsButtonSelector();
     61 
     62     /**
     63      * Returns a {@link BySelector} describing the all apps drawer
     64      * @return
     65      */
     66     public BySelector getAllAppsSelector();
     67 
     68     /**
     69      * Retrieves the all apps drawer forward scroll direction as implemented by the launcher
     70      * @return
     71      */
     72     public Direction getAllAppsScrollDirection();
     73 
     74     /**
     75      * Opens the all widgets drawer of launcher
     76      * @param reset if the all widgets drawer should be reset to the beginning
     77      * @return {@link UiObject2} representation of the all widgets drawer
     78      */
     79     public UiObject2 openAllWidgets(boolean reset);
     80 
     81     /**
     82      * Returns a {@link BySelector} describing the all widgets drawer
     83      * @return
     84      */
     85     public BySelector getAllWidgetsSelector();
     86 
     87     /**
     88      * Retrieves the all widgets drawer forward scroll direction as implemented by the launcher
     89      * @return
     90      */
     91     public Direction getAllWidgetsScrollDirection();
     92 
     93     /**
     94      * Returns a {@link BySelector} describing the home screen workspace
     95      * @return
     96      */
     97     public BySelector getWorkspaceSelector();
     98 
     99     /**
    100      * Returns a {@link BySelector} describing the home screen hot seat (app icons at the bottom)
    101      * @return
    102      */
    103     public BySelector getHotSeatSelector();
    104 
    105     /**
    106      * Retrieves the home screen workspace forward scroll direction as implemented by the launcher
    107      * @return
    108      */
    109     public Direction getWorkspaceScrollDirection();
    110 
    111     /**
    112      * Launch the named application
    113      * @param appName the name of the application to launch as shown in launcher
    114      * @param packageName the expected package name to verify that the application has been launched
    115      *                    into foreground. If <code>null</code> is provided, no verification is
    116      *                    performed.
    117      * @return <code>true</code> if application is verified to be in foreground after launch, or the
    118      *   verification is skipped; <code>false</code> otherwise.
    119      */
    120     public long launch(String appName, String packageName);
    121 }
    122