summaryrefslogtreecommitdiff
path: root/src/com/android/uiautomator/core/Configurator.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/uiautomator/core/Configurator.java')
-rw-r--r--src/com/android/uiautomator/core/Configurator.java224
1 files changed, 224 insertions, 0 deletions
diff --git a/src/com/android/uiautomator/core/Configurator.java b/src/com/android/uiautomator/core/Configurator.java
new file mode 100644
index 0000000..249f404
--- /dev/null
+++ b/src/com/android/uiautomator/core/Configurator.java
@@ -0,0 +1,224 @@
+/*
+ * Copyright (C) 2013 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 com.android.uiautomator.core;
+
+/**
+ * Allows you to set key parameters for running uiautomator tests. The new
+ * settings take effect immediately and can be changed any time during a test run.
+ *
+ * To modify parameters using Configurator, first obtain an instance by calling
+ * {@link #getInstance()}. As a best practice, make sure you always save
+ * the original value of any parameter that you are modifying. After running your
+ * tests with the modified parameters, make sure to also restore
+ * the original parameter values, otherwise this will impact other tests cases.
+ * @since API Level 18
+ */
+public final class Configurator {
+ private long mWaitForIdleTimeout = 10 * 1000;
+ private long mWaitForSelector = 10 * 1000;
+ private long mWaitForActionAcknowledgment = 3 * 1000;
+
+ // The events for a scroll typically complete even before touchUp occurs.
+ // This short timeout to make sure we get the very last in cases where the above isn't true.
+ private long mScrollEventWaitTimeout = 200; // ms
+
+ // Default is inject as fast as we can
+ private long mKeyInjectionDelay = 0; // ms
+
+ // reference to self
+ private static Configurator sConfigurator;
+
+ private Configurator() {
+ /* hide constructor */
+ }
+
+ /**
+ * Retrieves a singleton instance of Configurator.
+ *
+ * @return Configurator instance
+ * @since API Level 18
+ */
+ public static Configurator getInstance() {
+ if (sConfigurator == null) {
+ sConfigurator = new Configurator();
+ }
+ return sConfigurator;
+ }
+
+ /**
+ * Sets the timeout for waiting for the user interface to go into an idle
+ * state before starting a uiautomator action.
+ *
+ * By default, all core uiautomator objects except {@link UiDevice} will perform
+ * this wait before starting to search for the widget specified by the
+ * object's {@link UiSelector}. Once the idle state is detected or the
+ * timeout elapses (whichever occurs first), the object will start to wait
+ * for the selector to find a match.
+ * See {@link #setWaitForSelectorTimeout(long)}
+ *
+ * @param timeout Timeout value in milliseconds
+ * @return self
+ * @since API Level 18
+ */
+ public Configurator setWaitForIdleTimeout(long timeout) {
+ mWaitForIdleTimeout = timeout;
+ return this;
+ }
+
+ /**
+ * Gets the current timeout used for waiting for the user interface to go
+ * into an idle state.
+ *
+ * By default, all core uiautomator objects except {@link UiDevice} will perform
+ * this wait before starting to search for the widget specified by the
+ * object's {@link UiSelector}. Once the idle state is detected or the
+ * timeout elapses (whichever occurs first), the object will start to wait
+ * for the selector to find a match.
+ * See {@link #setWaitForSelectorTimeout(long)}
+ *
+ * @return Current timeout value in milliseconds
+ * @since API Level 18
+ */
+ public long getWaitForIdleTimeout() {
+ return mWaitForIdleTimeout;
+ }
+
+ /**
+ * Sets the timeout for waiting for a widget to become visible in the user
+ * interface so that it can be matched by a selector.
+ *
+ * Because user interface content is dynamic, sometimes a widget may not
+ * be visible immediately and won't be detected by a selector. This timeout
+ * allows the uiautomator framework to wait for a match to be found, up until
+ * the timeout elapses.
+ *
+ * @param timeout Timeout value in milliseconds.
+ * @return self
+ * @since API Level 18
+ */
+ public Configurator setWaitForSelectorTimeout(long timeout) {
+ mWaitForSelector = timeout;
+ return this;
+ }
+
+ /**
+ * Gets the current timeout for waiting for a widget to become visible in
+ * the user interface so that it can be matched by a selector.
+ *
+ * Because user interface content is dynamic, sometimes a widget may not
+ * be visible immediately and won't be detected by a selector. This timeout
+ * allows the uiautomator framework to wait for a match to be found, up until
+ * the timeout elapses.
+ *
+ * @return Current timeout value in milliseconds
+ * @since API Level 18
+ */
+ public long getWaitForSelectorTimeout() {
+ return mWaitForSelector;
+ }
+
+ /**
+ * Sets the timeout for waiting for an acknowledgement of an
+ * uiautomtor scroll swipe action.
+ *
+ * The acknowledgment is an <a href="http://developer.android.com/reference/android/view/accessibility/AccessibilityEvent.html">AccessibilityEvent</a>,
+ * corresponding to the scroll action, that lets the framework determine if
+ * the scroll action was successful. Generally, this timeout should not be modified.
+ * See {@link UiScrollable}
+ *
+ * @param timeout Timeout value in milliseconds
+ * @return self
+ * @since API Level 18
+ */
+ public Configurator setScrollAcknowledgmentTimeout(long timeout) {
+ mScrollEventWaitTimeout = timeout;
+ return this;
+ }
+
+ /**
+ * Gets the timeout for waiting for an acknowledgement of an
+ * uiautomtor scroll swipe action.
+ *
+ * The acknowledgment is an <a href="http://developer.android.com/reference/android/view/accessibility/AccessibilityEvent.html">AccessibilityEvent</a>,
+ * corresponding to the scroll action, that lets the framework determine if
+ * the scroll action was successful. Generally, this timeout should not be modified.
+ * See {@link UiScrollable}
+ *
+ * @return current timeout in milliseconds
+ * @since API Level 18
+ */
+ public long getScrollAcknowledgmentTimeout() {
+ return mScrollEventWaitTimeout;
+ }
+
+ /**
+ * Sets the timeout for waiting for an acknowledgment of generic uiautomator
+ * actions, such as clicks, text setting, and menu presses.
+ *
+ * The acknowledgment is an <a href="http://developer.android.com/reference/android/view/accessibility/AccessibilityEvent.html">AccessibilityEvent</a>,
+ * corresponding to an action, that lets the framework determine if the
+ * action was successful. Generally, this timeout should not be modified.
+ * See {@link UiObject}
+ *
+ * @param timeout Timeout value in milliseconds
+ * @return self
+ * @since API Level 18
+ */
+ public Configurator setActionAcknowledgmentTimeout(long timeout) {
+ mWaitForActionAcknowledgment = timeout;
+ return this;
+ }
+
+ /**
+ * Gets the current timeout for waiting for an acknowledgment of generic
+ * uiautomator actions, such as clicks, text setting, and menu presses.
+ *
+ * The acknowledgment is an <a href="http://developer.android.com/reference/android/view/accessibility/AccessibilityEvent.html">AccessibilityEvent</a>,
+ * corresponding to an action, that lets the framework determine if the
+ * action was successful. Generally, this timeout should not be modified.
+ * See {@link UiObject}
+ *
+ * @return current timeout in milliseconds
+ * @since API Level 18
+ */
+ public long getActionAcknowledgmentTimeout() {
+ return mWaitForActionAcknowledgment;
+ }
+
+ /**
+ * Sets a delay between key presses when injecting text input.
+ * See {@link UiObject#setText(String)}
+ *
+ * @param delay Delay value in milliseconds
+ * @return self
+ * @since API Level 18
+ */
+ public Configurator setKeyInjectionDelay(long delay) {
+ mKeyInjectionDelay = delay;
+ return this;
+ }
+
+ /**
+ * Gets the current delay between key presses when injecting text input.
+ * See {@link UiObject#setText(String)}
+ *
+ * @return current delay in milliseconds
+ * @since API Level 18
+ */
+ public long getKeyInjectionDelay() {
+ return mKeyInjectionDelay;
+ }
+}