diff options
author | Omer Ozer <omerozer@google.com> | 2023-06-22 18:42:14 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2023-06-22 18:42:14 +0000 |
commit | 09917cd2df69d31d32eeb406a067ec259d3d2e77 (patch) | |
tree | c94c0a450c4d1a4f57a5a9e9a5be03e6eaec4eb1 | |
parent | b92c3de57afd31717f4ed5ec09840d4b34449954 (diff) | |
parent | 78998ccaf5eebed67c6018a3d192001e7f633ea7 (diff) | |
download | base-09917cd2df69d31d32eeb406a067ec259d3d2e77.tar.gz |
Merge "Fix CredDesc reg flow bugs" into udc-dev
-rw-r--r-- | services/credentials/java/com/android/server/credentials/GetRequestSession.java | 10 | ||||
-rw-r--r-- | services/credentials/java/com/android/server/credentials/ProviderRegistryGetSession.java | 20 |
2 files changed, 18 insertions, 12 deletions
diff --git a/services/credentials/java/com/android/server/credentials/GetRequestSession.java b/services/credentials/java/com/android/server/credentials/GetRequestSession.java index aee4f583eec9..c9e691e199c7 100644 --- a/services/credentials/java/com/android/server/credentials/GetRequestSession.java +++ b/services/credentials/java/com/android/server/credentials/GetRequestSession.java @@ -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 diff --git a/services/credentials/java/com/android/server/credentials/ProviderRegistryGetSession.java b/services/credentials/java/com/android/server/credentials/ProviderRegistryGetSession.java index b0b72bcf67cc..46c90b4bc731 100644 --- a/services/credentials/java/com/android/server/credentials/ProviderRegistryGetSession.java +++ b/services/credentials/java/com/android/server/credentials/ProviderRegistryGetSession.java @@ -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); } |