summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/credentials/java/com/android/server/credentials/CredentialManagerService.java23
-rw-r--r--services/credentials/java/com/android/server/credentials/CredentialManagerServiceImpl.java2
-rw-r--r--services/credentials/java/com/android/server/credentials/CredentialManagerUi.java2
-rw-r--r--services/credentials/java/com/android/server/credentials/ProviderClearSession.java3
-rw-r--r--services/credentials/java/com/android/server/credentials/ProviderCreateSession.java2
-rw-r--r--services/credentials/java/com/android/server/credentials/ProviderGetSession.java2
-rw-r--r--services/credentials/java/com/android/server/credentials/ProviderSession.java25
7 files changed, 28 insertions, 31 deletions
diff --git a/services/credentials/java/com/android/server/credentials/CredentialManagerService.java b/services/credentials/java/com/android/server/credentials/CredentialManagerService.java
index dd180d0ae4e4..6793800364de 100644
--- a/services/credentials/java/com/android/server/credentials/CredentialManagerService.java
+++ b/services/credentials/java/com/android/server/credentials/CredentialManagerService.java
@@ -196,25 +196,36 @@ public final class CredentialManagerService
return;
}
- CredentialManagerServiceImpl serviceToBeRemoved = null;
+ List<CredentialManagerServiceImpl> servicesToBeRemoved = new ArrayList<>();
for (CredentialManagerServiceImpl service : services) {
if (service != null) {
CredentialProviderInfo credentialProviderInfo = service.getCredentialProviderInfo();
ComponentName componentName =
credentialProviderInfo.getServiceInfo().getComponentName();
if (packageName.equals(componentName.getPackageName())) {
- serviceToBeRemoved = service;
- removeServiceFromMultiModeSettings(componentName.flattenToString(), userId);
- break;
+ servicesToBeRemoved.add(service);
}
}
}
- if (serviceToBeRemoved != null) {
+
+ // Iterate over all the services to be removed, and remove them from the user configurable
+ // services cache, the system services cache as well as the setting key-value pair.
+ for (CredentialManagerServiceImpl serviceToBeRemoved : servicesToBeRemoved) {
removeServiceFromCache(serviceToBeRemoved, userId);
+ removeServiceFromSystemServicesCache(serviceToBeRemoved, userId);
+ removeServiceFromMultiModeSettings(serviceToBeRemoved.getComponentName()
+ .flattenToString(), userId);
CredentialDescriptionRegistry.forUser(userId)
.evictProviderWithPackageName(serviceToBeRemoved.getServicePackageName());
}
- // TODO("Iterate over system services and remove if needed")
+ }
+
+ @GuardedBy("mLock")
+ private void removeServiceFromSystemServicesCache(
+ CredentialManagerServiceImpl serviceToBeRemoved, int userId) {
+ if (mSystemServicesCacheList.get(userId) != null) {
+ mSystemServicesCacheList.get(userId).remove(serviceToBeRemoved);
+ }
}
@GuardedBy("mLock")
diff --git a/services/credentials/java/com/android/server/credentials/CredentialManagerServiceImpl.java b/services/credentials/java/com/android/server/credentials/CredentialManagerServiceImpl.java
index 808fdaea3de6..379800b31597 100644
--- a/services/credentials/java/com/android/server/credentials/CredentialManagerServiceImpl.java
+++ b/services/credentials/java/com/android/server/credentials/CredentialManagerServiceImpl.java
@@ -38,7 +38,6 @@ public final class CredentialManagerServiceImpl extends
AbstractPerUserSystemService<CredentialManagerServiceImpl, CredentialManagerService> {
private static final String TAG = "CredManSysServiceImpl";
- // TODO(b/210531) : Make final when update flow is fixed
@GuardedBy("mLock")
@NonNull
private CredentialProviderInfo mInfo;
@@ -72,7 +71,6 @@ public final class CredentialManagerServiceImpl extends
@GuardedBy("mLock")
protected ServiceInfo newServiceInfoLocked(@NonNull ComponentName serviceComponent)
throws PackageManager.NameNotFoundException {
- // TODO : Test update flows with multiple providers
if (mInfo != null) {
Slog.i(TAG, "newServiceInfoLocked, mInfo not null : "
+ mInfo.getServiceInfo().getComponentName().flattenToString() + " , "
diff --git a/services/credentials/java/com/android/server/credentials/CredentialManagerUi.java b/services/credentials/java/com/android/server/credentials/CredentialManagerUi.java
index 0dee7a44375d..c2b51029778e 100644
--- a/services/credentials/java/com/android/server/credentials/CredentialManagerUi.java
+++ b/services/credentials/java/com/android/server/credentials/CredentialManagerUi.java
@@ -47,7 +47,7 @@ public class CredentialManagerUi {
private final CredentialManagerUiCallback mCallbacks;
@NonNull
private final Context mContext;
- // TODO : Use for starting the activity for this user
+
private final int mUserId;
private UiStatus mStatus;
diff --git a/services/credentials/java/com/android/server/credentials/ProviderClearSession.java b/services/credentials/java/com/android/server/credentials/ProviderClearSession.java
index c1fb92d30fc3..1f0346a2b9d6 100644
--- a/services/credentials/java/com/android/server/credentials/ProviderClearSession.java
+++ b/services/credentials/java/com/android/server/credentials/ProviderClearSession.java
@@ -62,7 +62,6 @@ public final class ProviderClearSession extends ProviderSession<ClearCredentialS
android.credentials.ClearCredentialStateRequest clientRequest,
CallingAppInfo callingAppInfo
) {
- // TODO: Determine if provider needs to declare clear capability in manifest
return new ClearCredentialStateRequest(
callingAppInfo,
clientRequest.getData());
@@ -95,7 +94,7 @@ public final class ProviderClearSession extends ProviderSession<ClearCredentialS
mProviderSessionMetric.collectCandidateFrameworkException(mProviderException.getType());
}
mProviderSessionMetric.collectCandidateExceptionStatus(/*hasException=*/true);
- updateStatusAndInvokeCallback(toStatus(errorCode),
+ updateStatusAndInvokeCallback(Status.CANCELED,
/*source=*/ CredentialsSource.REMOTE_PROVIDER);
}
diff --git a/services/credentials/java/com/android/server/credentials/ProviderCreateSession.java b/services/credentials/java/com/android/server/credentials/ProviderCreateSession.java
index 4cdc6f445212..16beaa4eb13e 100644
--- a/services/credentials/java/com/android/server/credentials/ProviderCreateSession.java
+++ b/services/credentials/java/com/android/server/credentials/ProviderCreateSession.java
@@ -167,7 +167,7 @@ public final class ProviderCreateSession extends ProviderSession<
mProviderSessionMetric.collectCandidateFrameworkException(mProviderException.getType());
}
mProviderSessionMetric.collectCandidateExceptionStatus(/*hasException=*/true);
- updateStatusAndInvokeCallback(toStatus(errorCode),
+ updateStatusAndInvokeCallback(Status.CANCELED,
/*source=*/ CredentialsSource.REMOTE_PROVIDER);
}
diff --git a/services/credentials/java/com/android/server/credentials/ProviderGetSession.java b/services/credentials/java/com/android/server/credentials/ProviderGetSession.java
index 8070fa7ca9aa..1e80703378e0 100644
--- a/services/credentials/java/com/android/server/credentials/ProviderGetSession.java
+++ b/services/credentials/java/com/android/server/credentials/ProviderGetSession.java
@@ -220,7 +220,7 @@ public final class ProviderGetSession extends ProviderSession<BeginGetCredential
mProviderSessionMetric.collectCandidateFrameworkException(mProviderException.getType());
}
mProviderSessionMetric.collectCandidateExceptionStatus(/*hasException=*/true);
- updateStatusAndInvokeCallback(toStatus(errorCode),
+ updateStatusAndInvokeCallback(Status.CANCELED,
/*source=*/ CredentialsSource.REMOTE_PROVIDER);
}
diff --git a/services/credentials/java/com/android/server/credentials/ProviderSession.java b/services/credentials/java/com/android/server/credentials/ProviderSession.java
index 73fdc1ce2635..27b78a4b7b15 100644
--- a/services/credentials/java/com/android/server/credentials/ProviderSession.java
+++ b/services/credentials/java/com/android/server/credentials/ProviderSession.java
@@ -110,9 +110,7 @@ public abstract class ProviderSession<T, R>
* and is ready to return the final credential back to the user.
*/
public static boolean isCompletionStatus(Status status) {
- return status == Status.CREDENTIAL_RECEIVED_FROM_INTENT
- || status == Status.CREDENTIAL_RECEIVED_FROM_SELECTION
- || status == Status.COMPLETE;
+ return status == Status.COMPLETE || status == Status.EMPTY_RESPONSE;
}
/**
@@ -151,26 +149,17 @@ public abstract class ProviderSession<T, R>
mProviderSessionUid = MetricUtilities.getPackageUid(mContext, mComponentName);
}
- /** Provider status at various states of the request session. */
- // TODO: Review status values, and adjust where needed
+ /** Provider status at various states of the provider session. */
enum Status {
NOT_STARTED,
PENDING,
- REQUIRES_AUTHENTICATION,
CREDENTIALS_RECEIVED,
SERVICE_DEAD,
- CREDENTIAL_RECEIVED_FROM_INTENT,
- PENDING_INTENT_INVOKED,
- CREDENTIAL_RECEIVED_FROM_SELECTION,
- SAVE_ENTRIES_RECEIVED, CANCELED,
- NO_CREDENTIALS, EMPTY_RESPONSE, NO_CREDENTIALS_FROM_AUTH_ENTRY, COMPLETE
- }
-
- /** Converts exception to a provider session status. */
- @NonNull
- public static Status toStatus(int errorCode) {
- // TODO : Add more mappings as more flows are supported
- return Status.CANCELED;
+ SAVE_ENTRIES_RECEIVED,
+ CANCELED,
+ EMPTY_RESPONSE,
+ NO_CREDENTIALS_FROM_AUTH_ENTRY,
+ COMPLETE
}
protected static String generateUniqueId() {