diff options
| author | 2023-03-03 01:33:06 +0000 | |
|---|---|---|
| committer | 2023-03-08 00:18:29 +0000 | |
| commit | 5e2914e8f8d45fd99952b669fb6190d31e62209e (patch) | |
| tree | 3a54cf8d633652bf3067073b55c02a1a6e2009f5 /services/credentials/java | |
| parent | 2f0523ee9c6d5b987811de2ce96bc3b7e152a35f (diff) | |
Adding tests for ProviderRegistryGetSession
Bug: 270601204
Test: atest FrameworksServicesTests:com.android.server.credentials.ProviderRegistryGetSessionTest
Change-Id: Ida1e6db1e53eb394aa11f0d97eaab6552a1552b0
Diffstat (limited to 'services/credentials/java')
5 files changed, 48 insertions, 19 deletions
diff --git a/services/credentials/java/com/android/server/credentials/CredentialDescriptionRegistry.java b/services/credentials/java/com/android/server/credentials/CredentialDescriptionRegistry.java index d768d234cd20..14c49b312f34 100644 --- a/services/credentials/java/com/android/server/credentials/CredentialDescriptionRegistry.java +++ b/services/credentials/java/com/android/server/credentials/CredentialDescriptionRegistry.java @@ -34,7 +34,7 @@ import java.util.Set; import java.util.concurrent.locks.ReentrantLock; /** Contains information on what CredentialProvider has what provisioned Credential. */ -public final class CredentialDescriptionRegistry { +public class CredentialDescriptionRegistry { private static final int MAX_ALLOWED_CREDENTIAL_DESCRIPTIONS = 128; private static final int MAX_ALLOWED_ENTRIES_PER_PROVIDER = 16; @@ -54,7 +54,8 @@ public final class CredentialDescriptionRegistry { final String mFlattenedRequest; final List<CredentialEntry> mCredentialEntries; - private FilterResult(String packageName, + @VisibleForTesting + FilterResult(String packageName, String flattenedRequest, List<CredentialEntry> credentialEntries) { mPackageName = packageName; @@ -92,10 +93,10 @@ public final class CredentialDescriptionRegistry { } } - /** Clears an existing session for a given user identifier. */ + /** Clears an existing session for a given user identifier. Used when testing only. */ @GuardedBy("sLock") @VisibleForTesting - public static void clearAllSessions() { + static void clearAllSessions() { sLock.lock(); try { sCredentialDescriptionSessionPerUser.clear(); @@ -104,6 +105,19 @@ public final class CredentialDescriptionRegistry { } } + /** Sets an existing session for a given user identifier. Used when testing only. */ + @GuardedBy("sLock") + @VisibleForTesting + static void setSession(int userId, CredentialDescriptionRegistry + credentialDescriptionRegistry) { + sLock.lock(); + try { + sCredentialDescriptionSessionPerUser.put(userId, credentialDescriptionRegistry); + } finally { + sLock.unlock(); + } + } + private Map<String, Set<CredentialDescription>> mCredentialDescriptions; private int mTotalDescriptionCount; diff --git a/services/credentials/java/com/android/server/credentials/CredentialManagerService.java b/services/credentials/java/com/android/server/credentials/CredentialManagerService.java index 9c870050449c..6e998c4ef195 100644 --- a/services/credentials/java/com/android/server/credentials/CredentialManagerService.java +++ b/services/credentials/java/com/android/server/credentials/CredentialManagerService.java @@ -296,6 +296,12 @@ 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)); } @@ -358,6 +364,14 @@ public final class CredentialManagerService return providerSessions; } + private List<CredentialProviderInfo> getServicesForCredentialDescription(int userId) { + return CredentialProviderInfoFactory.getCredentialProviderServices( + mContext, + userId, + CredentialManager.PROVIDER_FILTER_ALL_PROVIDERS, + new HashSet<>()); + } + @Override @GuardedBy("CredentialDescriptionRegistry.sLock") public void onUserStopped(@NonNull TargetUser user) { @@ -813,14 +827,6 @@ public final class CredentialManagerService session.executeUnregisterRequest(request, callingPackage); } - - private List<CredentialProviderInfo> getServicesForCredentialDescription(int userId) { - return CredentialProviderInfoFactory.getCredentialProviderServices( - mContext, - userId, - CredentialManager.PROVIDER_FILTER_ALL_PROVIDERS, - new HashSet<>()); - } } private void enforceCallingPackage(String callingPackage, int callingUid) { diff --git a/services/credentials/java/com/android/server/credentials/GetRequestSession.java b/services/credentials/java/com/android/server/credentials/GetRequestSession.java index 8c6e5cea3bba..f59b32c667da 100644 --- a/services/credentials/java/com/android/server/credentials/GetRequestSession.java +++ b/services/credentials/java/com/android/server/credentials/GetRequestSession.java @@ -41,7 +41,7 @@ import java.util.ArrayList; * Central session for a single getCredentials request. This class listens to the * responses from providers, and the UX app, and updates the provider(S) state. */ -public final class GetRequestSession extends RequestSession<GetCredentialRequest, +public class GetRequestSession extends RequestSession<GetCredentialRequest, IGetCredentialCallback> implements ProviderSession.ProviderInternalCallback<GetCredentialResponse> { private static final String TAG = "GetRequestSession"; diff --git a/services/credentials/java/com/android/server/credentials/ProviderRegistryGetSession.java b/services/credentials/java/com/android/server/credentials/ProviderRegistryGetSession.java index 36d6b3dc7636..457806de7c9f 100644 --- a/services/credentials/java/com/android/server/credentials/ProviderRegistryGetSession.java +++ b/services/credentials/java/com/android/server/credentials/ProviderRegistryGetSession.java @@ -22,6 +22,7 @@ import android.annotation.UserIdInt; 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; @@ -33,6 +34,8 @@ import android.service.credentials.CredentialEntry; import android.service.credentials.CredentialProviderService; import android.telecom.Log; +import com.android.internal.annotations.VisibleForTesting; + import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -52,7 +55,8 @@ public class ProviderRegistryGetSession extends ProviderSession<CredentialOption Set<CredentialDescriptionRegistry.FilterResult>> { private static final String TAG = "ProviderRegistryGetSession"; - private static final String CREDENTIAL_ENTRY_KEY = "credential_key"; + @VisibleForTesting + static final String CREDENTIAL_ENTRY_KEY = "credential_key"; /** Creates a new provider session to be used by the request session. */ @Nullable @@ -60,13 +64,16 @@ 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) { return new ProviderRegistryGetSession( context, userId, getRequestSession, - getRequestSession.mClientAppInfo, + credentialProviderInfo, + callingAppInfo, credentialProviderPackageName, requestOption); } @@ -81,15 +88,17 @@ public class ProviderRegistryGetSession extends ProviderSession<CredentialOption private final String mCredentialProviderPackageName; @NonNull private final String mFlattenedRequestOptionString; - private List<CredentialEntry> mCredentialEntries; + @VisibleForTesting + List<CredentialEntry> mCredentialEntries; 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, null, requestOption, session, userId, null); + super(context, credentialProviderInfo, requestOption, session, userId, null); mCredentialDescriptionRegistry = CredentialDescriptionRegistry.forUser(userId); mCallingAppInfo = callingAppInfo; mCredentialProviderPackageName = servicePackageName; @@ -183,7 +192,7 @@ public class ProviderRegistryGetSession extends ProviderSession<CredentialOption providerPendingIntentResponse.getResultData()); if (getCredentialResponse != null) { if (mCallbacks != null) { - mCallbacks.onFinalResponseReceived(mComponentName, + ((GetRequestSession) mCallbacks).onFinalResponseReceived(mComponentName, getCredentialResponse); } return; diff --git a/services/credentials/java/com/android/server/credentials/ProviderSession.java b/services/credentials/java/com/android/server/credentials/ProviderSession.java index a85769572972..a8b9bf6b1fd6 100644 --- a/services/credentials/java/com/android/server/credentials/ProviderSession.java +++ b/services/credentials/java/com/android/server/credentials/ProviderSession.java @@ -114,7 +114,7 @@ public abstract class ProviderSession<T, R> @Nullable String message); } - protected ProviderSession(@NonNull Context context, @NonNull CredentialProviderInfo info, + protected ProviderSession(@NonNull Context context, @Nullable CredentialProviderInfo info, @NonNull T providerRequest, @Nullable ProviderInternalCallback callbacks, @NonNull int userId, |