Merge "Add request to remote entry pendingIntent for get/create"

This commit is contained in:
TreeHugger Robot
2023-02-08 06:04:57 +00:00
committed by Android (Google) Code Review
3 changed files with 22 additions and 7 deletions

View File

@@ -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<String, CreateEntry> 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<Entry> saveEntries,
Entry remoteEntry, boolean isDefaultProvider) {
Entry remoteEntry) {
return new CreateCredentialProviderData.Builder(
mComponentName.flattenToString())
.setSaveEntries(saveEntries)
.setRemoteEntry(remoteEntry)
.build();
}

View File

@@ -75,6 +75,8 @@ public final class ProviderGetSession extends ProviderSession<BeginGetCredential
@Nullable
private final Map<String, Action> mUiAuthenticationEntries = new HashMap<>();
@Nullable protected Pair<String, CredentialEntry> 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<BeginGetCredential
return null;
}
String entryId = generateUniqueId();
Entry remoteEntry = new Entry(REMOTE_ENTRY_KEY, entryId, remoteCredentialEntry.getSlice());
Entry remoteEntry = new Entry(REMOTE_ENTRY_KEY, entryId, remoteCredentialEntry.getSlice(),
setUpFillInIntent(remoteCredentialEntry.getType()));
mUiRemoteEntry = new Pair<>(entryId, remoteCredentialEntry);
return remoteEntry;
}

View File

@@ -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<T, R>
@NonNull protected final T mProviderRequest;
@Nullable protected R mProviderResponse;
@NonNull protected Boolean mProviderResponseSet = false;
@Nullable protected Pair<String, CredentialEntry> mUiRemoteEntry;
/**