diff options
| -rw-r--r-- | core/java/android/app/UiAutomation.java | 31 |
1 files changed, 26 insertions, 5 deletions
diff --git a/core/java/android/app/UiAutomation.java b/core/java/android/app/UiAutomation.java index a9a06dabc049..0db0ed997618 100644 --- a/core/java/android/app/UiAutomation.java +++ b/core/java/android/app/UiAutomation.java @@ -210,23 +210,44 @@ public final class UiAutomation { } /** - * Connects this UiAutomation to the accessibility introspection APIs with default flags. + * Connects this UiAutomation to the accessibility introspection APIs with default flags + * and default timeout. * * @hide */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023) public void connect() { - connect(0); + try { + connectWithTimeout(0, CONNECT_TIMEOUT_MILLIS); + } catch (TimeoutException e) { + throw new RuntimeException(e); + } + } + + /** + * Connects this UiAutomation to the accessibility introspection APIs with default timeout. + * + * @hide + */ + public void connect(int flags) { + try { + connectWithTimeout(flags, CONNECT_TIMEOUT_MILLIS); + } catch (TimeoutException e) { + throw new RuntimeException(e); + } } /** * Connects this UiAutomation to the accessibility introspection APIs. * * @param flags Any flags to apply to the automation as it gets connected + * @param timeoutMillis The wait timeout in milliseconds + * + * @throws TimeoutException If not connected within the timeout * * @hide */ - public void connect(int flags) { + public void connectWithTimeout(int flags, long timeoutMillis) throws TimeoutException { synchronized (mLock) { throwIfConnectedLocked(); if (mIsConnecting) { @@ -254,9 +275,9 @@ public final class UiAutomation { break; } final long elapsedTimeMillis = SystemClock.uptimeMillis() - startTimeMillis; - final long remainingTimeMillis = CONNECT_TIMEOUT_MILLIS - elapsedTimeMillis; + final long remainingTimeMillis = timeoutMillis - elapsedTimeMillis; if (remainingTimeMillis <= 0) { - throw new RuntimeException("Error while connecting " + this); + throw new TimeoutException("Timeout while connecting " + this); } try { mLock.wait(remainingTimeMillis); |