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; + /**