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

Commit 617c73cd authored by Hao Dong's avatar Hao Dong Committed by Android (Google) Code Review
Browse files

Merge "Show "no thanks" button when scroll is not needed." into main

parents 0882f3c1 6cef7bac
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -229,13 +229,15 @@ public abstract class BiometricEnrollIntroduction extends BiometricEnrollBase
                    }

                    // Show secondary button once scroll is completed.
                    if (!scrollNeeded) {
                        if (!enrollmentCompleted) {
                            getSecondaryFooterButton().setVisibility(View.VISIBLE);
                        }
                        mHasScrolledToBottom = true;
                    }
                    getSecondaryFooterButton().setVisibility(
                            !scrollNeeded && !enrollmentCompleted ? View.VISIBLE : View.INVISIBLE);
                    mHasScrolledToBottom = !scrollNeeded;
                });

        final boolean isScrollNeeded = requireScrollMixin.isScrollingRequired();
        final boolean enrollmentCompleted = checkMaxEnrolled() != 0;
        getSecondaryFooterButton().setVisibility(
                !isScrollNeeded && !enrollmentCompleted ? View.VISIBLE : View.INVISIBLE);
    }

    @Override
+35 −1
Original line number Diff line number Diff line
@@ -78,6 +78,7 @@ import com.google.android.setupcompat.template.FooterBarMixin;
import com.google.android.setupcompat.template.FooterButton;
import com.google.android.setupcompat.util.WizardManagerHelper;
import com.google.android.setupdesign.GlifLayout;
import com.google.android.setupdesign.template.RequireScrollMixin;
import com.google.android.setupdesign.view.BottomScrollView;

import org.junit.After;
@@ -137,6 +138,11 @@ public class FaceEnrollIntroductionTest {
            return mRecreateCount;
        }

        @Override
        protected void onResume() {
            super.onResume();
        }

        @Override
        public void recreate() {
            mRecreateCount++;
@@ -424,11 +430,39 @@ public class FaceEnrollIntroductionTest {
    }

    @Test
    public void testFaceEnrollIntroduction_notShowFooterSecondaryButton() {
    public void testFaceEnrollIntroduction_footerSecondaryButtonWhenCanEnroll() {
        setupActivity();
        FooterBarMixin footer = getGlifLayout(mActivity).getMixin(FooterBarMixin.class);
        FooterButton footerButton = footer.getSecondaryButton();

        final RequireScrollMixin requireScrollMixin = getGlifLayout(mActivity).getMixin(
                RequireScrollMixin.class);
        assertThat(footerButton.getVisibility()).isEqualTo(
                requireScrollMixin.isScrollingRequired() ? View.INVISIBLE : View.VISIBLE);

        requireScrollMixin.getOnRequireScrollStateChangedListener().onRequireScrollStateChanged(
                false);
        assertThat(footerButton.getVisibility()).isEqualTo(View.VISIBLE);
    }

    @Test
    public void testFaceEnrollIntroduction_footerSecondaryButtonWhenMaxEnroll() {
        setFaceManagerToHave(1 /* numEnrollments */);
        final Intent intent = new Intent();
        intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, new byte[0]);
        mController = Robolectric.buildActivity(TestFaceEnrollIntroduction.class, intent);
        mActivity = (TestFaceEnrollIntroduction) mController.get();

        mController.create();

        FooterBarMixin footer = getGlifLayout(mActivity).getMixin(FooterBarMixin.class);
        FooterButton footerButton = footer.getSecondaryButton();
        final RequireScrollMixin requireScrollMixin = getGlifLayout(mActivity).getMixin(
                RequireScrollMixin.class);
        assertThat(footerButton.getVisibility()).isEqualTo(View.INVISIBLE);

        requireScrollMixin.getOnRequireScrollStateChangedListener().onRequireScrollStateChanged(
                false);
        assertThat(footerButton.getVisibility()).isEqualTo(View.INVISIBLE);
    }

+56 −16
Original line number Diff line number Diff line
@@ -183,14 +183,6 @@ public class FingerprintEnrollIntroductionTest {
        int result = mFingerprintEnrollIntroduction.checkMaxEnrolled();

        assertThat(result).isEqualTo(0);

        final RequireScrollMixin requireScrollMixin =
                ((GlifLayout) mFingerprintEnrollIntroduction.findViewById(
                        R.id.setup_wizard_layout)).getMixin(RequireScrollMixin.class);
        requireScrollMixin.getOnRequireScrollStateChangedListener().onRequireScrollStateChanged(
                false);
        Assert.assertEquals(View.VISIBLE,
                mFingerprintEnrollIntroduction.getSecondaryFooterButton().getVisibility());
    }

    @Test
@@ -206,14 +198,6 @@ public class FingerprintEnrollIntroductionTest {
        int result = mFingerprintEnrollIntroduction.checkMaxEnrolled();

        assertThat(result).isEqualTo(R.string.fingerprint_intro_error_max);

        final RequireScrollMixin requireScrollMixin =
                ((GlifLayout) mFingerprintEnrollIntroduction.findViewById(
                        R.id.setup_wizard_layout)).getMixin(RequireScrollMixin.class);
        requireScrollMixin.getOnRequireScrollStateChangedListener().onRequireScrollStateChanged(
                false);
        Assert.assertEquals(View.INVISIBLE,
                mFingerprintEnrollIntroduction.getSecondaryFooterButton().getVisibility());
    }

    @Test
@@ -321,6 +305,57 @@ public class FingerprintEnrollIntroductionTest {
                .isEqualTo(FingerprintEnrollOptions.ENROLL_REASON_SETTINGS);
    }

    @Test
    public void intro_CheckNoThanksButtonWhenCanEnroll() {
        // This code path should depend on suw_max_fingerprints_enrollable versus
        // FingerprintManager.getSensorProperties...maxEnrollmentsPerUser()
        Resources resources = mock(Resources.class);
        when(resources.getInteger(anyInt())).thenReturn(5);
        when(mContext.getResources()).thenReturn(resources);

        setupFingerprintEnrollIntroWith(newFirstSuwIntent());
        setFingerprintManagerToHave(0 /* numEnrollments */);

        final RequireScrollMixin requireScrollMixin =
                ((GlifLayout) mFingerprintEnrollIntroduction.findViewById(
                        R.id.setup_wizard_layout)).getMixin(RequireScrollMixin.class);

        Assert.assertEquals(
                requireScrollMixin.isScrollingRequired() ? View.INVISIBLE : View.VISIBLE,
                mFingerprintEnrollIntroduction.getSecondaryFooterButton().getVisibility());

        requireScrollMixin.getOnRequireScrollStateChangedListener().onRequireScrollStateChanged(
                false);
        Assert.assertEquals(View.VISIBLE,
                mFingerprintEnrollIntroduction.getSecondaryFooterButton().getVisibility());
    }

    @Test
    public void intro_CheckNoThanksButtonWhenMaxEnroll() {
        // This code path should depend on suw_max_fingerprints_enrollable versus
        // FingerprintManager.getSensorProperties...maxEnrollmentsPerUser()
        Resources resources = mock(Resources.class);
        when(mContext.getResources()).thenReturn(resources);
        when(resources.getInteger(anyInt())).thenReturn(1);

        setupFingerprintEnrollIntroWith(newFirstSuwIntent());
        setFingerprintManagerToHave(1 /* numEnrollments */);

        final RequireScrollMixin requireScrollMixin =
                ((GlifLayout) mFingerprintEnrollIntroduction.findViewById(
                        R.id.setup_wizard_layout)).getMixin(RequireScrollMixin.class);

        mFingerprintEnrollIntroduction.onResume();
        Assert.assertEquals(View.INVISIBLE,
                mFingerprintEnrollIntroduction.getSecondaryFooterButton().getVisibility());

        requireScrollMixin.getOnRequireScrollStateChangedListener().onRequireScrollStateChanged(
                false);
        Assert.assertEquals(View.INVISIBLE,
                mFingerprintEnrollIntroduction.getSecondaryFooterButton().getVisibility());

    }

    private Intent newTokenOnlyIntent() {
        return new Intent()
                .putExtra(EXTRA_KEY_CHALLENGE_TOKEN, new byte[] { 1 });
@@ -365,6 +400,11 @@ public class FingerprintEnrollIntroductionTest {
        public int mNewSensorId;
        public long mNewChallenge;

        @Override
        protected void onResume() {
            super.onResume();
        }

        @Nullable
        public byte[] getTokenField() {
            return mToken;