diff options
author | Daniel Norman <danielnorman@google.com> | 2021-02-19 00:13:26 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2021-02-19 00:13:26 +0000 |
commit | ba754c5bbb7390102025361188754de381114ec7 (patch) | |
tree | c52bca988b3ba4300e867c7c6e1305c0e8c4883f /keystore/java/android/security/KeyStoreSecurityLevel.java | |
parent | 3e4a96d4914067cc746fcc8cb97a6816b43f62f7 (diff) | |
parent | 6cdf1484e28507966ce7807613572d462e7a0bd6 (diff) |
Merge changes from topic "SP1A.210208.001" into s-keystone-qcom-dev
* changes:
Prevent null access in ConnectivityService when mOldNetwork is null.
Stops calling AImageDecoder_delete to hide bootanim error.
Re-apply value add in setMobileDataIndicators() to new test.
Adapt to NetworkRequestInfo request becoming a requests list.
Hides ProcessRecord SeempLog message after refactoring.
Removes try-catch when calling removeCapabilitiesCallback.
Merge SP1A.210208.001
Diffstat (limited to 'keystore/java/android/security/KeyStoreSecurityLevel.java')
-rw-r--r-- | keystore/java/android/security/KeyStoreSecurityLevel.java | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/keystore/java/android/security/KeyStoreSecurityLevel.java b/keystore/java/android/security/KeyStoreSecurityLevel.java index 3ef4aa5b7ec3..372add9b7ecb 100644 --- a/keystore/java/android/security/KeyStoreSecurityLevel.java +++ b/keystore/java/android/security/KeyStoreSecurityLevel.java @@ -52,7 +52,7 @@ public class KeyStoreSecurityLevel { try { return request.execute(); } catch (ServiceSpecificException e) { - throw new KeyStoreException(e.errorCode, ""); + throw KeyStore2.getKeyStoreException(e.errorCode); } catch (RemoteException e) { // Log exception and report invalid operation handle. // This should prompt the caller drop the reference to this operation and retry. @@ -96,25 +96,26 @@ public class KeyStoreSecurityLevel { } catch (ServiceSpecificException e) { switch (e.errorCode) { case ResponseCode.BACKEND_BUSY: { + long backOffHint = (long) (Math.random() * 80 + 20); if (CompatChanges.isChangeEnabled( KeyStore2.KEYSTORE_OPERATION_CREATION_MAY_FAIL)) { // Starting with Android S we inform the caller about the // backend being busy. - throw new BackendBusyException(); + throw new BackendBusyException(backOffHint); } else { // Before Android S operation creation must always succeed. So we // just have to retry. We do so with a randomized back-off between - // 50 and 250ms. + // 20 and 100ms. // It is a little awkward that we cannot break out of this loop // by interrupting this thread. But that is the expected behavior. // There is some comfort in the fact that interrupting a thread // also does not unblock a thread waiting for a binder transaction. - interruptedPreservingSleep((long) (Math.random() * 200 + 50)); + interruptedPreservingSleep(backOffHint); } break; } default: - throw new KeyStoreException(e.errorCode, ""); + throw KeyStore2.getKeyStoreException(e.errorCode); } } catch (RemoteException e) { Log.w(TAG, "Cannot connect to keystore", e); |