From 36120b8a4cfec75c548a5b3b30212a6d0f74af20 Mon Sep 17 00:00:00 2001 From: Pavel Grafov Date: Tue, 7 Sep 2021 18:08:36 +0100 Subject: [PATCH] Respect PASSWORD_QUALITY_MANAGED for biometrics Bug: 195488124 Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=\ com.android.settings.password.ChooseLockGenericControllerTest Test: manual with a modified TestDPC Change-Id: Ifa15877c735bb0f396051af04a4e012a606bf9e1 --- .../password/ChooseLockGenericController.java | 3 ++- .../password/ChooseLockGenericControllerTest.java | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/password/ChooseLockGenericController.java b/src/com/android/settings/password/ChooseLockGenericController.java index 1b951d4f968..cd9eb2fd44d 100644 --- a/src/com/android/settings/password/ChooseLockGenericController.java +++ b/src/com/android/settings/password/ChooseLockGenericController.java @@ -190,7 +190,8 @@ public class ChooseLockGenericController { * requirements. The lock's visibility ({@link #isScreenLockVisible}) is not considered here. */ public boolean isScreenLockEnabled(ScreenLockType type) { - return type.maxQuality >= upgradeQuality(PASSWORD_QUALITY_UNSPECIFIED); + return !mLockPatternUtils.isCredentialsDisabledForUser(mUserId) + && type.maxQuality >= upgradeQuality(PASSWORD_QUALITY_UNSPECIFIED); } /** diff --git a/tests/robotests/src/com/android/settings/password/ChooseLockGenericControllerTest.java b/tests/robotests/src/com/android/settings/password/ChooseLockGenericControllerTest.java index 049a34969c1..996d5722693 100644 --- a/tests/robotests/src/com/android/settings/password/ChooseLockGenericControllerTest.java +++ b/tests/robotests/src/com/android/settings/password/ChooseLockGenericControllerTest.java @@ -22,6 +22,7 @@ import static android.app.admin.DevicePolicyManager.PASSWORD_COMPLEXITY_MEDIUM; import static android.app.admin.DevicePolicyManager.PASSWORD_COMPLEXITY_NONE; import static android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC; import static android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_COMPLEX; +import static android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_MANAGED; import static android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_NUMERIC; import static android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_NUMERIC_COMPLEX; import static android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_SOMETHING; @@ -189,6 +190,16 @@ public class ChooseLockGenericControllerTest { assertThat(mController.isScreenLockEnabled(ScreenLockType.PASSWORD)).isTrue(); } + @Test + public void isScreenLockEnabled_QualityManaged() { + setDevicePolicyPasswordQuality(PASSWORD_QUALITY_MANAGED); + assertThat(mController.isScreenLockEnabled(ScreenLockType.NONE)).isFalse(); + assertThat(mController.isScreenLockEnabled(ScreenLockType.SWIPE)).isFalse(); + assertThat(mController.isScreenLockEnabled(ScreenLockType.PATTERN)).isFalse(); + assertThat(mController.isScreenLockEnabled(ScreenLockType.PIN)).isFalse(); + assertThat(mController.isScreenLockEnabled(ScreenLockType.PASSWORD)).isFalse(); + } + @Test public void isScreenLockEnabled_NoneComplexity() { when(mLockPatternUtils.getRequestedPasswordComplexity(anyInt(), anyBoolean())) @@ -353,6 +364,9 @@ public class ChooseLockGenericControllerTest { when(mLockPatternUtils.getRequestedPasswordMetrics(anyInt(), anyBoolean())) .thenReturn(policy.getMinMetrics()); + + when(mLockPatternUtils.isCredentialsDisabledForUser(anyInt())) + .thenReturn(quality == PASSWORD_QUALITY_MANAGED); } private ChooseLockGenericController.Builder createBuilder() {