diff --git a/core/api/current.txt b/core/api/current.txt index 7e77915b298bf..6d89717f47d19 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -13594,12 +13594,11 @@ package android.credentials { } public static final class CreateCredentialRequest.Builder { - ctor public CreateCredentialRequest.Builder(@NonNull android.os.Bundle, @NonNull android.os.Bundle); + ctor public CreateCredentialRequest.Builder(@NonNull String, @NonNull android.os.Bundle, @NonNull android.os.Bundle); method @NonNull public android.credentials.CreateCredentialRequest build(); method @NonNull public android.credentials.CreateCredentialRequest.Builder setAlwaysSendAppInfoToProvider(boolean); method @NonNull public android.credentials.CreateCredentialRequest.Builder setIsSystemProviderRequired(boolean); method @NonNull @RequiresPermission(android.Manifest.permission.CREDENTIAL_MANAGER_SET_ORIGIN) public android.credentials.CreateCredentialRequest.Builder setOrigin(@NonNull String); - method @NonNull public android.credentials.CreateCredentialRequest.Builder setType(@NonNull String); } public final class CreateCredentialResponse implements android.os.Parcelable { diff --git a/core/java/android/credentials/CreateCredentialRequest.java b/core/java/android/credentials/CreateCredentialRequest.java index c89a5c62cd585..fc3dc796d3edd 100644 --- a/core/java/android/credentials/CreateCredentialRequest.java +++ b/core/java/android/credentials/CreateCredentialRequest.java @@ -260,11 +260,17 @@ public final class CreateCredentialRequest implements Parcelable { private String mOrigin; /** + * @param type the type of the credential to be stored * @param credentialData the full credential creation request data * @param candidateQueryData the partial request data that will be sent to the provider * during the initial creation candidate query stage */ - public Builder(@NonNull Bundle credentialData, @NonNull Bundle candidateQueryData) { + public Builder( + @NonNull String type, + @NonNull Bundle credentialData, + @NonNull Bundle candidateQueryData) { + mType = Preconditions.checkStringNotEmpty(type, + "type must not be null or empty"); mCredentialData = requireNonNull(credentialData, "credentialData must not be null"); mCandidateQueryData = requireNonNull(candidateQueryData, @@ -290,16 +296,6 @@ public final class CreateCredentialRequest implements Parcelable { return this; } - /** - * Sets the requested credential type. - */ - @SuppressLint("MissingGetterMatchingBuilder") - @NonNull - public CreateCredentialRequest.Builder setType(@NonNull String type) { - mType = type; - return this; - } - /** * Sets whether the request must only be fulfilled by a system provider. * This defaults to false diff --git a/core/tests/coretests/src/android/credentials/CredentialManagerTest.java b/core/tests/coretests/src/android/credentials/CredentialManagerTest.java index 25664fb1d8d96..43334ab08b2fd 100644 --- a/core/tests/coretests/src/android/credentials/CredentialManagerTest.java +++ b/core/tests/coretests/src/android/credentials/CredentialManagerTest.java @@ -101,8 +101,9 @@ public class CredentialManagerTest { mGetRequest = new GetCredentialRequest.Builder(Bundle.EMPTY).addCredentialOption( new CredentialOption(Credential.TYPE_PASSWORD_CREDENTIAL, Bundle.EMPTY, Bundle.EMPTY, false)).build(); - mCreateRequest = new CreateCredentialRequest.Builder(Bundle.EMPTY, Bundle.EMPTY) - .setType(Credential.TYPE_PASSWORD_CREDENTIAL) + mCreateRequest = new CreateCredentialRequest.Builder( + Credential.TYPE_PASSWORD_CREDENTIAL, + Bundle.EMPTY, Bundle.EMPTY) .setIsSystemProviderRequired(false) .setAlwaysSendAppInfoToProvider(false) .build(); diff --git a/packages/CredentialManager/src/com/android/credentialmanager/CredentialManagerRepo.kt b/packages/CredentialManager/src/com/android/credentialmanager/CredentialManagerRepo.kt index d2ed1564f5c15..a2d1e4de8e357 100644 --- a/packages/CredentialManager/src/com/android/credentialmanager/CredentialManagerRepo.kt +++ b/packages/CredentialManager/src/com/android/credentialmanager/CredentialManagerRepo.kt @@ -407,8 +407,8 @@ class CredentialManagerRepo( val credentialData = request.credentialData return RequestInfo.newCreateRequestInfo( Binder(), - CreateCredentialRequest.Builder(credentialData, Bundle()) - .setType("androidx.credentials.TYPE_PUBLIC_KEY_CREDENTIAL") + CreateCredentialRequest.Builder("androidx.credentials.TYPE_PUBLIC_KEY_CREDENTIAL", + credentialData, Bundle()) .setIsSystemProviderRequired(false) .setAlwaysSendAppInfoToProvider(true) .build(), @@ -420,8 +420,8 @@ class CredentialManagerRepo( val request = CreatePasswordRequest("beckett-bakert@gmail.com", "password123") return RequestInfo.newCreateRequestInfo( Binder(), - CreateCredentialRequest.Builder(request.credentialData, request.candidateQueryData) - .setType(TYPE_PASSWORD_CREDENTIAL) + CreateCredentialRequest.Builder(TYPE_PASSWORD_CREDENTIAL, + request.credentialData, request.candidateQueryData) .setIsSystemProviderRequired(false) .setAlwaysSendAppInfoToProvider(true) .build(), @@ -438,8 +438,7 @@ class CredentialManagerRepo( ) return RequestInfo.newCreateRequestInfo( Binder(), - CreateCredentialRequest.Builder(data, Bundle()) - .setType("other-sign-ins") + CreateCredentialRequest.Builder("other-sign-ins", data, Bundle()) .setIsSystemProviderRequired(false) .setAlwaysSendAppInfoToProvider(true) .build(),