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);
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 @@ public class ChooseLockPassword extends SettingsActivity {
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 @@ public class ChooseLockPassword extends SettingsActivity {
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;
}

View File

@@ -135,9 +135,13 @@ public class SetupChooseLockPassword extends ChooseLockPassword {
@Override
protected void updateUi() {
super.updateUi();
// Show the skip button during SUW but not during Settings > Biometric Enrollment
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);

View File

@@ -59,6 +59,7 @@ public class SetupChooseLockPattern extends ChooseLockPattern {
@Nullable
private Button mOptionsButton;
private Button mSkipButton;
@Override
public View onCreateView(
@@ -71,9 +72,8 @@ public class SetupChooseLockPattern extends ChooseLockPattern {
.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 @@ public class SetupChooseLockPattern extends ChooseLockPattern {
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

View File

@@ -29,10 +29,13 @@ import androidx.appcompat.app.AlertDialog;
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.Collections;
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 @@ public class SetupChooseLockPasswordTest {
.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(

View File

@@ -164,6 +164,20 @@ public class SetupChooseLockPatternTest {
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);