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

Commit 0b82bf9d authored by Marie Matheson's avatar Marie Matheson Committed by Android (Google) Code Review
Browse files

Merge "Bug fix - when enrolled, biometrics have ok safety state." into tm-dev

parents 6840252c a0ce0e63
Loading
Loading
Loading
Loading
+16 −2
Original line number Diff line number Diff line
@@ -55,6 +55,13 @@ public class CombinedBiometricStatusUtils {
        return Utils.hasFingerprintHardware(mContext) && Utils.hasFaceHardware(mContext);
    }

    /**
     * Returns whether at least one face template or fingerprint has been enrolled.
     */
    public boolean hasEnrolled() {
        return hasEnrolledFingerprints() || hasEnrolledFace();
    }

    /**
     * Returns the {@link EnforcedAdmin} in case parental consent is required to change both
     * face and fingerprint settings.
@@ -84,8 +91,7 @@ public class CombinedBiometricStatusUtils {
    public String getSummary() {
        final int numFingerprintsEnrolled = mFingerprintManager != null
                ? mFingerprintManager.getEnrolledFingerprints(mUserId).size() : 0;
        final boolean faceEnrolled = mFaceManager != null
                && mFaceManager.hasEnrolledTemplates(mUserId);
        final boolean faceEnrolled = hasEnrolledFace();

        if (faceEnrolled && numFingerprintsEnrolled > 1) {
            return mContext.getString(
@@ -105,6 +111,14 @@ public class CombinedBiometricStatusUtils {
        }
    }

    private boolean hasEnrolledFingerprints() {
        return mFingerprintManager != null && mFingerprintManager.hasEnrolledFingerprints(mUserId);
    }

    private boolean hasEnrolledFace() {
        return mFaceManager != null && mFaceManager.hasEnrolledTemplates(mUserId);
    }

    /**
     * Returns the class name of the Settings page corresponding to combined biometric settings.
     */
+4 −1
Original line number Diff line number Diff line
@@ -75,7 +75,10 @@ public class FaceStatusUtils {
                : FaceEnrollIntroduction.class.getName();
    }

    private boolean hasEnrolled() {
    /**
     * Returns whether at least one face template has been enrolled.
     */
    public boolean hasEnrolled() {
        return mFaceManager.hasEnrolledTemplates(mUserId);
    }
}
+4 −1
Original line number Diff line number Diff line
@@ -82,7 +82,10 @@ public class FingerprintStatusUtils {
                : FingerprintEnrollIntroduction.class.getName();
    }

    private boolean hasEnrolled() {
    /**
     * Returns whether at least one fingerprint has been enrolled.
     */
    public boolean hasEnrolled() {
        return mFingerprintManager.hasEnrolledFingerprints(mUserId);
    }
}
+9 −4
Original line number Diff line number Diff line
@@ -65,6 +65,7 @@ public final class BiometricsSafetySource {
                            combinedBiometricStatusUtils.getSettingsClassName(), disablingAdmin,
                            Bundle.EMPTY),
                    disablingAdmin == null /* enabled */,
                    combinedBiometricStatusUtils.hasEnrolled(),
                    safetyEvent);
            return;
        }
@@ -82,6 +83,7 @@ public final class BiometricsSafetySource {
                            faceStatusUtils.getSettingsClassName(), disablingAdmin,
                            Bundle.EMPTY),
                    disablingAdmin == null /* enabled */,
                    faceStatusUtils.hasEnrolled(),
                    safetyEvent);

            return;
@@ -101,6 +103,7 @@ public final class BiometricsSafetySource {
                            fingerprintStatusUtils.getSettingsClassName(), disablingAdmin,
                            Bundle.EMPTY),
                    disablingAdmin == null /* enabled */,
                    fingerprintStatusUtils.hasEnrolled(),
                    safetyEvent);
        }
    }
@@ -114,12 +117,14 @@ public final class BiometricsSafetySource {
    }

    private static void setBiometricSafetySourceData(Context context, String title, String summary,
            Intent clickIntent, boolean enabled, SafetyEvent safetyEvent) {
            Intent clickIntent, boolean enabled, boolean hasEnrolled, SafetyEvent safetyEvent) {
        final PendingIntent pendingIntent = createPendingIntent(context, clickIntent);
        final int statusLevel =
                enabled && hasEnrolled ? SafetySourceStatus.STATUS_LEVEL_OK
                        : SafetySourceStatus.STATUS_LEVEL_NONE;

        final SafetySourceStatus status = new SafetySourceStatus.Builder(title, summary,
                SafetySourceStatus.STATUS_LEVEL_NONE, pendingIntent)
                .setEnabled(enabled).build();
        final SafetySourceStatus status = new SafetySourceStatus.Builder(
                title, summary, statusLevel, pendingIntent).setEnabled(enabled).build();
        final SafetySourceData safetySourceData =
                new SafetySourceData.Builder().setStatus(status).build();

+49 −2
Original line number Diff line number Diff line
@@ -57,8 +57,7 @@ public class CombinedBiometricStatusUtilsTest {
    private static final ComponentName COMPONENT_NAME =
            new ComponentName("package", "class");
    private static final int USER_ID = UserHandle.myUserId();
    private static final UserHandle USER_HANDLE = new UserHandle(USER_ID);;

    private static final UserHandle USER_HANDLE = new UserHandle(USER_ID);

    @Mock
    private PackageManager mPackageManager;
@@ -122,6 +121,54 @@ public class CombinedBiometricStatusUtilsTest {
        assertThat(mCombinedBiometricStatusUtils.isAvailable()).isTrue();
    }

    @Test
    public void hasEnrolled_withoutFingerprintHardware_withoutFaceHardware_returnsFalse() {
        when(mFingerprintManager.isHardwareDetected()).thenReturn(false);
        when(mFaceManager.isHardwareDetected()).thenReturn(false);

        assertThat(mCombinedBiometricStatusUtils.hasEnrolled()).isFalse();
    }

    @Test
    public void hasEnrolled_withoutFingerprintEnroll_withoutFaceEnroll_returnsFalse() {
        when(mFingerprintManager.isHardwareDetected()).thenReturn(true);
        when(mFaceManager.isHardwareDetected()).thenReturn(true);
        when(mFingerprintManager.hasEnrolledFingerprints(anyInt())).thenReturn(false);
        when(mFaceManager.hasEnrolledTemplates(anyInt())).thenReturn(false);

        assertThat(mCombinedBiometricStatusUtils.hasEnrolled()).isFalse();
    }

    @Test
    public void hasEnrolled_withoutFingerprintEnroll_withFaceEnroll_returnsTrue() {
        when(mFingerprintManager.isHardwareDetected()).thenReturn(true);
        when(mFaceManager.isHardwareDetected()).thenReturn(true);
        when(mFingerprintManager.hasEnrolledFingerprints(anyInt())).thenReturn(false);
        when(mFaceManager.hasEnrolledTemplates(anyInt())).thenReturn(true);

        assertThat(mCombinedBiometricStatusUtils.hasEnrolled()).isTrue();
    }

    @Test
    public void hasEnrolled_withFingerprintEnroll_withoutFaceEnroll_returnsTrue() {
        when(mFingerprintManager.isHardwareDetected()).thenReturn(true);
        when(mFaceManager.isHardwareDetected()).thenReturn(true);
        when(mFingerprintManager.hasEnrolledFingerprints(anyInt())).thenReturn(true);
        when(mFaceManager.hasEnrolledTemplates(anyInt())).thenReturn(false);

        assertThat(mCombinedBiometricStatusUtils.hasEnrolled()).isTrue();
    }

    @Test
    public void hasEnrolled_withFingerprintEnroll_withFaceEnroll_returnsTrue() {
        when(mFingerprintManager.isHardwareDetected()).thenReturn(true);
        when(mFaceManager.isHardwareDetected()).thenReturn(true);
        when(mFingerprintManager.hasEnrolledFingerprints(anyInt())).thenReturn(true);
        when(mFaceManager.hasEnrolledTemplates(anyInt())).thenReturn(true);

        assertThat(mCombinedBiometricStatusUtils.hasEnrolled()).isTrue();
    }

    @Test
    public void getDisabledAdmin_whenFingerprintDisabled_whenFaceDisabled_returnsEnforcedAdmin() {
        when(mDevicePolicyManager.getKeyguardDisabledFeatures(COMPONENT_NAME))
Loading