Merge "Remove capability checks for cred desc apis." into udc-dev am: 1b1c5442c8
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/21917569 Change-Id: I818cf57b92c15dfd15a47c8b14c12eb0156dc33b Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -33,7 +33,6 @@ import android.content.pm.ServiceInfo;
|
||||
import android.credentials.ClearCredentialStateRequest;
|
||||
import android.credentials.CreateCredentialException;
|
||||
import android.credentials.CreateCredentialRequest;
|
||||
import android.credentials.CredentialDescription;
|
||||
import android.credentials.CredentialManager;
|
||||
import android.credentials.CredentialOption;
|
||||
import android.credentials.CredentialProviderInfo;
|
||||
@@ -296,11 +295,6 @@ public final class CredentialManagerService
|
||||
mContext,
|
||||
UserHandle.getCallingUserId(),
|
||||
session,
|
||||
CredentialProviderInfoFactory.getCredentialProviderFromPackageName(
|
||||
mContext, UserHandle.getCallingUserId() ,
|
||||
result.second.mPackageName,
|
||||
CredentialManager.PROVIDER_FILTER_ALL_PROVIDERS,
|
||||
new HashSet<>()),
|
||||
session.mClientAppInfo,
|
||||
result.second.mPackageName,
|
||||
result.first));
|
||||
@@ -752,44 +746,6 @@ public final class CredentialManagerService
|
||||
|
||||
enforceCallingPackage(callingPackage, Binder.getCallingUid());
|
||||
|
||||
List<CredentialProviderInfo> services =
|
||||
getServicesForCredentialDescription(UserHandle.getCallingUserId());
|
||||
|
||||
List<String> providers =
|
||||
services.stream()
|
||||
.map(
|
||||
credentialProviderInfo ->
|
||||
credentialProviderInfo.getServiceInfo().packageName)
|
||||
.toList();
|
||||
|
||||
if (!providers.contains(callingPackage)) {
|
||||
throw new NonCredentialProviderCallerException(callingPackage);
|
||||
}
|
||||
|
||||
List<CredentialProviderInfo> matchingService =
|
||||
services.stream()
|
||||
.filter(
|
||||
credentialProviderInfo ->
|
||||
credentialProviderInfo
|
||||
.getServiceInfo()
|
||||
.packageName
|
||||
.equals(callingPackage))
|
||||
.toList();
|
||||
|
||||
CredentialProviderInfo credentialProviderInfo = matchingService.get(0);
|
||||
|
||||
Set<String> supportedTypes =
|
||||
request.getCredentialDescriptions().stream()
|
||||
.map(CredentialDescription::getType)
|
||||
.filter(credentialProviderInfo::hasCapability)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
if (supportedTypes.size() != request.getCredentialDescriptions().size()) {
|
||||
throw new IllegalArgumentException(
|
||||
"CredentialProvider does not support one or more"
|
||||
+ "of the registered types. Check your XML entry.");
|
||||
}
|
||||
|
||||
CredentialDescriptionRegistry session =
|
||||
CredentialDescriptionRegistry.forUser(UserHandle.getCallingUserId());
|
||||
|
||||
@@ -808,20 +764,6 @@ public final class CredentialManagerService
|
||||
|
||||
enforceCallingPackage(callingPackage, Binder.getCallingUid());
|
||||
|
||||
List<CredentialProviderInfo> services =
|
||||
getServicesForCredentialDescription(UserHandle.getCallingUserId());
|
||||
|
||||
List<String> providers =
|
||||
services.stream()
|
||||
.map(
|
||||
credentialProviderInfo ->
|
||||
credentialProviderInfo.getServiceInfo().packageName)
|
||||
.toList();
|
||||
|
||||
if (!providers.contains(callingPackage)) {
|
||||
throw new NonCredentialProviderCallerException(callingPackage);
|
||||
}
|
||||
|
||||
CredentialDescriptionRegistry session =
|
||||
CredentialDescriptionRegistry.forUser(UserHandle.getCallingUserId());
|
||||
|
||||
|
||||
@@ -72,7 +72,8 @@ public final class ProviderClearSession extends ProviderSession<ClearCredential
|
||||
ProviderInternalCallback callbacks,
|
||||
int userId, RemoteCredentialService remoteCredentialService,
|
||||
ClearCredentialStateRequest providerRequest) {
|
||||
super(context, info, providerRequest, callbacks, userId, remoteCredentialService);
|
||||
super(context, providerRequest, callbacks, info.getComponentName(),
|
||||
userId, remoteCredentialService);
|
||||
setStatus(Status.PENDING);
|
||||
}
|
||||
|
||||
@@ -95,7 +96,7 @@ public final class ProviderClearSession extends ProviderSession<ClearCredential
|
||||
/** Called when provider service dies. */
|
||||
@Override // Callback from the remote provider
|
||||
public void onProviderServiceDied(RemoteCredentialService service) {
|
||||
if (service.getComponentName().equals(mProviderInfo.getServiceInfo().getComponentName())) {
|
||||
if (service.getComponentName().equals(mComponentName)) {
|
||||
updateStatusAndInvokeCallback(Status.SERVICE_DEAD);
|
||||
} else {
|
||||
Slog.i(TAG, "Component names different in onProviderServiceDied - "
|
||||
|
||||
@@ -133,7 +133,7 @@ public final class ProviderCreateSession extends ProviderSession<
|
||||
@NonNull BeginCreateCredentialRequest beginCreateRequest,
|
||||
@NonNull CreateCredentialRequest completeCreateRequest,
|
||||
String hybridService) {
|
||||
super(context, info, beginCreateRequest, callbacks, userId,
|
||||
super(context, beginCreateRequest, callbacks, info.getComponentName(), userId,
|
||||
remoteCredentialService);
|
||||
mCompleteRequest = completeCreateRequest;
|
||||
setStatus(Status.PENDING);
|
||||
@@ -161,7 +161,7 @@ public final class ProviderCreateSession extends ProviderSession<
|
||||
/** Called when provider service dies. */
|
||||
@Override
|
||||
public void onProviderServiceDied(RemoteCredentialService service) {
|
||||
if (service.getComponentName().equals(mProviderInfo.getServiceInfo().getComponentName())) {
|
||||
if (service.getComponentName().equals(mComponentName)) {
|
||||
updateStatusAndInvokeCallback(Status.SERVICE_DEAD);
|
||||
} else {
|
||||
Slog.i(TAG, "Component names different in onProviderServiceDied - "
|
||||
|
||||
@@ -169,7 +169,8 @@ public final class ProviderGetSession extends ProviderSession<BeginGetCredential
|
||||
CallingAppInfo callingAppInfo,
|
||||
Map<String, CredentialOption> beginGetOptionToCredentialOptionMap,
|
||||
String hybridService) {
|
||||
super(context, info, beginGetRequest, callbacks, userId, remoteCredentialService);
|
||||
super(context, beginGetRequest, callbacks, info.getComponentName() ,
|
||||
userId, remoteCredentialService);
|
||||
mCompleteRequest = completeGetRequest;
|
||||
mCallingAppInfo = callingAppInfo;
|
||||
setStatus(Status.PENDING);
|
||||
@@ -196,7 +197,7 @@ public final class ProviderGetSession extends ProviderSession<BeginGetCredential
|
||||
/** Called when provider service dies. */
|
||||
@Override // Callback from the remote provider
|
||||
public void onProviderServiceDied(RemoteCredentialService service) {
|
||||
if (service.getComponentName().equals(mProviderInfo.getServiceInfo().getComponentName())) {
|
||||
if (service.getComponentName().equals(mComponentName)) {
|
||||
updateStatusAndInvokeCallback(Status.SERVICE_DEAD);
|
||||
} else {
|
||||
Slog.i(TAG, "Component names different in onProviderServiceDied - "
|
||||
|
||||
@@ -19,10 +19,10 @@ package com.android.server.credentials;
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.annotation.UserIdInt;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.credentials.CredentialOption;
|
||||
import android.credentials.CredentialProviderInfo;
|
||||
import android.credentials.GetCredentialException;
|
||||
import android.credentials.GetCredentialResponse;
|
||||
import android.credentials.ui.Entry;
|
||||
@@ -64,7 +64,6 @@ public class ProviderRegistryGetSession extends ProviderSession<CredentialOption
|
||||
@NonNull Context context,
|
||||
@UserIdInt int userId,
|
||||
@NonNull GetRequestSession getRequestSession,
|
||||
@NonNull CredentialProviderInfo credentialProviderInfo,
|
||||
@NonNull CallingAppInfo callingAppInfo,
|
||||
@NonNull String credentialProviderPackageName,
|
||||
@NonNull CredentialOption requestOption) {
|
||||
@@ -72,7 +71,6 @@ public class ProviderRegistryGetSession extends ProviderSession<CredentialOption
|
||||
context,
|
||||
userId,
|
||||
getRequestSession,
|
||||
credentialProviderInfo,
|
||||
callingAppInfo,
|
||||
credentialProviderPackageName,
|
||||
requestOption);
|
||||
@@ -94,11 +92,12 @@ public class ProviderRegistryGetSession extends ProviderSession<CredentialOption
|
||||
protected ProviderRegistryGetSession(@NonNull Context context,
|
||||
@NonNull int userId,
|
||||
@NonNull GetRequestSession session,
|
||||
@NonNull CredentialProviderInfo credentialProviderInfo,
|
||||
@NonNull CallingAppInfo callingAppInfo,
|
||||
@NonNull String servicePackageName,
|
||||
@NonNull CredentialOption requestOption) {
|
||||
super(context, credentialProviderInfo, requestOption, session, userId, null);
|
||||
super(context, requestOption, session,
|
||||
new ComponentName(servicePackageName, servicePackageName) ,
|
||||
userId, null);
|
||||
mCredentialDescriptionRegistry = CredentialDescriptionRegistry.forUser(userId);
|
||||
mCallingAppInfo = callingAppInfo;
|
||||
mCredentialProviderPackageName = servicePackageName;
|
||||
|
||||
@@ -114,17 +114,18 @@ public abstract class ProviderSession<T, R>
|
||||
@Nullable String message);
|
||||
}
|
||||
|
||||
protected ProviderSession(@NonNull Context context, @Nullable CredentialProviderInfo info,
|
||||
protected ProviderSession(@NonNull Context context,
|
||||
@NonNull T providerRequest,
|
||||
@Nullable ProviderInternalCallback callbacks,
|
||||
@NonNull ComponentName componentName,
|
||||
@NonNull int userId,
|
||||
@Nullable RemoteCredentialService remoteCredentialService) {
|
||||
mContext = context;
|
||||
mProviderInfo = info;
|
||||
mProviderInfo = null;
|
||||
mProviderRequest = providerRequest;
|
||||
mCallbacks = callbacks;
|
||||
mUserId = userId;
|
||||
mComponentName = info.getServiceInfo().getComponentName();
|
||||
mComponentName = componentName;
|
||||
mRemoteCredentialService = remoteCredentialService;
|
||||
mCandidateProviderMetric = new CandidatePhaseMetric();
|
||||
mProviderSessionUid = MetricUtilities.getPackageUid(mContext, mComponentName);
|
||||
|
||||
@@ -36,7 +36,6 @@ import android.content.pm.SigningDetails;
|
||||
import android.content.pm.SigningInfo;
|
||||
import android.credentials.Credential;
|
||||
import android.credentials.CredentialOption;
|
||||
import android.credentials.CredentialProviderInfo;
|
||||
import android.credentials.GetCredentialException;
|
||||
import android.credentials.GetCredentialResponse;
|
||||
import android.credentials.ui.GetCredentialProviderData;
|
||||
@@ -45,7 +44,6 @@ import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.service.credentials.CallingAppInfo;
|
||||
import android.service.credentials.CredentialEntry;
|
||||
import android.service.credentials.CredentialProviderInfoFactory;
|
||||
import android.service.credentials.CredentialProviderService;
|
||||
import android.service.credentials.GetCredentialRequest;
|
||||
|
||||
@@ -61,7 +59,6 @@ import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
|
||||
import java.security.cert.CertificateException;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
@@ -89,7 +86,6 @@ public class ProviderRegistryGetSessionTest {
|
||||
@Mock private GetRequestSession mGetRequestSession;
|
||||
private CredentialOption mGetCredentialOption;
|
||||
@Mock private ServiceInfo mServiceInfo;
|
||||
private CredentialProviderInfo mCredentialProviderInfo;
|
||||
private CallingAppInfo mCallingAppInfo;
|
||||
@Mock private CredentialDescriptionRegistry mCredentialDescriptionRegistry;
|
||||
private Bundle mRetrievalData;
|
||||
@@ -111,12 +107,6 @@ public class ProviderRegistryGetSessionTest {
|
||||
mGetCredentialOption = new CredentialOption(CREDENTIAL_TYPE, mRetrievalData,
|
||||
new Bundle(), false);
|
||||
when(mServiceInfo.getComponentName()).thenReturn(CREDENTIAL_PROVIDER_COMPONENT);
|
||||
mCredentialProviderInfo = CredentialProviderInfoFactory
|
||||
.createForTests(mServiceInfo,
|
||||
/* overrideLabel= */ "test",
|
||||
/* isSystemProvider= */ false,
|
||||
/* isEnabled= */ true,
|
||||
/* capabilities= */ Collections.EMPTY_LIST);
|
||||
CredentialDescriptionRegistry.setSession(USER_ID_1, mCredentialDescriptionRegistry);
|
||||
mResponse = new HashSet<>();
|
||||
mSlice = createSlice();
|
||||
@@ -130,7 +120,7 @@ public class ProviderRegistryGetSessionTest {
|
||||
when(mCredentialDescriptionRegistry.getFilteredResultForProvider(anyString(), anyString()))
|
||||
.thenReturn(mResponse);
|
||||
mProviderRegistryGetSession = ProviderRegistryGetSession
|
||||
.createNewSession(context, USER_ID_1, mGetRequestSession, mCredentialProviderInfo,
|
||||
.createNewSession(context, USER_ID_1, mGetRequestSession,
|
||||
mCallingAppInfo,
|
||||
CALLING_PACKAGE_NAME,
|
||||
mGetCredentialOption);
|
||||
|
||||
Reference in New Issue
Block a user