summaryrefslogtreecommitdiff
path: root/services/credentials/java
diff options
context:
space:
mode:
author Omer Ozer <omerozer@google.com> 2023-03-03 01:33:06 +0000
committer Omer Ozer <omerozer@google.com> 2023-03-08 00:18:29 +0000
commit5e2914e8f8d45fd99952b669fb6190d31e62209e (patch)
tree3a54cf8d633652bf3067073b55c02a1a6e2009f5 /services/credentials/java
parent2f0523ee9c6d5b987811de2ce96bc3b7e152a35f (diff)
Adding tests for ProviderRegistryGetSession
Bug: 270601204 Test: atest FrameworksServicesTests:com.android.server.credentials.ProviderRegistryGetSessionTest Change-Id: Ida1e6db1e53eb394aa11f0d97eaab6552a1552b0
Diffstat (limited to 'services/credentials/java')
-rw-r--r--services/credentials/java/com/android/server/credentials/CredentialDescriptionRegistry.java22
-rw-r--r--services/credentials/java/com/android/server/credentials/CredentialManagerService.java22
-rw-r--r--services/credentials/java/com/android/server/credentials/GetRequestSession.java2
-rw-r--r--services/credentials/java/com/android/server/credentials/ProviderRegistryGetSession.java19
-rw-r--r--services/credentials/java/com/android/server/credentials/ProviderSession.java2
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,