Display TOO_SHORT_WHEN_ALL_NUMERIC

To distinguish the requirement between all numeric
and not all numeric when COMPLEXITY_HIGH.

Fix: 227149118
Fix: 173167839
Test: manual & robolectric
Change-Id: I1f682625d8e86963218dda43b626a9e55d169fb3
This commit is contained in:
Chaohui Wang
2022-04-18 23:25:36 +08:00
parent 22cda47705
commit 140cb75566
3 changed files with 16 additions and 10 deletions

View File

@@ -1610,6 +1610,13 @@
<item quantity="one">Must contain at least <xliff:g id="count" example="1">%d</xliff:g> character</item>
<item quantity="other">Must be at least <xliff:g id="count" example="3">%d</xliff:g> characters</item>
</plurals>
<!-- Hint shown in dialog screen when password is too short and only using numbers. [CHAR LIMIT=NONE] -->
<string name="lockpassword_password_too_short_all_numeric">
{count, plural,
=1 {If using only numbers, must be at least 1 digit}
other {If using only numbers, must be at least # digits}
}
</string>
<!-- Hint shown in dialog screen when PIN is too short -->
<plurals name="lockpassword_pin_too_short">
<item quantity="one">PIN must contain at least <xliff:g id="count" example="1">%d</xliff:g> digit</item>

View File

@@ -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

View File

@@ -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