diff options
| author | 2020-03-26 10:05:42 +0800 | |
|---|---|---|
| committer | 2020-10-23 15:23:01 +0000 | |
| commit | 67c91c405c04ed9cf10e1d2a23bded50ce94e7a0 (patch) | |
| tree | ec8c184c4164d0db7777ed7a6a142723f27c6869 | |
| parent | f86143770fdeba9a8b70b54e9710933a11a47f2a (diff) | |
Add #connectWithTimeout (1/n)
Add #connectWithTimeout which allows us to specify the timeout before
giving up the connection. The method throws a TimeoutException so the
caller can catch it and retry connection again.
Note we don't change the exception spec. of #connect in order to be
source and binary compatible.
Bug: 147785023
Test: m
Change-Id: I5ac61ed0aef107f4e38166c0b95bc3a3fb419387
Merged-In: I5ac61ed0aef107f4e38166c0b95bc3a3fb419387
| -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); |