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() {