Merge "Fix CredDesc reg flow bugs" into udc-dev am: 09917cd2df

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23721907

Change-Id: Ibed2cc6b397efc37c0408429747599aa8a3c21d4
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Omer Ozer
2023-06-22 18:57:27 +00:00
committed by Automerger Merge Worker
2 changed files with 18 additions and 12 deletions

View File

@@ -28,6 +28,7 @@ import android.credentials.GetCredentialResponse;
import android.credentials.IGetCredentialCallback;
import android.credentials.ui.ProviderData;
import android.credentials.ui.RequestInfo;
import android.os.Binder;
import android.os.CancellationSignal;
import android.os.RemoteException;
import android.service.credentials.CallingAppInfo;
@@ -98,8 +99,9 @@ public class GetRequestSession extends RequestSession<GetCredentialRequest,
protected void launchUiWithProviderData(ArrayList<ProviderData> providerDataList) {
mRequestSessionMetric.collectUiCallStartTime(System.nanoTime());
mCredentialManagerUi.setStatus(CredentialManagerUi.UiStatus.USER_INTERACTION);
cancelExistingPendingIntent();
Binder.withCleanCallingIdentity(()-> {
try {
cancelExistingPendingIntent();
mPendingIntent = mCredentialManagerUi.createPendingIntent(
RequestInfo.newGetRequestInfo(
mRequestId, mClientRequest, mClientAppInfo.getPackageName(),
@@ -112,9 +114,9 @@ public class GetRequestSession extends RequestSession<GetCredentialRequest,
mCredentialManagerUi.setStatus(CredentialManagerUi.UiStatus.TERMINATED);
String exception = GetCredentialException.TYPE_UNKNOWN;
mRequestSessionMetric.collectFrameworkException(exception);
respondToClientWithErrorAndFinish(
exception, "Unable to instantiate selector");
}
respondToClientWithErrorAndFinish(exception, "Unable to instantiate selector");
}
});
}
@Override

View File

@@ -38,11 +38,13 @@ import android.util.Slog;
import com.android.internal.annotations.VisibleForTesting;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -116,7 +118,7 @@ public class ProviderRegistryGetSession extends ProviderSession<CredentialOption
@NonNull String servicePackageName,
@NonNull CredentialOption requestOption) {
super(context, requestOption, session,
new ComponentName(servicePackageName, servicePackageName),
new ComponentName(servicePackageName, UUID.randomUUID().toString()),
userId, null);
mCredentialDescriptionRegistry = CredentialDescriptionRegistry.forUser(userId);
mCallingAppInfo = callingAppInfo;
@@ -133,7 +135,7 @@ public class ProviderRegistryGetSession extends ProviderSession<CredentialOption
@NonNull String servicePackageName,
@NonNull CredentialOption requestOption) {
super(context, requestOption, session,
new ComponentName(servicePackageName, servicePackageName),
new ComponentName(servicePackageName, UUID.randomUUID().toString()),
userId, null);
mCredentialDescriptionRegistry = CredentialDescriptionRegistry.forUser(userId);
mCallingAppInfo = callingAppInfo;
@@ -179,7 +181,9 @@ public class ProviderRegistryGetSession extends ProviderSession<CredentialOption
return null;
}
return new GetCredentialProviderData.Builder(
mComponentName.flattenToString()).setActionChips(null)
mComponentName.flattenToString())
.setActionChips(Collections.EMPTY_LIST)
.setAuthenticationEntries(Collections.EMPTY_LIST)
.setCredentialEntries(prepareUiCredentialEntries(
mProviderResponse.stream().flatMap((Function<CredentialDescriptionRegistry
.FilterResult,
@@ -261,12 +265,12 @@ public class ProviderRegistryGetSession extends ProviderSession<CredentialOption
.getFilteredResultForProvider(mCredentialProviderPackageName,
mElementKeys);
mCredentialEntries = mProviderResponse.stream().flatMap(
(Function<CredentialDescriptionRegistry.FilterResult,
Stream<CredentialEntry>>) filterResult
-> filterResult.mCredentialEntries.stream())
.collect(Collectors.toList());
(Function<CredentialDescriptionRegistry.FilterResult,
Stream<CredentialEntry>>)
filterResult -> filterResult.mCredentialEntries.stream())
.collect(Collectors.toList());
updateStatusAndInvokeCallback(Status.CREDENTIALS_RECEIVED,
/*source=*/ CredentialsSource.REGISTRY);
/*source=*/ CredentialsSource.REGISTRY);
mProviderSessionMetric.collectCandidateEntryMetrics(mCredentialEntries);
}