diff --git a/services/credentials/java/com/android/server/credentials/CredentialManagerService.java b/services/credentials/java/com/android/server/credentials/CredentialManagerService.java index 6e998c4ef1957..55973fa41ab68 100644 --- a/services/credentials/java/com/android/server/credentials/CredentialManagerService.java +++ b/services/credentials/java/com/android/server/credentials/CredentialManagerService.java @@ -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 services = - getServicesForCredentialDescription(UserHandle.getCallingUserId()); - - List providers = - services.stream() - .map( - credentialProviderInfo -> - credentialProviderInfo.getServiceInfo().packageName) - .toList(); - - if (!providers.contains(callingPackage)) { - throw new NonCredentialProviderCallerException(callingPackage); - } - - List matchingService = - services.stream() - .filter( - credentialProviderInfo -> - credentialProviderInfo - .getServiceInfo() - .packageName - .equals(callingPackage)) - .toList(); - - CredentialProviderInfo credentialProviderInfo = matchingService.get(0); - - Set 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 services = - getServicesForCredentialDescription(UserHandle.getCallingUserId()); - - List providers = - services.stream() - .map( - credentialProviderInfo -> - credentialProviderInfo.getServiceInfo().packageName) - .toList(); - - if (!providers.contains(callingPackage)) { - throw new NonCredentialProviderCallerException(callingPackage); - } - CredentialDescriptionRegistry session = CredentialDescriptionRegistry.forUser(UserHandle.getCallingUserId()); diff --git a/services/credentials/java/com/android/server/credentials/ProviderClearSession.java b/services/credentials/java/com/android/server/credentials/ProviderClearSession.java index b7a4cd581a1a0..ab29acc72a536 100644 --- a/services/credentials/java/com/android/server/credentials/ProviderClearSession.java +++ b/services/credentials/java/com/android/server/credentials/ProviderClearSession.java @@ -72,7 +72,8 @@ public final class ProviderClearSession extends ProviderSession 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 @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); diff --git a/services/tests/servicestests/src/com/android/server/credentials/ProviderRegistryGetSessionTest.java b/services/tests/servicestests/src/com/android/server/credentials/ProviderRegistryGetSessionTest.java index 3d52ac558605a..4c8e70ae5109d 100644 --- a/services/tests/servicestests/src/com/android/server/credentials/ProviderRegistryGetSessionTest.java +++ b/services/tests/servicestests/src/com/android/server/credentials/ProviderRegistryGetSessionTest.java @@ -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);