From da213ccf5b433b409ab3f376f39190e29237b3d2 Mon Sep 17 00:00:00 2001 From: Reema Bajwa Date: Sun, 5 Feb 2023 02:58:54 +0000 Subject: [PATCH] Add request to remote entry pendingIntent for get/create Test: built & deployed locally Change-Id: Ibebffacca3fe3d4abc7fcc308dd1cb55ee658a21 --- .../credentials/ProviderCreateSession.java | 20 ++++++++++++++++--- .../credentials/ProviderGetSession.java | 5 ++++- .../server/credentials/ProviderSession.java | 4 +--- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/services/credentials/java/com/android/server/credentials/ProviderCreateSession.java b/services/credentials/java/com/android/server/credentials/ProviderCreateSession.java index 9033abc359bc8..20e358c8f6176 100644 --- a/services/credentials/java/com/android/server/credentials/ProviderCreateSession.java +++ b/services/credentials/java/com/android/server/credentials/ProviderCreateSession.java @@ -35,6 +35,7 @@ import android.service.credentials.CreateEntry; import android.service.credentials.CredentialProviderInfo; import android.service.credentials.CredentialProviderService; import android.util.Log; +import android.util.Pair; import android.util.Slog; import java.util.ArrayList; @@ -62,6 +63,8 @@ public final class ProviderCreateSession extends ProviderSession< private CreateCredentialException mProviderException; + @Nullable protected Pair mUiRemoteEntry; + /** Creates a new provider session to be used by the request session. */ @Nullable public static ProviderCreateSession createNewSession( Context context, @@ -185,12 +188,22 @@ public final class ProviderCreateSession extends ProviderSession< Log.i(TAG, "In prepareUiData save entries not null"); return prepareUiProviderData( prepareUiSaveEntries(response.getCreateEntries()), - null, - /*isDefaultProvider=*/false); + prepareUiRemoteEntry(response.getRemoteCreateEntry())); } return null; } + private Entry prepareUiRemoteEntry(CreateEntry remoteCreateEntry) { + if (remoteCreateEntry == null) { + return null; + } + String entryId = generateUniqueId(); + Entry remoteEntry = new Entry(REMOTE_ENTRY_KEY, entryId, remoteCreateEntry.getSlice(), + setUpFillInIntent()); + mUiRemoteEntry = new Pair<>(entryId, remoteCreateEntry); + return remoteEntry; + } + @Override public void onUiEntrySelected(String entryType, String entryKey, ProviderPendingIntentResponse providerPendingIntentResponse) { @@ -246,10 +259,11 @@ public final class ProviderCreateSession extends ProviderSession< } private CreateCredentialProviderData prepareUiProviderData(List saveEntries, - Entry remoteEntry, boolean isDefaultProvider) { + Entry remoteEntry) { return new CreateCredentialProviderData.Builder( mComponentName.flattenToString()) .setSaveEntries(saveEntries) + .setRemoteEntry(remoteEntry) .build(); } diff --git a/services/credentials/java/com/android/server/credentials/ProviderGetSession.java b/services/credentials/java/com/android/server/credentials/ProviderGetSession.java index 496a6d120a30a..9fba95bfdd340 100644 --- a/services/credentials/java/com/android/server/credentials/ProviderGetSession.java +++ b/services/credentials/java/com/android/server/credentials/ProviderGetSession.java @@ -75,6 +75,8 @@ public final class ProviderGetSession extends ProviderSession mUiAuthenticationEntries = new HashMap<>(); + @Nullable protected Pair mUiRemoteEntry; + /** The complete request to be used in the second round. */ private final android.credentials.GetCredentialRequest mCompleteRequest; private final CallingAppInfo mCallingAppInfo; @@ -271,7 +273,8 @@ public final class ProviderGetSession extends ProviderSession(entryId, remoteCredentialEntry); return remoteEntry; } diff --git a/services/credentials/java/com/android/server/credentials/ProviderSession.java b/services/credentials/java/com/android/server/credentials/ProviderSession.java index 53970f9d7ad2f..1ae0f3c0d2f35 100644 --- a/services/credentials/java/com/android/server/credentials/ProviderSession.java +++ b/services/credentials/java/com/android/server/credentials/ProviderSession.java @@ -25,10 +25,8 @@ import android.credentials.ui.ProviderData; import android.credentials.ui.ProviderPendingIntentResponse; import android.os.ICancellationSignal; import android.os.RemoteException; -import android.service.credentials.CredentialEntry; import android.service.credentials.CredentialProviderInfo; import android.util.Log; -import android.util.Pair; import java.util.UUID; @@ -54,7 +52,7 @@ public abstract class ProviderSession @NonNull protected final T mProviderRequest; @Nullable protected R mProviderResponse; @NonNull protected Boolean mProviderResponseSet = false; - @Nullable protected Pair mUiRemoteEntry; + /**