Show "no thanks" button when scroll is not needed.
Test: atest FingerprintEnrollIntroductionTest Bug: 328019857 Change-Id: Ia9e9be3a5a4c89e1d01e597730da5bfc2a5483ad
This commit is contained in:
@@ -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
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
|
@@ -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;
|
||||
|
Reference in New Issue
Block a user