Merge "Change to show two footer buttons in SUW lockscreen page."
diff --git a/src/com/android/settings/password/ChooseLockPassword.java b/src/com/android/settings/password/ChooseLockPassword.java
index 32d4edf..35bc45e 100644
--- a/src/com/android/settings/password/ChooseLockPassword.java
+++ b/src/com/android/settings/password/ChooseLockPassword.java
@@ -408,9 +408,9 @@
ViewGroup container = view.findViewById(R.id.password_container);
container.setOpticalInsets(Insets.NONE);
- mSkipButton = (Button) view.findViewById(R.id.skip_button);
+ mSkipButton = view.findViewById(R.id.skip_button);
mSkipButton.setOnClickListener(this);
- mNextButton = (Button) view.findViewById(R.id.next_button);
+ mNextButton = view.findViewById(R.id.next_button);
mNextButton.setOnClickListener(this);
mClearButton = view.findViewById(R.id.clear_button);
mClearButton.setOnClickListener(this);
@@ -894,12 +894,13 @@
mPasswordRequirementAdapter.setRequirements(messages);
// Enable/Disable the next button accordingly.
setNextEnabled(errorCode == NO_ERROR);
+ mClearButton.setVisibility(View.GONE);
} else {
// Hide password requirement view when we are just asking user to confirm the pw.
mPasswordRestrictionView.setVisibility(View.GONE);
setHeaderText(getString(mUiStage.getHint(mIsAlphaMode, getStageType())));
setNextEnabled(canInput && length >= mPasswordMinLength);
- mClearButton.setEnabled(canInput && length > 0);
+ mClearButton.setVisibility(toVisibility(canInput && length > 0));
}
int message = mUiStage.getMessage(mIsAlphaMode, getStageType());
if (message != 0) {
@@ -909,13 +910,11 @@
mMessage.setVisibility(View.INVISIBLE);
}
- mClearButton.setVisibility(toVisibility(mUiStage != Stage.Introduction));
-
setNextText(mUiStage.buttonText);
mPasswordEntryInputDisabler.setInputEnabled(canInput);
}
- private int toVisibility(boolean visibleOrGone) {
+ protected int toVisibility(boolean visibleOrGone) {
return visibleOrGone ? View.VISIBLE : View.GONE;
}
diff --git a/src/com/android/settings/password/SetupChooseLockPassword.java b/src/com/android/settings/password/SetupChooseLockPassword.java
index 8454cc5..2c443c2 100644
--- a/src/com/android/settings/password/SetupChooseLockPassword.java
+++ b/src/com/android/settings/password/SetupChooseLockPassword.java
@@ -135,9 +135,13 @@
@Override
protected void updateUi() {
super.updateUi();
-
// Show the skip button during SUW but not during Settings > Biometric Enrollment
- mSkipButton.setVisibility(View.VISIBLE);
+ if (mUiStage == Stage.Introduction) {
+ mSkipButton.setVisibility(View.VISIBLE);
+ } else {
+ mSkipButton.setVisibility(View.GONE);
+ }
+
if (mOptionsButton != null) {
mOptionsButton.setVisibility(
mUiStage == Stage.Introduction ? View.VISIBLE : View.GONE);
diff --git a/src/com/android/settings/password/SetupChooseLockPattern.java b/src/com/android/settings/password/SetupChooseLockPattern.java
index b24936b..0a32468 100644
--- a/src/com/android/settings/password/SetupChooseLockPattern.java
+++ b/src/com/android/settings/password/SetupChooseLockPattern.java
@@ -59,6 +59,7 @@
@Nullable
private Button mOptionsButton;
+ private Button mSkipButton;
@Override
public View onCreateView(
@@ -71,9 +72,8 @@
.show(getChildFragmentManager(), null));
}
// Show the skip button during SUW but not during Settings > Biometric Enrollment
- Button skipButton = view.findViewById(R.id.skip_button);
- skipButton.setVisibility(View.VISIBLE);
- skipButton.setOnClickListener(v -> {
+ mSkipButton = view.findViewById(R.id.skip_button);
+ mSkipButton.setOnClickListener(v -> {
SetupSkipDialog dialog = SetupSkipDialog.newInstance(
getActivity().getIntent()
.getBooleanExtra(SetupSkipDialog.EXTRA_FRP_SUPPORTED, false));
@@ -100,6 +100,12 @@
stage == Stage.ChoiceTooShort || stage == Stage.FirstChoiceValid)
? View.VISIBLE : View.INVISIBLE);
}
+
+ if (stage.leftMode == LeftButtonMode.Gone && stage == Stage.Introduction) {
+ mSkipButton.setVisibility(View.VISIBLE);
+ } else {
+ mSkipButton.setVisibility(View.GONE);
+ }
}
@Override
diff --git a/tests/robotests/src/com/android/settings/password/SetupChooseLockPasswordTest.java b/tests/robotests/src/com/android/settings/password/SetupChooseLockPasswordTest.java
index 0a08319..bee66cc 100644
--- a/tests/robotests/src/com/android/settings/password/SetupChooseLockPasswordTest.java
+++ b/tests/robotests/src/com/android/settings/password/SetupChooseLockPasswordTest.java
@@ -29,10 +29,13 @@
import com.android.settings.R;
import com.android.settings.password.ChooseLockGeneric.ChooseLockGenericFragment;
+import com.android.settings.password.ChooseLockPassword.ChooseLockPasswordFragment.Stage;
import com.android.settings.password.ChooseLockPassword.IntentBuilder;
import com.android.settings.password.SetupChooseLockPassword.SetupChooseLockPasswordFragment;
import com.android.settings.testutils.shadow.SettingsShadowResources;
+import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
import com.android.settings.testutils.shadow.ShadowUtils;
+import com.android.settings.widget.ScrollToParentEditText;
import org.junit.After;
import org.junit.Before;
@@ -51,7 +54,7 @@
import java.util.List;
@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {SettingsShadowResources.class, ShadowUtils.class})
+@Config(shadows = {SettingsShadowResources.class, ShadowUtils.class, ShadowAlertDialogCompat.class})
public class SetupChooseLockPasswordTest {
@Before
@@ -130,6 +133,42 @@
.isEqualTo("bar");
}
+ @Test
+ public void createActivity_skipButtonInIntroductionStage_shouldBeVisible() {
+ SetupChooseLockPassword activity = createSetupChooseLockPassword();
+
+ Button skipButton = activity.findViewById(R.id.skip_button);
+ assertThat(skipButton).isNotNull();
+ assertThat(skipButton.getVisibility()).isEqualTo(View.VISIBLE);
+
+ skipButton.performClick();
+ AlertDialog chooserDialog = ShadowAlertDialogCompat.getLatestAlertDialog();
+ assertThat(chooserDialog).isNotNull();
+ }
+
+ @Test
+ public void createActivity_inputPasswordInConfirmStage_clearButtonShouldBeVisible() {
+ SetupChooseLockPassword activity = createSetupChooseLockPassword();
+
+ SetupChooseLockPasswordFragment fragment =
+ (SetupChooseLockPasswordFragment) activity.getSupportFragmentManager()
+ .findFragmentById(R.id.main_content);
+
+ ScrollToParentEditText passwordEntry = activity.findViewById(R.id.password_entry);
+ passwordEntry.setText("");
+ fragment.updateStage(Stage.NeedToConfirm);
+
+ Button skipButton = activity.findViewById(R.id.skip_button);
+ Button clearButton = activity.findViewById(R.id.clear_button);
+ assertThat(skipButton.getVisibility()).isEqualTo(View.GONE);
+ assertThat(clearButton.getVisibility()).isEqualTo(View.GONE);
+
+ passwordEntry.setText("1234");
+ fragment.updateUi();
+ assertThat(skipButton.getVisibility()).isEqualTo(View.GONE);
+ assertThat(clearButton.getVisibility()).isEqualTo(View.VISIBLE);
+ }
+
private SetupChooseLockPassword createSetupChooseLockPassword() {
final Intent intent =
SetupChooseLockPassword.modifyIntentForSetup(
diff --git a/tests/robotests/src/com/android/settings/password/SetupChooseLockPatternTest.java b/tests/robotests/src/com/android/settings/password/SetupChooseLockPatternTest.java
index 649a1ba..6b6c60e 100644
--- a/tests/robotests/src/com/android/settings/password/SetupChooseLockPatternTest.java
+++ b/tests/robotests/src/com/android/settings/password/SetupChooseLockPatternTest.java
@@ -164,6 +164,20 @@
assertThat(findFragment(mActivity).mChosenPattern).isNull();
}
+ @Test
+ public void createActivity_enterPattern_clearButtonShouldBeVisible() {
+ ChooseLockPatternFragment fragment = findFragment(mActivity);
+
+ Button skipButton = mActivity.findViewById(R.id.skip_button);
+ Button clearButton = mActivity.findViewById(R.id.footerLeftButton);
+ assertThat(skipButton.getVisibility()).isEqualTo(View.VISIBLE);
+ assertThat(clearButton.getVisibility()).isEqualTo(View.GONE);
+
+ enterPattern();
+ assertThat(skipButton.getVisibility()).isEqualTo(View.GONE);
+ assertThat(clearButton.getVisibility()).isEqualTo(View.VISIBLE);
+ }
+
private ChooseLockPatternFragment findFragment(FragmentActivity activity) {
return (ChooseLockPatternFragment)
activity.getSupportFragmentManager().findFragmentById(R.id.main_content);