Change to show two footer buttons in SUW lockscreen page.

Bug: 121183851
Test: RunSettingsRoboTests
Change-Id: Id850e10a10bb8f3a344ef986e07bab1c39c37aa6
This commit is contained in:
pastychang
2018-12-24 17:16:14 +08:00
parent eb5e435dc6
commit 382d34dc50
5 changed files with 74 additions and 12 deletions

View File

@@ -408,9 +408,9 @@ public class ChooseLockPassword extends SettingsActivity {
ViewGroup container = view.findViewById(R.id.password_container); ViewGroup container = view.findViewById(R.id.password_container);
container.setOpticalInsets(Insets.NONE); container.setOpticalInsets(Insets.NONE);
mSkipButton = (Button) view.findViewById(R.id.skip_button); mSkipButton = view.findViewById(R.id.skip_button);
mSkipButton.setOnClickListener(this); mSkipButton.setOnClickListener(this);
mNextButton = (Button) view.findViewById(R.id.next_button); mNextButton = view.findViewById(R.id.next_button);
mNextButton.setOnClickListener(this); mNextButton.setOnClickListener(this);
mClearButton = view.findViewById(R.id.clear_button); mClearButton = view.findViewById(R.id.clear_button);
mClearButton.setOnClickListener(this); mClearButton.setOnClickListener(this);
@@ -894,12 +894,13 @@ public class ChooseLockPassword extends SettingsActivity {
mPasswordRequirementAdapter.setRequirements(messages); mPasswordRequirementAdapter.setRequirements(messages);
// Enable/Disable the next button accordingly. // Enable/Disable the next button accordingly.
setNextEnabled(errorCode == NO_ERROR); setNextEnabled(errorCode == NO_ERROR);
mClearButton.setVisibility(View.GONE);
} else { } else {
// Hide password requirement view when we are just asking user to confirm the pw. // Hide password requirement view when we are just asking user to confirm the pw.
mPasswordRestrictionView.setVisibility(View.GONE); mPasswordRestrictionView.setVisibility(View.GONE);
setHeaderText(getString(mUiStage.getHint(mIsAlphaMode, getStageType()))); setHeaderText(getString(mUiStage.getHint(mIsAlphaMode, getStageType())));
setNextEnabled(canInput && length >= mPasswordMinLength); setNextEnabled(canInput && length >= mPasswordMinLength);
mClearButton.setEnabled(canInput && length > 0); mClearButton.setVisibility(toVisibility(canInput && length > 0));
} }
int message = mUiStage.getMessage(mIsAlphaMode, getStageType()); int message = mUiStage.getMessage(mIsAlphaMode, getStageType());
if (message != 0) { if (message != 0) {
@@ -909,13 +910,11 @@ public class ChooseLockPassword extends SettingsActivity {
mMessage.setVisibility(View.INVISIBLE); mMessage.setVisibility(View.INVISIBLE);
} }
mClearButton.setVisibility(toVisibility(mUiStage != Stage.Introduction));
setNextText(mUiStage.buttonText); setNextText(mUiStage.buttonText);
mPasswordEntryInputDisabler.setInputEnabled(canInput); mPasswordEntryInputDisabler.setInputEnabled(canInput);
} }
private int toVisibility(boolean visibleOrGone) { protected int toVisibility(boolean visibleOrGone) {
return visibleOrGone ? View.VISIBLE : View.GONE; return visibleOrGone ? View.VISIBLE : View.GONE;
} }

View File

@@ -135,9 +135,13 @@ public class SetupChooseLockPassword extends ChooseLockPassword {
@Override @Override
protected void updateUi() { protected void updateUi() {
super.updateUi(); super.updateUi();
// Show the skip button during SUW but not during Settings > Biometric Enrollment // 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) { if (mOptionsButton != null) {
mOptionsButton.setVisibility( mOptionsButton.setVisibility(
mUiStage == Stage.Introduction ? View.VISIBLE : View.GONE); mUiStage == Stage.Introduction ? View.VISIBLE : View.GONE);

View File

@@ -59,6 +59,7 @@ public class SetupChooseLockPattern extends ChooseLockPattern {
@Nullable @Nullable
private Button mOptionsButton; private Button mOptionsButton;
private Button mSkipButton;
@Override @Override
public View onCreateView( public View onCreateView(
@@ -71,9 +72,8 @@ public class SetupChooseLockPattern extends ChooseLockPattern {
.show(getChildFragmentManager(), null)); .show(getChildFragmentManager(), null));
} }
// Show the skip button during SUW but not during Settings > Biometric Enrollment // Show the skip button during SUW but not during Settings > Biometric Enrollment
Button skipButton = view.findViewById(R.id.skip_button); mSkipButton = view.findViewById(R.id.skip_button);
skipButton.setVisibility(View.VISIBLE); mSkipButton.setOnClickListener(v -> {
skipButton.setOnClickListener(v -> {
SetupSkipDialog dialog = SetupSkipDialog.newInstance( SetupSkipDialog dialog = SetupSkipDialog.newInstance(
getActivity().getIntent() getActivity().getIntent()
.getBooleanExtra(SetupSkipDialog.EXTRA_FRP_SUPPORTED, false)); .getBooleanExtra(SetupSkipDialog.EXTRA_FRP_SUPPORTED, false));
@@ -100,6 +100,12 @@ public class SetupChooseLockPattern extends ChooseLockPattern {
stage == Stage.ChoiceTooShort || stage == Stage.FirstChoiceValid) stage == Stage.ChoiceTooShort || stage == Stage.FirstChoiceValid)
? View.VISIBLE : View.INVISIBLE); ? View.VISIBLE : View.INVISIBLE);
} }
if (stage.leftMode == LeftButtonMode.Gone && stage == Stage.Introduction) {
mSkipButton.setVisibility(View.VISIBLE);
} else {
mSkipButton.setVisibility(View.GONE);
}
} }
@Override @Override

View File

@@ -29,10 +29,13 @@ import androidx.appcompat.app.AlertDialog;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.password.ChooseLockGeneric.ChooseLockGenericFragment; 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.ChooseLockPassword.IntentBuilder;
import com.android.settings.password.SetupChooseLockPassword.SetupChooseLockPasswordFragment; import com.android.settings.password.SetupChooseLockPassword.SetupChooseLockPasswordFragment;
import com.android.settings.testutils.shadow.SettingsShadowResources; 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.testutils.shadow.ShadowUtils;
import com.android.settings.widget.ScrollToParentEditText;
import org.junit.After; import org.junit.After;
import org.junit.Before; import org.junit.Before;
@@ -51,7 +54,7 @@ import java.util.Collections;
import java.util.List; import java.util.List;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
@Config(shadows = {SettingsShadowResources.class, ShadowUtils.class}) @Config(shadows = {SettingsShadowResources.class, ShadowUtils.class, ShadowAlertDialogCompat.class})
public class SetupChooseLockPasswordTest { public class SetupChooseLockPasswordTest {
@Before @Before
@@ -130,6 +133,42 @@ public class SetupChooseLockPasswordTest {
.isEqualTo("bar"); .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() { private SetupChooseLockPassword createSetupChooseLockPassword() {
final Intent intent = final Intent intent =
SetupChooseLockPassword.modifyIntentForSetup( SetupChooseLockPassword.modifyIntentForSetup(

View File

@@ -164,6 +164,20 @@ public class SetupChooseLockPatternTest {
assertThat(findFragment(mActivity).mChosenPattern).isNull(); 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) { private ChooseLockPatternFragment findFragment(FragmentActivity activity) {
return (ChooseLockPatternFragment) return (ChooseLockPatternFragment)
activity.getSupportFragmentManager().findFragmentById(R.id.main_content); activity.getSupportFragmentManager().findFragmentById(R.id.main_content);