diff --git a/res/values/strings.xml b/res/values/strings.xml index b90b57e832f..49c8e92be7c 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -1620,6 +1620,13 @@ Must contain at least %d character Must be at least %d characters + + + {count, plural, + =1 {If using only numbers, must be at least 1 digit} + other {If using only numbers, must be at least # digits} + } + PIN must contain at least %d digit diff --git a/src/com/android/settings/password/ChooseLockPassword.java b/src/com/android/settings/password/ChooseLockPassword.java index 7b0955e13d2..199d584cc5c 100644 --- a/src/com/android/settings/password/ChooseLockPassword.java +++ b/src/com/android/settings/password/ChooseLockPassword.java @@ -39,6 +39,7 @@ import static com.android.internal.widget.PasswordValidationError.NOT_ENOUGH_UPP import static com.android.internal.widget.PasswordValidationError.RECENTLY_USED; import static com.android.internal.widget.PasswordValidationError.TOO_LONG; import static com.android.internal.widget.PasswordValidationError.TOO_SHORT; +import static com.android.internal.widget.PasswordValidationError.TOO_SHORT_WHEN_ALL_NUMERIC; import static com.android.settings.password.ChooseLockSettingsHelper.EXTRA_KEY_UNIFICATION_PROFILE_CREDENTIAL; import static com.android.settings.password.ChooseLockSettingsHelper.EXTRA_KEY_UNIFICATION_PROFILE_ID; @@ -91,6 +92,7 @@ import com.android.settings.SetupWizardUtils; import com.android.settings.Utils; import com.android.settings.core.InstrumentedFragment; import com.android.settings.notification.RedactionInterstitial; +import com.android.settingslib.utils.StringUtil; import com.google.android.setupcompat.template.FooterBarMixin; import com.google.android.setupcompat.template.FooterButton; @@ -834,6 +836,11 @@ public class ChooseLockPassword extends SettingsActivity { : R.plurals.lockpassword_pin_too_short, error.requirement, error.requirement)); break; + case TOO_SHORT_WHEN_ALL_NUMERIC: + messages.add( + StringUtil.getIcuPluralsString(getContext(), error.requirement, + R.string.lockpassword_password_too_short_all_numeric)); + break; case TOO_LONG: messages.add(getResources().getQuantityString( mIsAlphaMode diff --git a/tests/robotests/src/com/android/settings/password/ChooseLockPasswordTest.java b/tests/robotests/src/com/android/settings/password/ChooseLockPasswordTest.java index e789b61f188..3c50c6bf2f4 100644 --- a/tests/robotests/src/com/android/settings/password/ChooseLockPasswordTest.java +++ b/tests/robotests/src/com/android/settings/password/ChooseLockPasswordTest.java @@ -56,7 +56,6 @@ import com.google.android.setupdesign.GlifLayout; import org.junit.After; import org.junit.Before; -import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.Robolectric; @@ -74,13 +73,10 @@ import org.robolectric.shadows.ShadowDrawable; }) public class ChooseLockPasswordTest { - private ShadowDevicePolicyManager mShadowDpm; - @Before public void setUp() { SettingsShadowResources.overrideResource( com.android.internal.R.string.config_headlineFontFamily, ""); - mShadowDpm = ShadowDevicePolicyManager.getShadow(); } @After @@ -191,7 +187,6 @@ public class ChooseLockPasswordTest { } @Test - @Ignore public void processAndValidatePasswordRequirements_minPasswordComplexityStricter_password() { PasswordPolicy policy = new PasswordPolicy(); policy.quality = PASSWORD_QUALITY_SOMETHING; @@ -201,7 +196,6 @@ public class ChooseLockPasswordTest { /* minComplexity= */ PASSWORD_COMPLEXITY_MEDIUM, /* passwordType= */ PASSWORD_QUALITY_ALPHABETIC, /* userEnteredPassword= */ LockscreenCredential.createNone(), - "Must contain at least 1 non-numerical character", "Must be at least 4 characters"); } @@ -323,7 +317,6 @@ public class ChooseLockPasswordTest { } @Test - @Ignore public void processAndValidatePasswordRequirements_requirementsUpdateAccordingToMinComplexityAndUserInput_empty() { PasswordPolicy policy = new PasswordPolicy(); policy.quality = PASSWORD_QUALITY_UNSPECIFIED; @@ -334,11 +327,10 @@ public class ChooseLockPasswordTest { /* passwordType= */ PASSWORD_QUALITY_ALPHABETIC, /* userEnteredPassword= */ LockscreenCredential.createNone(), "Must be at least 6 characters", - "Must contain at least 1 non-numerical character"); + "If using only numbers, must be at least 8 digits"); } @Test - @Ignore public void processAndValidatePasswordRequirements_requirementsUpdateAccordingToMinComplexityAndUserInput_numeric() { PasswordPolicy policy = new PasswordPolicy(); policy.quality = PASSWORD_QUALITY_UNSPECIFIED; @@ -349,7 +341,7 @@ public class ChooseLockPasswordTest { /* passwordType= */ PASSWORD_QUALITY_ALPHABETIC, /* userEnteredPassword= */ LockscreenCredential.createPassword("1"), "Must be at least 6 characters", - "Must contain at least 1 non-numerical character"); + "If using only numbers, must be at least 8 digits"); } @Test