From e7505773966c242de46c3ed66b28c1817fd67f3a Mon Sep 17 00:00:00 2001 From: Omer Ozer Date: Wed, 15 Feb 2023 21:59:59 +0000 Subject: [PATCH] Update creddesc flag method. Bug: 268143699 Test: manual Change-Id: I7d42f4f4cb21fdb8c70cd0a084755299f8f45c30 --- .../credentials/CredentialManager.java | 24 ++++++++++--------- .../credentials/CredentialManagerTest.java | 8 ------- .../credentials/CredentialManagerService.java | 11 +++++++-- 3 files changed, 22 insertions(+), 21 deletions(-) diff --git a/core/java/android/credentials/CredentialManager.java b/core/java/android/credentials/CredentialManager.java index ff7fc36e355d9..87281cc07f311 100644 --- a/core/java/android/credentials/CredentialManager.java +++ b/core/java/android/credentials/CredentialManager.java @@ -505,7 +505,19 @@ public final class CredentialManager { * * @hide */ - public static boolean isCredentialDescriptionApiEnabled() { + public static boolean isCredentialDescriptionApiEnabled(Context context) { + if (context == null) { + return false; + } + CredentialManager credentialManager = + (CredentialManager) context.getSystemService(Context.CREDENTIAL_SERVICE); + if (credentialManager != null) { + return credentialManager.isCredentialDescriptionApiEnabled(); + } + return false; + } + + private boolean isCredentialDescriptionApiEnabled() { return DeviceConfig.getBoolean( DeviceConfig.NAMESPACE_CREDENTIAL, DEVICE_CONFIG_ENABLE_CREDENTIAL_DESC_API, false); } @@ -527,11 +539,6 @@ public final class CredentialManager { */ public void registerCredentialDescription( @NonNull RegisterCredentialDescriptionRequest request) { - - if (!isCredentialDescriptionApiEnabled()) { - throw new UnsupportedOperationException("This API is not currently supported."); - } - requireNonNull(request, "request must not be null"); try { @@ -550,11 +557,6 @@ public final class CredentialManager { */ public void unregisterCredentialDescription( @NonNull UnregisterCredentialDescriptionRequest request) { - - if (!isCredentialDescriptionApiEnabled()) { - throw new UnsupportedOperationException("This API is not currently supported."); - } - requireNonNull(request, "request must not be null"); try { diff --git a/core/tests/coretests/src/android/credentials/CredentialManagerTest.java b/core/tests/coretests/src/android/credentials/CredentialManagerTest.java index 444e9f222ddc6..b533b4747c26a 100644 --- a/core/tests/coretests/src/android/credentials/CredentialManagerTest.java +++ b/core/tests/coretests/src/android/credentials/CredentialManagerTest.java @@ -19,7 +19,6 @@ package android.credentials; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertThrows; -import static org.junit.Assume.assumeTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.same; @@ -593,15 +592,12 @@ public class CredentialManagerTest { @Test public void testRegisterCredentialDescription_nullRequest() { - assumeTrue(CredentialManager.isCredentialDescriptionApiEnabled()); assertThrows(NullPointerException.class, () -> mCredentialManager.registerCredentialDescription(null)); } @Test public void testRegisterCredentialDescription_success() throws RemoteException { - assumeTrue(CredentialManager.isCredentialDescriptionApiEnabled()); - mCredentialManager.registerCredentialDescription(mRegisterRequest); verify(mMockCredentialManagerService).registerCredentialDescription(same(mRegisterRequest), eq(mPackageName)); @@ -609,16 +605,12 @@ public class CredentialManagerTest { @Test public void testUnregisterCredentialDescription_nullRequest() { - assumeTrue(CredentialManager.isCredentialDescriptionApiEnabled()); - assertThrows(NullPointerException.class, () -> mCredentialManager.unregisterCredentialDescription(null)); } @Test public void testUnregisterCredentialDescription_success() throws RemoteException { - assumeTrue(CredentialManager.isCredentialDescriptionApiEnabled()); - mCredentialManager.unregisterCredentialDescription(mUnregisterRequest); verify(mMockCredentialManagerService).unregisterCredentialDescription( same(mUnregisterRequest), eq(mPackageName)); diff --git a/services/credentials/java/com/android/server/credentials/CredentialManagerService.java b/services/credentials/java/com/android/server/credentials/CredentialManagerService.java index cce12a252e785..f3bbfb5afb55f 100644 --- a/services/credentials/java/com/android/server/credentials/CredentialManagerService.java +++ b/services/credentials/java/com/android/server/credentials/CredentialManagerService.java @@ -422,8 +422,7 @@ public final class CredentialManagerService GetRequestSession session) { List providerSessions; - // TODO(b/268143699): temporarily disable the flag due to bug. - if (false) { + if (isCredentialDescriptionApiEnabled()) { List optionsThatRequireActiveCredentials = request.getCredentialOptions().stream() .filter( @@ -776,6 +775,10 @@ public final class CredentialManagerService throws IllegalArgumentException, NonCredentialProviderCallerException { Log.i(TAG, "registerCredentialDescription"); + if (!isCredentialDescriptionApiEnabled()) { + throw new UnsupportedOperationException(); + } + enforceCallingPackage(callingPackage, Binder.getCallingUid()); List services = @@ -828,6 +831,10 @@ public final class CredentialManagerService throws IllegalArgumentException { Log.i(TAG, "registerCredentialDescription"); + if (!isCredentialDescriptionApiEnabled()) { + throw new UnsupportedOperationException(); + } + enforceCallingPackage(callingPackage, Binder.getCallingUid()); List services =