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.
|
// Show secondary button once scroll is completed.
|
||||||
if (!scrollNeeded) {
|
getSecondaryFooterButton().setVisibility(
|
||||||
if (!enrollmentCompleted) {
|
!scrollNeeded && !enrollmentCompleted ? View.VISIBLE : View.INVISIBLE);
|
||||||
getSecondaryFooterButton().setVisibility(View.VISIBLE);
|
mHasScrolledToBottom = !scrollNeeded;
|
||||||
}
|
|
||||||
mHasScrolledToBottom = true;
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
final boolean isScrollNeeded = requireScrollMixin.isScrollingRequired();
|
||||||
|
final boolean enrollmentCompleted = checkMaxEnrolled() != 0;
|
||||||
|
getSecondaryFooterButton().setVisibility(
|
||||||
|
!isScrollNeeded && !enrollmentCompleted ? View.VISIBLE : View.INVISIBLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -78,6 +78,7 @@ import com.google.android.setupcompat.template.FooterBarMixin;
|
|||||||
import com.google.android.setupcompat.template.FooterButton;
|
import com.google.android.setupcompat.template.FooterButton;
|
||||||
import com.google.android.setupcompat.util.WizardManagerHelper;
|
import com.google.android.setupcompat.util.WizardManagerHelper;
|
||||||
import com.google.android.setupdesign.GlifLayout;
|
import com.google.android.setupdesign.GlifLayout;
|
||||||
|
import com.google.android.setupdesign.template.RequireScrollMixin;
|
||||||
import com.google.android.setupdesign.view.BottomScrollView;
|
import com.google.android.setupdesign.view.BottomScrollView;
|
||||||
|
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
@@ -137,6 +138,11 @@ public class FaceEnrollIntroductionTest {
|
|||||||
return mRecreateCount;
|
return mRecreateCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onResume() {
|
||||||
|
super.onResume();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void recreate() {
|
public void recreate() {
|
||||||
mRecreateCount++;
|
mRecreateCount++;
|
||||||
@@ -424,11 +430,39 @@ public class FaceEnrollIntroductionTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testFaceEnrollIntroduction_notShowFooterSecondaryButton() {
|
public void testFaceEnrollIntroduction_footerSecondaryButtonWhenCanEnroll() {
|
||||||
setupActivity();
|
setupActivity();
|
||||||
FooterBarMixin footer = getGlifLayout(mActivity).getMixin(FooterBarMixin.class);
|
FooterBarMixin footer = getGlifLayout(mActivity).getMixin(FooterBarMixin.class);
|
||||||
FooterButton footerButton = footer.getSecondaryButton();
|
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);
|
assertThat(footerButton.getVisibility()).isEqualTo(View.INVISIBLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -183,14 +183,6 @@ public class FingerprintEnrollIntroductionTest {
|
|||||||
int result = mFingerprintEnrollIntroduction.checkMaxEnrolled();
|
int result = mFingerprintEnrollIntroduction.checkMaxEnrolled();
|
||||||
|
|
||||||
assertThat(result).isEqualTo(0);
|
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
|
@Test
|
||||||
@@ -206,14 +198,6 @@ public class FingerprintEnrollIntroductionTest {
|
|||||||
int result = mFingerprintEnrollIntroduction.checkMaxEnrolled();
|
int result = mFingerprintEnrollIntroduction.checkMaxEnrolled();
|
||||||
|
|
||||||
assertThat(result).isEqualTo(R.string.fingerprint_intro_error_max);
|
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
|
@Test
|
||||||
@@ -321,6 +305,57 @@ public class FingerprintEnrollIntroductionTest {
|
|||||||
.isEqualTo(FingerprintEnrollOptions.ENROLL_REASON_SETTINGS);
|
.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() {
|
private Intent newTokenOnlyIntent() {
|
||||||
return new Intent()
|
return new Intent()
|
||||||
.putExtra(EXTRA_KEY_CHALLENGE_TOKEN, new byte[] { 1 });
|
.putExtra(EXTRA_KEY_CHALLENGE_TOKEN, new byte[] { 1 });
|
||||||
@@ -365,6 +400,11 @@ public class FingerprintEnrollIntroductionTest {
|
|||||||
public int mNewSensorId;
|
public int mNewSensorId;
|
||||||
public long mNewChallenge;
|
public long mNewChallenge;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onResume() {
|
||||||
|
super.onResume();
|
||||||
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public byte[] getTokenField() {
|
public byte[] getTokenField() {
|
||||||
return mToken;
|
return mToken;
|
||||||
|
Reference in New Issue
Block a user