From 7159bca35aceb4390998e3b4addf4717d30eade4 Mon Sep 17 00:00:00 2001 From: Helen Qin Date: Thu, 27 Apr 2023 21:55:21 +0000 Subject: [PATCH] Add default provider id to the UI-backend interface Bug: 279857017 Test: local build Change-Id: I7dce4224be444444247b4348f452f3276033fd74 --- .../android/credentials/ui/RequestInfo.java | 36 ++++++++++++++++--- .../credentials/CreateRequestSession.java | 4 ++- 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/core/java/android/credentials/ui/RequestInfo.java b/core/java/android/credentials/ui/RequestInfo.java index 09d2db89a043e..9ebb0585afd0d 100644 --- a/core/java/android/credentials/ui/RequestInfo.java +++ b/core/java/android/credentials/ui/RequestInfo.java @@ -30,6 +30,8 @@ import com.android.internal.util.AnnotationValidations; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; +import java.util.ArrayList; +import java.util.List; /** * Contains information about the request that initiated this UX flow. @@ -64,6 +66,9 @@ public final class RequestInfo implements Parcelable { @Nullable private final CreateCredentialRequest mCreateCredentialRequest; + @NonNull + private final List mDefaultProviderIds; + @Nullable private final GetCredentialRequest mGetCredentialRequest; @@ -83,7 +88,8 @@ public final class RequestInfo implements Parcelable { @NonNull String appPackageName) { return new RequestInfo( token, TYPE_CREATE, appPackageName, createCredentialRequest, null, - /*hasPermissionToOverrideDefault=*/ false); + /*hasPermissionToOverrideDefault=*/ false, + /*defaultProviderIds=*/ new ArrayList<>()); } /** @@ -94,10 +100,11 @@ public final class RequestInfo implements Parcelable { @NonNull public static RequestInfo newCreateRequestInfo( @NonNull IBinder token, @NonNull CreateCredentialRequest createCredentialRequest, - @NonNull String appPackageName, boolean hasPermissionToOverrideDefault) { + @NonNull String appPackageName, boolean hasPermissionToOverrideDefault, + @NonNull List defaultProviderIds) { return new RequestInfo( token, TYPE_CREATE, appPackageName, createCredentialRequest, null, - hasPermissionToOverrideDefault); + hasPermissionToOverrideDefault, defaultProviderIds); } /** Creates new {@code RequestInfo} for a get-credential flow. */ @@ -107,7 +114,8 @@ public final class RequestInfo implements Parcelable { @NonNull String appPackageName) { return new RequestInfo( token, TYPE_GET, appPackageName, null, getCredentialRequest, - /*hasPermissionToOverrideDefault=*/ false); + /*hasPermissionToOverrideDefault=*/ false, + /*defaultProviderIds=*/ new ArrayList<>()); } @@ -148,6 +156,20 @@ public final class RequestInfo implements Parcelable { return mCreateCredentialRequest; } + /** + * Returns default provider identifier (flattened component name) configured from the user + * settings. + * + * Will only be possibly non-empty for the create use case. Not meaningful for the sign-in use + * case. + * + * @hide + */ + @NonNull + public List getDefaultProviderIds() { + return mDefaultProviderIds; + } + /** * Returns the non-null GetCredentialRequest when the type of the request is {@link * #TYPE_GET}, or null otherwise. @@ -161,13 +183,15 @@ public final class RequestInfo implements Parcelable { @NonNull String appPackageName, @Nullable CreateCredentialRequest createCredentialRequest, @Nullable GetCredentialRequest getCredentialRequest, - boolean hasPermissionToOverrideDefault) { + boolean hasPermissionToOverrideDefault, + @NonNull List defaultProviderIds) { mToken = token; mType = type; mAppPackageName = appPackageName; mCreateCredentialRequest = createCredentialRequest; mGetCredentialRequest = getCredentialRequest; mHasPermissionToOverrideDefault = hasPermissionToOverrideDefault; + mDefaultProviderIds = defaultProviderIds == null ? new ArrayList<>() : defaultProviderIds; } private RequestInfo(@NonNull Parcel in) { @@ -188,6 +212,7 @@ public final class RequestInfo implements Parcelable { mCreateCredentialRequest = createCredentialRequest; mGetCredentialRequest = getCredentialRequest; mHasPermissionToOverrideDefault = in.readBoolean(); + mDefaultProviderIds = in.createStringArrayList(); } @Override @@ -198,6 +223,7 @@ public final class RequestInfo implements Parcelable { dest.writeTypedObject(mCreateCredentialRequest, flags); dest.writeTypedObject(mGetCredentialRequest, flags); dest.writeBoolean(mHasPermissionToOverrideDefault); + dest.writeStringList(mDefaultProviderIds); } @Override diff --git a/services/credentials/java/com/android/server/credentials/CreateRequestSession.java b/services/credentials/java/com/android/server/credentials/CreateRequestSession.java index fc7fd1afe58fd..b073ff400e444 100644 --- a/services/credentials/java/com/android/server/credentials/CreateRequestSession.java +++ b/services/credentials/java/com/android/server/credentials/CreateRequestSession.java @@ -98,7 +98,9 @@ public final class CreateRequestSession extends RequestSession()), providerDataList); mClientCallback.onPendingIntent(mPendingIntent); } catch (RemoteException e) {