diff --git a/core/java/android/service/credentials/BeginCreateCredentialRequest.java b/core/java/android/service/credentials/BeginCreateCredentialRequest.java index e9f7c8a639e40..2eed998b73392 100644 --- a/core/java/android/service/credentials/BeginCreateCredentialRequest.java +++ b/core/java/android/service/credentials/BeginCreateCredentialRequest.java @@ -25,8 +25,6 @@ import android.os.Parcelable; import com.android.internal.util.Preconditions; -import java.util.Objects; - /** * Request for beginning a create credential request. * @@ -54,7 +52,9 @@ public class BeginCreateCredentialRequest implements Parcelable { @Nullable CallingAppInfo callingAppInfo) { mType = Preconditions.checkStringNotEmpty(type, "type must not be null or empty"); - mData = Objects.requireNonNull(data, "data must not be null"); + Bundle dataCopy = new Bundle(); + dataCopy.putAll(data); + mData = dataCopy; mCallingAppInfo = callingAppInfo; } diff --git a/core/java/android/service/credentials/BeginGetCredentialOption.java b/core/java/android/service/credentials/BeginGetCredentialOption.java index c654072d74465..81b9f22ebc7f0 100644 --- a/core/java/android/service/credentials/BeginGetCredentialOption.java +++ b/core/java/android/service/credentials/BeginGetCredentialOption.java @@ -16,8 +16,6 @@ package android.service.credentials; -import static java.util.Objects.requireNonNull; - import android.annotation.NonNull; import android.annotation.SuppressLint; import android.os.Bundle; @@ -60,9 +58,7 @@ public class BeginGetCredentialOption implements Parcelable { private final Bundle mCandidateQueryData; /** - * Returns the unique id associated with this request. Providers must pass this id - * to the constructor of {@link CredentialEntry} while creating a candidate credential - * entry for this request option. + * Returns the unique id associated with this request. This is for internal use only. */ @NonNull public String getId() { @@ -127,8 +123,9 @@ public class BeginGetCredentialOption implements Parcelable { @NonNull Bundle candidateQueryData) { mId = id; mType = Preconditions.checkStringNotEmpty(type, "type must not be empty"); - mCandidateQueryData = requireNonNull( - candidateQueryData, "candidateQueryData must not be null"); + Bundle bundle = new Bundle(); + bundle.putAll(candidateQueryData); + mCandidateQueryData = bundle; addIdToBundle(); } diff --git a/services/credentials/java/com/android/server/credentials/ProviderCreateSession.java b/services/credentials/java/com/android/server/credentials/ProviderCreateSession.java index 3f285b7d9c8d2..b4c4233e888ab 100644 --- a/services/credentials/java/com/android/server/credentials/ProviderCreateSession.java +++ b/services/credentials/java/com/android/server/credentials/ProviderCreateSession.java @@ -77,14 +77,19 @@ public final class ProviderCreateSession extends ProviderSession< createRequestSession.mClientRequest, createRequestSession.mClientAppInfo); if (providerCreateRequest != null) { - BeginCreateCredentialRequest providerBeginCreateRequest = + return new ProviderCreateSession( + context, + providerInfo, + createRequestSession, + userId, + remoteCredentialService, constructQueryPhaseRequest(createRequestSession.mClientRequest.getType(), createRequestSession.mClientRequest.getCandidateQueryData(), createRequestSession.mClientAppInfo, createRequestSession - .mClientRequest.alwaysSendAppInfoToProvider()); - return new ProviderCreateSession(context, providerInfo, createRequestSession, userId, - remoteCredentialService, providerBeginCreateRequest, providerCreateRequest); + .mClientRequest.alwaysSendAppInfoToProvider()), + providerCreateRequest + ); } Log.i(TAG, "Unable to create provider session"); return null; diff --git a/services/credentials/java/com/android/server/credentials/ProviderGetSession.java b/services/credentials/java/com/android/server/credentials/ProviderGetSession.java index f116c1bd002b4..c2a57a8d298b8 100644 --- a/services/credentials/java/com/android/server/credentials/ProviderGetSession.java +++ b/services/credentials/java/com/android/server/credentials/ProviderGetSession.java @@ -97,14 +97,20 @@ public final class ProviderGetSession extends ProviderSession beginGetOptionToCredentialOptionMap = new HashMap<>(); - BeginGetCredentialRequest beginGetCredentialRequest = constructQueryPhaseRequest( - filteredRequest, getRequestSession.mClientAppInfo, - getRequestSession.mClientRequest.alwaysSendAppInfoToProvider(), - beginGetOptionToCredentialOptionMap); - return new ProviderGetSession(context, providerInfo, getRequestSession, userId, - remoteCredentialService, beginGetCredentialRequest, filteredRequest, + return new ProviderGetSession( + context, + providerInfo, + getRequestSession, + userId, + remoteCredentialService, + constructQueryPhaseRequest( + filteredRequest, getRequestSession.mClientAppInfo, + getRequestSession.mClientRequest.alwaysSendAppInfoToProvider(), + beginGetOptionToCredentialOptionMap), + filteredRequest, getRequestSession.mClientAppInfo, - beginGetOptionToCredentialOptionMap); + beginGetOptionToCredentialOptionMap + ); } Log.i(TAG, "Unable to create provider session"); return null; @@ -168,7 +174,7 @@ public final class ProviderGetSession extends ProviderSession(beginGetOptionToCredentialOptionMap); } /** Called when the provider response has been updated by an external source. */