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