summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/credentials/java/com/android/server/credentials/CredentialManagerService.java58
-rw-r--r--services/credentials/java/com/android/server/credentials/ProviderClearSession.java5
-rw-r--r--services/credentials/java/com/android/server/credentials/ProviderCreateSession.java4
-rw-r--r--services/credentials/java/com/android/server/credentials/ProviderGetSession.java5
-rw-r--r--services/credentials/java/com/android/server/credentials/ProviderRegistryGetSession.java9
-rw-r--r--services/credentials/java/com/android/server/credentials/ProviderSession.java7
-rw-r--r--services/tests/servicestests/src/com/android/server/credentials/ProviderRegistryGetSessionTest.java12
7 files changed, 17 insertions, 83 deletions
diff --git a/services/credentials/java/com/android/server/credentials/CredentialManagerService.java b/services/credentials/java/com/android/server/credentials/CredentialManagerService.java
index 6e998c4ef195..55973fa41ab6 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<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());
diff --git a/services/credentials/java/com/android/server/credentials/ProviderClearSession.java b/services/credentials/java/com/android/server/credentials/ProviderClearSession.java
index b7a4cd581a1a..ab29acc72a53 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<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 - "
diff --git a/services/credentials/java/com/android/server/credentials/ProviderCreateSession.java b/services/credentials/java/com/android/server/credentials/ProviderCreateSession.java
index 640cc3331b1a..8c9c6cfe24da 100644
--- a/services/credentials/java/com/android/server/credentials/ProviderCreateSession.java
+++ b/services/credentials/java/com/android/server/credentials/ProviderCreateSession.java
@@ -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 - "
diff --git a/services/credentials/java/com/android/server/credentials/ProviderGetSession.java b/services/credentials/java/com/android/server/credentials/ProviderGetSession.java
index 07e2f877bfc0..851ccb33aa43 100644
--- a/services/credentials/java/com/android/server/credentials/ProviderGetSession.java
+++ b/services/credentials/java/com/android/server/credentials/ProviderGetSession.java
@@ -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 - "
diff --git a/services/credentials/java/com/android/server/credentials/ProviderRegistryGetSession.java b/services/credentials/java/com/android/server/credentials/ProviderRegistryGetSession.java
index 457806de7c9f..a5196c519740 100644
--- a/services/credentials/java/com/android/server/credentials/ProviderRegistryGetSession.java
+++ b/services/credentials/java/com/android/server/credentials/ProviderRegistryGetSession.java
@@ -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;
diff --git a/services/credentials/java/com/android/server/credentials/ProviderSession.java b/services/credentials/java/com/android/server/credentials/ProviderSession.java
index 3a72dbc44007..03e2a3264a9e 100644
--- a/services/credentials/java/com/android/server/credentials/ProviderSession.java
+++ b/services/credentials/java/com/android/server/credentials/ProviderSession.java
@@ -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);
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 3d52ac558605..4c8e70ae5109 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);