Merge "Too short error message on CDC is no longer red." into main

This commit is contained in:
Joshua Mccloskey
2024-07-19 21:38:01 +00:00
committed by Android (Google) Code Review
4 changed files with 79 additions and 5 deletions

View File

@@ -36,19 +36,25 @@ import static com.google.common.truth.Truth.assertThat;
import static com.google.common.truth.Truth.assertWithMessage;
import static org.robolectric.RuntimeEnvironment.application;
import static org.robolectric.Shadows.shadowOf;
import android.annotation.ColorInt;
import android.app.admin.DevicePolicyManager;
import android.app.admin.DevicePolicyManager.PasswordComplexity;
import android.app.admin.PasswordMetrics;
import android.app.admin.PasswordPolicy;
import android.content.Intent;
import android.os.Looper;
import android.os.UserHandle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.TextView;
import androidx.recyclerview.widget.RecyclerView;
import com.android.internal.widget.LockscreenCredential;
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.password.ChooseLockPassword.ChooseLockPasswordFragment;
import com.android.settings.password.ChooseLockPassword.IntentBuilder;
import com.android.settings.testutils.shadow.SettingsShadowResources;
@@ -515,6 +521,52 @@ public class ChooseLockPasswordTest {
assertThat(pinAutoConfirmOption.isChecked()).isFalse();
}
@Test
public void defaultMessage_shouldBeInTextColorPrimary() {
final ChooseLockPassword passwordActivity = setupActivityWithPinTypeAndDefaultPolicy();
final ChooseLockPasswordFragment fragment = getChooseLockPasswordFragment(passwordActivity);
final ScrollToParentEditText passwordEntry = passwordActivity.findViewById(R.id.password_entry);
final RecyclerView view = (RecyclerView) fragment.getPasswordRequirementsView();
@ColorInt final int textColorPrimary = Utils.getColorAttrDefaultColor(passwordActivity,
android.R.attr.textColorPrimary);
passwordEntry.setText("");
fragment.updateUi();
shadowOf(Looper.getMainLooper()).idle();
TextView textView = (TextView)view.getLayoutManager().findViewByPosition(0);
assertThat(textView.getCurrentTextColor()).isEqualTo(textColorPrimary);
}
@Test
public void errorMessage_shouldBeColorError() {
final ChooseLockPassword passwordActivity = setupActivityWithPinTypeAndDefaultPolicy();
final ChooseLockPasswordFragment fragment = getChooseLockPasswordFragment(passwordActivity);
final ScrollToParentEditText passwordEntry = passwordActivity.findViewById(R.id.password_entry);
final RecyclerView view = (RecyclerView) fragment.getPasswordRequirementsView();
@ColorInt final int textColorPrimary = Utils.getColorAttrDefaultColor(passwordActivity,
android.R.attr.textColorPrimary);
@ColorInt final int colorError = Utils.getColorAttrDefaultColor(passwordActivity,
android.R.attr.colorError);
passwordEntry.setText("");
fragment.updateUi();
shadowOf(Looper.getMainLooper()).idle();
TextView textView = (TextView)view.getLayoutManager().findViewByPosition(0);
assertThat(textView.getCurrentTextColor()).isEqualTo(textColorPrimary);
// Password must be fewer than 17 digits, so this should give an error.
passwordEntry.setText("a".repeat(17));
fragment.updateUi();
shadowOf(Looper.getMainLooper()).idle();
textView = (TextView)view.getLayoutManager().findViewByPosition(0);
assertThat(textView.getCurrentTextColor()).isEqualTo(colorError);
}
private ChooseLockPassword setupActivityWithPinTypeAndDefaultPolicy() {
PasswordPolicy policy = new PasswordPolicy();
policy.quality = PASSWORD_QUALITY_UNSPECIFIED;
@@ -543,7 +595,7 @@ public class ChooseLockPasswordTest {
.setForFingerprint(addFingerprintExtra)
.build());
ChooseLockPasswordFragment fragment = getChooseLockPasswordFragment(passwordActivity);
return Shadows.shadowOf(((GlifLayout) fragment.getView()).getIcon());
return shadowOf(((GlifLayout) fragment.getView()).getIcon());
}
private void assertPasswordValidationResult(PasswordMetrics minMetrics,