Show "no thanks" button when scroll is not needed.

Test: atest FingerprintEnrollIntroductionTest
Bug: 328019857
Change-Id: Ia9e9be3a5a4c89e1d01e597730da5bfc2a5483ad
This commit is contained in:
Hao Dong
2024-04-03 20:44:16 +00:00
parent 4e32375f3d
commit 6cef7bac2d
3 changed files with 99 additions and 23 deletions

View File

@@ -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

View File

@@ -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);
}

View File

@@ -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;