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

View File

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