From 3b1802458d8ef2483370cb32c2f47e449e1c25a5 Mon Sep 17 00:00:00 2001 From: Becca Hughes Date: Wed, 29 Mar 2023 23:50:30 +0000 Subject: [PATCH] Move DeviceConfig check to Service Moves DC feature flag evalutation to service since clients do not have permisssion. Test: gts Bug: 275754582 Change-Id: Ic56cae1ad52d9df2daab6c82da0e57087a91408c --- .../java/android/credentials/CredentialManager.java | 12 ++++++++++-- .../android/credentials/ICredentialManager.aidl | 2 ++ .../credentials/CredentialManagerService.java | 13 +++++++++++++ 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/core/java/android/credentials/CredentialManager.java b/core/java/android/credentials/CredentialManager.java index 00ce17adfda60..9140d02e223d6 100644 --- a/core/java/android/credentials/CredentialManager.java +++ b/core/java/android/credentials/CredentialManager.java @@ -460,9 +460,17 @@ public final class CredentialManager { return false; } + /** + * Returns whether the service is enabled. + * + * @hide + */ private boolean isServiceEnabled() { - return DeviceConfig.getBoolean( - DeviceConfig.NAMESPACE_CREDENTIAL, DEVICE_CONFIG_ENABLE_CREDENTIAL_MANAGER, true); + try { + return mService.isServiceEnabled(); + } catch (RemoteException e) { + return false; + } } /** diff --git a/core/java/android/credentials/ICredentialManager.aidl b/core/java/android/credentials/ICredentialManager.aidl index 5fde96b0b9ff0..b779c56035d31 100644 --- a/core/java/android/credentials/ICredentialManager.aidl +++ b/core/java/android/credentials/ICredentialManager.aidl @@ -58,5 +58,7 @@ interface ICredentialManager { List getCredentialProviderServices(in int userId, in int providerFilter); List getCredentialProviderServicesForTesting(in int providerFilter); + + boolean isServiceEnabled(); } diff --git a/services/credentials/java/com/android/server/credentials/CredentialManagerService.java b/services/credentials/java/com/android/server/credentials/CredentialManagerService.java index 531a6bdc0130f..92379d6deb8e8 100644 --- a/services/credentials/java/com/android/server/credentials/CredentialManagerService.java +++ b/services/credentials/java/com/android/server/credentials/CredentialManagerService.java @@ -825,6 +825,19 @@ public final class CredentialManagerService mContext, userId, providerFilter, getEnabledProviders()); } + @Override + public boolean isServiceEnabled() { + final long origId = Binder.clearCallingIdentity(); + try { + return DeviceConfig.getBoolean( + DeviceConfig.NAMESPACE_CREDENTIAL, + CredentialManager.DEVICE_CONFIG_ENABLE_CREDENTIAL_MANAGER, + false); + } finally { + Binder.restoreCallingIdentity(origId); + } + } + @SuppressWarnings("GuardedBy") // ErrorProne requires service.mLock which is the same // this.mLock private Set getEnabledProviders() {