diff options
author | Robin Lee <rgl@google.com> | 2015-06-30 10:48:06 -0700 |
---|---|---|
committer | Robin Lee <rgl@google.com> | 2015-06-30 13:08:46 -0700 |
commit | 59e3baa8ab08c4da270023540ba15268c87e0d67 (patch) | |
tree | 9c87f8fdec9055c17f9edbd1628ba9c7170dac1d /keystore | |
parent | fd70942147edec7eb512c72c3fd0f89a3d7fa646 (diff) | |
download | frameworks_base-59e3baa8ab08c4da270023540ba15268c87e0d67.zip frameworks_base-59e3baa8ab08c4da270023540ba15268c87e0d67.tar.gz frameworks_base-59e3baa8ab08c4da270023540ba15268c87e0d67.tar.bz2 |
KeyChain: annotate with @WorkerThread
Several methods need to be called off the main UI thread. This is
the first documentation of that requirement.
Bug: 19440165
Change-Id: I0303011c0ded6ec1efa92119c1e02a8a39b14a59
Diffstat (limited to 'keystore')
-rw-r--r-- | keystore/java/android/security/KeyChain.java | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/keystore/java/android/security/KeyChain.java b/keystore/java/android/security/KeyChain.java index f482bf0..7de26d6 100644 --- a/keystore/java/android/security/KeyChain.java +++ b/keystore/java/android/security/KeyChain.java @@ -17,6 +17,7 @@ package android.security; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.WorkerThread; import android.app.Activity; import android.app.PendingIntent; import android.content.ComponentName; @@ -351,11 +352,15 @@ public final class KeyChain { * Returns the {@code PrivateKey} for the requested alias, or null * if no there is no result. * - * @param alias The alias of the desired private key, typically - * returned via {@link KeyChainAliasCallback#alias}. + * <p> This method may block while waiting for a connection to another process, and must never + * be called from the main thread. + * + * @param alias The alias of the desired private key, typically returned via + * {@link KeyChainAliasCallback#alias}. * @throws KeyChainException if the alias was valid but there was some problem accessing it. + * @throws IllegalStateException if called from the main thread. */ - @Nullable + @Nullable @WorkerThread public static PrivateKey getPrivateKey(@NonNull Context context, @NonNull String alias) throws KeyChainException, InterruptedException { if (alias == null) { @@ -386,11 +391,15 @@ public final class KeyChain { * Returns the {@code X509Certificate} chain for the requested * alias, or null if no there is no result. * + * <p> This method may block while waiting for a connection to another process, and must never + * be called from the main thread. + * * @param alias The alias of the desired certificate chain, typically * returned via {@link KeyChainAliasCallback#alias}. * @throws KeyChainException if the alias was valid but there was some problem accessing it. + * @throws IllegalStateException if called from the main thread. */ - @Nullable + @Nullable @WorkerThread public static X509Certificate[] getCertificateChain(@NonNull Context context, @NonNull String alias) throws KeyChainException, InterruptedException { if (alias == null) { @@ -505,6 +514,7 @@ public final class KeyChain { * * Caller should call unbindService on the result when finished. */ + @WorkerThread public static KeyChainConnection bind(@NonNull Context context) throws InterruptedException { return bindAsUser(context, Process.myUserHandle()); } @@ -512,6 +522,7 @@ public final class KeyChain { /** * @hide */ + @WorkerThread public static KeyChainConnection bindAsUser(@NonNull Context context, UserHandle user) throws InterruptedException { if (context == null) { |