Merge "Fix CredDesc reg flow bugs" into udc-dev
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user