1/*
2 * Copyright (C) 2013 DroidDriver committers
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
17package com.google.android.droiddriver;
18
19import android.graphics.Bitmap.CompressFormat;
20
21import com.google.android.droiddriver.actions.Action;
22
23/**
24 * Interface for device-wide interaction.
25 */
26public interface UiDevice {
27  /**
28   * Returns whether the screen is on.
29   */
30  boolean isScreenOn();
31
32  /** Wakes up device if the screen is off */
33  void wakeUp();
34
35  /** Puts device to sleep if the screen is on */
36  void sleep();
37
38  /** Simulates pressing "back" button */
39  void pressBack();
40
41  /**
42   * Executes a global action without the context of a certain UiElement.
43   *
44   * @param action The action to execute
45   * @return true if the action is successful
46   */
47  boolean perform(Action action);
48
49  /**
50   * Takes a screenshot of current window and stores it in {@code path} as PNG.
51   * <p>
52   * If this is used in a test which extends
53   * {@link android.test.ActivityInstrumentationTestCase2}, call this before
54   * {@code tearDown()} because {@code tearDown()} finishes activities created
55   * by {@link android.test.ActivityInstrumentationTestCase2#getActivity()}.
56   *
57   * @param path the path of file to save screenshot
58   * @return true if screen shot is created successfully
59   */
60  boolean takeScreenshot(String path);
61
62  /**
63   * Takes a screenshot of current window and stores it in {@code path}. Note
64   * some implementations may not capture everything on the screen, for example
65   * InstrumentationDriver may not see the IME soft keyboard or system content.
66   *
67   * @param path the path of file to save screenshot
68   * @param format The format of the compressed image
69   * @param quality Hint to the compressor, 0-100. 0 meaning compress for small
70   *        size, 100 meaning compress for max quality. Some formats, like PNG
71   *        which is lossless, will ignore the quality setting
72   * @return true if screen shot is created successfully
73   */
74  boolean takeScreenshot(String path, CompressFormat format, int quality);
75}
76