Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 382d34dc authored by pastychang's avatar pastychang
Browse files

Change to show two footer buttons in SUW lockscreen page.

Bug: 121183851
Test: RunSettingsRoboTests
Change-Id: Id850e10a10bb8f3a344ef986e07bab1c39c37aa6
parent eb5e435d
Loading
Loading
Loading
Loading
+5 −6
Original line number Diff line number Diff line
@@ -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;
        }

+6 −2
Original line number Diff line number Diff line
@@ -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);
+9 −3
Original line number Diff line number Diff line
@@ -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
+40 −1
Original line number Diff line number Diff line
@@ -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(
+14 −0
Original line number Diff line number Diff line
@@ -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);