Loading src/com/android/settings/safetycenter/BiometricsSafetySource.java +10 −3 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ import com.android.settings.biometrics.activeunlock.ActiveUnlockStatusUtils; import com.android.settings.biometrics.combination.CombinedBiometricStatusUtils; import com.android.settings.biometrics.face.FaceStatusUtils; import com.android.settings.biometrics.fingerprint.FingerprintStatusUtils; import com.android.settings.flags.Flags; import com.android.settingslib.RestrictedLockUtils; /** Combined Biometrics Safety Source for Safety Center. */ Loading @@ -49,6 +50,10 @@ public final class BiometricsSafetySource { if (!SafetyCenterManagerWrapper.get().isEnabled(context)) { return; } if (Flags.biometricsOnboardingEducation()) { // this source is effectively turned off sendNullData(context, safetyEvent); return; } UserHandle userHandle = Process.myUserHandle(); int userId = userHandle.getIdentifier(); Loading @@ -63,9 +68,7 @@ public final class BiometricsSafetySource { && userManager.isPrivateProfile()) { // SC always expects a response from the source if the broadcast has been sent for this // source, therefore, we need to send a null SafetySourceData. SafetyCenterManagerWrapper.get() .setSafetySourceData( context, SAFETY_SOURCE_ID, /* safetySourceData= */ null, safetyEvent); sendNullData(context, safetyEvent); return; } Loading Loading @@ -174,6 +177,10 @@ public final class BiometricsSafetySource { return; } sendNullData(context, safetyEvent); } private static void sendNullData(Context context, SafetyEvent safetyEvent) { SafetyCenterManagerWrapper.get() .setSafetySourceData( context, SAFETY_SOURCE_ID, /* safetySourceData= */ null, safetyEvent); Loading src/com/android/settings/safetycenter/FaceSafetySource.java +10 −3 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ import android.safetycenter.SafetyEvent; import com.android.settings.Utils; import com.android.settings.biometrics.BiometricNavigationUtils; import com.android.settings.biometrics.face.FaceStatusUtils; import com.android.settings.flags.Flags; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.RestrictedLockUtils; Loading @@ -44,6 +45,10 @@ public final class FaceSafetySource { if (!SafetyCenterManagerWrapper.get().isEnabled(context)) { return; } if (!Flags.biometricsOnboardingEducation()) { // this source is effectively turned off sendNullData(context, safetyEvent); return; } // Handle private profile case UserManager userManager = UserManager.get(context); Loading @@ -52,9 +57,7 @@ public final class FaceSafetySource { && userManager.isPrivateProfile()) { // SC always expects a response from the source if the broadcast has been sent for this // source, therefore, we need to send a null SafetySourceData. SafetyCenterManagerWrapper.get() .setSafetySourceData( context, SAFETY_SOURCE_ID, /* safetySourceData= */ null, safetyEvent); sendNullData(context, safetyEvent); return; } Loading Loading @@ -95,6 +98,10 @@ public final class FaceSafetySource { return; } sendNullData(context, safetyEvent); } private static void sendNullData(Context context, SafetyEvent safetyEvent) { SafetyCenterManagerWrapper.get() .setSafetySourceData( context, SAFETY_SOURCE_ID, /* safetySourceData= */ null, safetyEvent); Loading src/com/android/settings/safetycenter/FingerprintSafetySource.java +10 −3 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ import android.safetycenter.SafetyEvent; import com.android.settings.Utils; import com.android.settings.biometrics.BiometricNavigationUtils; import com.android.settings.biometrics.fingerprint.FingerprintStatusUtils; import com.android.settings.flags.Flags; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.RestrictedLockUtils; Loading @@ -44,6 +45,10 @@ public final class FingerprintSafetySource { if (!SafetyCenterManagerWrapper.get().isEnabled(context)) { return; } if (!Flags.biometricsOnboardingEducation()) { // this source is effectively turned off sendNullData(context, safetyEvent); return; } // Handle private profile case UserManager userManager = UserManager.get(context); Loading @@ -52,9 +57,7 @@ public final class FingerprintSafetySource { && userManager.isPrivateProfile()) { // SC always expects a response from the source if the broadcast has been sent for this // source, therefore, we need to send a null SafetySourceData. SafetyCenterManagerWrapper.get() .setSafetySourceData( context, SAFETY_SOURCE_ID, /* safetySourceData= */ null, safetyEvent); sendNullData(context, safetyEvent); return; } Loading Loading @@ -96,6 +99,10 @@ public final class FingerprintSafetySource { return; } sendNullData(context, safetyEvent); } private static void sendNullData(Context context, SafetyEvent safetyEvent) { SafetyCenterManagerWrapper.get() .setSafetySourceData( context, SAFETY_SOURCE_ID, /* safetySourceData= */ null, safetyEvent); Loading src/com/android/settings/safetycenter/SafetySourceBroadcastReceiver.java +6 −15 Original line number Diff line number Diff line Loading @@ -28,7 +28,6 @@ import android.content.Intent; import android.safetycenter.SafetyCenterManager; import android.safetycenter.SafetyEvent; import com.android.settings.flags.Flags; import com.android.settings.privatespace.PrivateSpaceSafetySource; import com.android.settings.security.ScreenLockPreferenceDetailsUtils; Loading Loading @@ -75,20 +74,16 @@ public class SafetySourceBroadcastReceiver extends BroadcastReceiver { context, new ScreenLockPreferenceDetailsUtils(context), safetyEvent); } if (sourceIds.contains(BiometricsSafetySource.SAFETY_SOURCE_ID) && !Flags.biometricsOnboardingEducation()) { if (sourceIds.contains(BiometricsSafetySource.SAFETY_SOURCE_ID)) { BiometricsSafetySource.setSafetySourceData(context, safetyEvent); } if (sourceIds.contains(PrivateSpaceSafetySource.SAFETY_SOURCE_ID)) { PrivateSpaceSafetySource.setSafetySourceData(context, safetyEvent); } if (sourceIds.contains(FaceSafetySource.SAFETY_SOURCE_ID) && Flags.biometricsOnboardingEducation()) { if (sourceIds.contains(FaceSafetySource.SAFETY_SOURCE_ID)) { FaceSafetySource.setSafetySourceData(context, safetyEvent); } if (sourceIds.contains(FingerprintSafetySource.SAFETY_SOURCE_ID) && Flags.biometricsOnboardingEducation()) { if (sourceIds.contains(FingerprintSafetySource.SAFETY_SOURCE_ID)) { FingerprintSafetySource.setSafetySourceData(context, safetyEvent); } } Loading @@ -96,13 +91,9 @@ public class SafetySourceBroadcastReceiver extends BroadcastReceiver { private static void refreshAllSafetySources(Context context, SafetyEvent safetyEvent) { LockScreenSafetySource.setSafetySourceData( context, new ScreenLockPreferenceDetailsUtils(context), safetyEvent); if (!Flags.biometricsOnboardingEducation()) { BiometricsSafetySource.setSafetySourceData(context, safetyEvent); } PrivateSpaceSafetySource.setSafetySourceData(context, safetyEvent); if (Flags.biometricsOnboardingEducation()) { FaceSafetySource.setSafetySourceData(context, safetyEvent); FingerprintSafetySource.setSafetySourceData(context, safetyEvent); } } } tests/unit/src/com/android/settings/safetycenter/BiometricsSafetySourceTest.java +42 −1 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ import android.hardware.fingerprint.Fingerprint; import android.hardware.fingerprint.FingerprintManager; import android.os.UserHandle; import android.platform.test.annotations.RequiresFlagsDisabled; import android.platform.test.annotations.RequiresFlagsEnabled; import android.platform.test.flag.junit.CheckFlagsRule; import android.platform.test.flag.junit.DeviceFlagsValueProvider; import android.safetycenter.SafetyEvent; Loading Loading @@ -72,7 +73,6 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) @RunWith(AndroidJUnit4.class) public class BiometricsSafetySourceTest { Loading Loading @@ -130,6 +130,19 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsEnabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_whenSeparateBiometricsFlagOn_setsNullData() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); BiometricsSafetySource.setSafetySourceData(mApplicationContext, EVENT_SOURCE_STATE_CHANGED); verify(mSafetyCenterManagerWrapper) .setSafetySourceData( any(), eq(BiometricsSafetySource.SAFETY_SOURCE_ID), eq(null), any()); } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_whenSafetyCenterIsEnabled_withoutBiometrics_setsNullData() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(false); Loading @@ -143,6 +156,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_setsDataForBiometricSource() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(true); Loading @@ -158,6 +172,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_setsDataWithCorrectSafetyEvent() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(true); Loading @@ -172,6 +187,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_withFingerprintNotEnrolled_whenDisabledByAdmin_setsData() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(true); Loading @@ -188,6 +204,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_withFingerprintNotEnrolled_whenNotDisabledByAdmin_setsData() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(true); Loading @@ -204,6 +221,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_withFingerprintsEnrolled_whenDisabledByAdmin_setsData() { int enrolledFingerprintsCount = 2; when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); Loading @@ -224,6 +242,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_withFingerprintsEnrolled_whenNotDisabledByAdmin_setsData() { int enrolledFingerprintsCount = 2; when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); Loading @@ -244,6 +263,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_withFaceNotEnrolled_whenDisabledByAdmin_setsData() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(false); Loading @@ -260,6 +280,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_withFaceNotEnrolled_whenNotDisabledByAdmin_setsData() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(false); Loading @@ -276,6 +297,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_withFaceEnrolled_whenDisabledByAdmin_setsData() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(false); Loading @@ -292,6 +314,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_withFaceEnrolled_whenNotDisabledByAdmin_setsData() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(false); Loading @@ -308,6 +331,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_withFaceAndFingerprint_whenBothNotDisabledByAdmin_setsData() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(true); Loading @@ -323,6 +347,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_withFaceAndFingerprint_whenFaceDisabledByAdmin_setsData() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(true); Loading @@ -339,6 +364,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_faceAndFingerprint_whenFingerprintDisabledByAdmin_setsData() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(true); Loading @@ -355,6 +381,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_faceAndFingerprint_whenBothDisabledByAdmin_setsData() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(true); Loading @@ -372,6 +399,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_faceAndFingerprint_whenFaceEnrolled_withMpFingers_setsData() { int enrolledFingerprintsCount = 2; when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); Loading @@ -390,6 +418,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_faceAndFingerprint_whenFaceEnrolled_withOneFinger_setsData() { int enrolledFingerprintsCount = 1; when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); Loading @@ -408,6 +437,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_faceAndFingerprint_whenFaceEnrolled_withNoFingers_setsData() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(true); Loading @@ -425,6 +455,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_activeUnlockEnabled_withFingerprintOnly_setsData() { int enrolledFingerprintsCount = 1; when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); Loading @@ -445,6 +476,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_activeUnlockEnabled_withFaceOnly_setsData() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(false); Loading @@ -461,6 +493,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_activeUnlockEnabled_withFaceAndFingerprint_setsData() { int enrolledFingerprintsCount = 1; when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); Loading @@ -480,6 +513,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_faceAndFingerprint_whenNoFaceEnrolled_withFingers_setsData() { int enrolledFingerprintsCount = 1; when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); Loading @@ -499,6 +533,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_faceAndFingerprint_whenFaceEnrolled_setsInfoSeverity() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(true); Loading @@ -521,6 +556,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_faceAndFingerprint_whenFingerprintEnrolled_setsInfoSeverity() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(true); Loading @@ -543,6 +579,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_faceAndFingerprint_whenNotEnrolled_setsUnspSeverity() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(true); Loading @@ -565,6 +602,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_fingerprint_whenEnrolled_setsInfoSeverity() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(true); Loading @@ -586,6 +624,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_fingerprint_whenNotEnrolled_setsUnspSeverity() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(true); Loading @@ -607,6 +646,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_face_whenEnrolled_setsInfoSeverity() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(false); Loading @@ -628,6 +668,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_face_whenNotEnrolled_setsUnspSeverity() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(false); Loading Loading
src/com/android/settings/safetycenter/BiometricsSafetySource.java +10 −3 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ import com.android.settings.biometrics.activeunlock.ActiveUnlockStatusUtils; import com.android.settings.biometrics.combination.CombinedBiometricStatusUtils; import com.android.settings.biometrics.face.FaceStatusUtils; import com.android.settings.biometrics.fingerprint.FingerprintStatusUtils; import com.android.settings.flags.Flags; import com.android.settingslib.RestrictedLockUtils; /** Combined Biometrics Safety Source for Safety Center. */ Loading @@ -49,6 +50,10 @@ public final class BiometricsSafetySource { if (!SafetyCenterManagerWrapper.get().isEnabled(context)) { return; } if (Flags.biometricsOnboardingEducation()) { // this source is effectively turned off sendNullData(context, safetyEvent); return; } UserHandle userHandle = Process.myUserHandle(); int userId = userHandle.getIdentifier(); Loading @@ -63,9 +68,7 @@ public final class BiometricsSafetySource { && userManager.isPrivateProfile()) { // SC always expects a response from the source if the broadcast has been sent for this // source, therefore, we need to send a null SafetySourceData. SafetyCenterManagerWrapper.get() .setSafetySourceData( context, SAFETY_SOURCE_ID, /* safetySourceData= */ null, safetyEvent); sendNullData(context, safetyEvent); return; } Loading Loading @@ -174,6 +177,10 @@ public final class BiometricsSafetySource { return; } sendNullData(context, safetyEvent); } private static void sendNullData(Context context, SafetyEvent safetyEvent) { SafetyCenterManagerWrapper.get() .setSafetySourceData( context, SAFETY_SOURCE_ID, /* safetySourceData= */ null, safetyEvent); Loading
src/com/android/settings/safetycenter/FaceSafetySource.java +10 −3 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ import android.safetycenter.SafetyEvent; import com.android.settings.Utils; import com.android.settings.biometrics.BiometricNavigationUtils; import com.android.settings.biometrics.face.FaceStatusUtils; import com.android.settings.flags.Flags; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.RestrictedLockUtils; Loading @@ -44,6 +45,10 @@ public final class FaceSafetySource { if (!SafetyCenterManagerWrapper.get().isEnabled(context)) { return; } if (!Flags.biometricsOnboardingEducation()) { // this source is effectively turned off sendNullData(context, safetyEvent); return; } // Handle private profile case UserManager userManager = UserManager.get(context); Loading @@ -52,9 +57,7 @@ public final class FaceSafetySource { && userManager.isPrivateProfile()) { // SC always expects a response from the source if the broadcast has been sent for this // source, therefore, we need to send a null SafetySourceData. SafetyCenterManagerWrapper.get() .setSafetySourceData( context, SAFETY_SOURCE_ID, /* safetySourceData= */ null, safetyEvent); sendNullData(context, safetyEvent); return; } Loading Loading @@ -95,6 +98,10 @@ public final class FaceSafetySource { return; } sendNullData(context, safetyEvent); } private static void sendNullData(Context context, SafetyEvent safetyEvent) { SafetyCenterManagerWrapper.get() .setSafetySourceData( context, SAFETY_SOURCE_ID, /* safetySourceData= */ null, safetyEvent); Loading
src/com/android/settings/safetycenter/FingerprintSafetySource.java +10 −3 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ import android.safetycenter.SafetyEvent; import com.android.settings.Utils; import com.android.settings.biometrics.BiometricNavigationUtils; import com.android.settings.biometrics.fingerprint.FingerprintStatusUtils; import com.android.settings.flags.Flags; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.RestrictedLockUtils; Loading @@ -44,6 +45,10 @@ public final class FingerprintSafetySource { if (!SafetyCenterManagerWrapper.get().isEnabled(context)) { return; } if (!Flags.biometricsOnboardingEducation()) { // this source is effectively turned off sendNullData(context, safetyEvent); return; } // Handle private profile case UserManager userManager = UserManager.get(context); Loading @@ -52,9 +57,7 @@ public final class FingerprintSafetySource { && userManager.isPrivateProfile()) { // SC always expects a response from the source if the broadcast has been sent for this // source, therefore, we need to send a null SafetySourceData. SafetyCenterManagerWrapper.get() .setSafetySourceData( context, SAFETY_SOURCE_ID, /* safetySourceData= */ null, safetyEvent); sendNullData(context, safetyEvent); return; } Loading Loading @@ -96,6 +99,10 @@ public final class FingerprintSafetySource { return; } sendNullData(context, safetyEvent); } private static void sendNullData(Context context, SafetyEvent safetyEvent) { SafetyCenterManagerWrapper.get() .setSafetySourceData( context, SAFETY_SOURCE_ID, /* safetySourceData= */ null, safetyEvent); Loading
src/com/android/settings/safetycenter/SafetySourceBroadcastReceiver.java +6 −15 Original line number Diff line number Diff line Loading @@ -28,7 +28,6 @@ import android.content.Intent; import android.safetycenter.SafetyCenterManager; import android.safetycenter.SafetyEvent; import com.android.settings.flags.Flags; import com.android.settings.privatespace.PrivateSpaceSafetySource; import com.android.settings.security.ScreenLockPreferenceDetailsUtils; Loading Loading @@ -75,20 +74,16 @@ public class SafetySourceBroadcastReceiver extends BroadcastReceiver { context, new ScreenLockPreferenceDetailsUtils(context), safetyEvent); } if (sourceIds.contains(BiometricsSafetySource.SAFETY_SOURCE_ID) && !Flags.biometricsOnboardingEducation()) { if (sourceIds.contains(BiometricsSafetySource.SAFETY_SOURCE_ID)) { BiometricsSafetySource.setSafetySourceData(context, safetyEvent); } if (sourceIds.contains(PrivateSpaceSafetySource.SAFETY_SOURCE_ID)) { PrivateSpaceSafetySource.setSafetySourceData(context, safetyEvent); } if (sourceIds.contains(FaceSafetySource.SAFETY_SOURCE_ID) && Flags.biometricsOnboardingEducation()) { if (sourceIds.contains(FaceSafetySource.SAFETY_SOURCE_ID)) { FaceSafetySource.setSafetySourceData(context, safetyEvent); } if (sourceIds.contains(FingerprintSafetySource.SAFETY_SOURCE_ID) && Flags.biometricsOnboardingEducation()) { if (sourceIds.contains(FingerprintSafetySource.SAFETY_SOURCE_ID)) { FingerprintSafetySource.setSafetySourceData(context, safetyEvent); } } Loading @@ -96,13 +91,9 @@ public class SafetySourceBroadcastReceiver extends BroadcastReceiver { private static void refreshAllSafetySources(Context context, SafetyEvent safetyEvent) { LockScreenSafetySource.setSafetySourceData( context, new ScreenLockPreferenceDetailsUtils(context), safetyEvent); if (!Flags.biometricsOnboardingEducation()) { BiometricsSafetySource.setSafetySourceData(context, safetyEvent); } PrivateSpaceSafetySource.setSafetySourceData(context, safetyEvent); if (Flags.biometricsOnboardingEducation()) { FaceSafetySource.setSafetySourceData(context, safetyEvent); FingerprintSafetySource.setSafetySourceData(context, safetyEvent); } } }
tests/unit/src/com/android/settings/safetycenter/BiometricsSafetySourceTest.java +42 −1 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ import android.hardware.fingerprint.Fingerprint; import android.hardware.fingerprint.FingerprintManager; import android.os.UserHandle; import android.platform.test.annotations.RequiresFlagsDisabled; import android.platform.test.annotations.RequiresFlagsEnabled; import android.platform.test.flag.junit.CheckFlagsRule; import android.platform.test.flag.junit.DeviceFlagsValueProvider; import android.safetycenter.SafetyEvent; Loading Loading @@ -72,7 +73,6 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) @RunWith(AndroidJUnit4.class) public class BiometricsSafetySourceTest { Loading Loading @@ -130,6 +130,19 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsEnabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_whenSeparateBiometricsFlagOn_setsNullData() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); BiometricsSafetySource.setSafetySourceData(mApplicationContext, EVENT_SOURCE_STATE_CHANGED); verify(mSafetyCenterManagerWrapper) .setSafetySourceData( any(), eq(BiometricsSafetySource.SAFETY_SOURCE_ID), eq(null), any()); } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_whenSafetyCenterIsEnabled_withoutBiometrics_setsNullData() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(false); Loading @@ -143,6 +156,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_setsDataForBiometricSource() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(true); Loading @@ -158,6 +172,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_setsDataWithCorrectSafetyEvent() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(true); Loading @@ -172,6 +187,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_withFingerprintNotEnrolled_whenDisabledByAdmin_setsData() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(true); Loading @@ -188,6 +204,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_withFingerprintNotEnrolled_whenNotDisabledByAdmin_setsData() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(true); Loading @@ -204,6 +221,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_withFingerprintsEnrolled_whenDisabledByAdmin_setsData() { int enrolledFingerprintsCount = 2; when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); Loading @@ -224,6 +242,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_withFingerprintsEnrolled_whenNotDisabledByAdmin_setsData() { int enrolledFingerprintsCount = 2; when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); Loading @@ -244,6 +263,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_withFaceNotEnrolled_whenDisabledByAdmin_setsData() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(false); Loading @@ -260,6 +280,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_withFaceNotEnrolled_whenNotDisabledByAdmin_setsData() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(false); Loading @@ -276,6 +297,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_withFaceEnrolled_whenDisabledByAdmin_setsData() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(false); Loading @@ -292,6 +314,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_withFaceEnrolled_whenNotDisabledByAdmin_setsData() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(false); Loading @@ -308,6 +331,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_withFaceAndFingerprint_whenBothNotDisabledByAdmin_setsData() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(true); Loading @@ -323,6 +347,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_withFaceAndFingerprint_whenFaceDisabledByAdmin_setsData() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(true); Loading @@ -339,6 +364,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_faceAndFingerprint_whenFingerprintDisabledByAdmin_setsData() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(true); Loading @@ -355,6 +381,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_faceAndFingerprint_whenBothDisabledByAdmin_setsData() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(true); Loading @@ -372,6 +399,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_faceAndFingerprint_whenFaceEnrolled_withMpFingers_setsData() { int enrolledFingerprintsCount = 2; when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); Loading @@ -390,6 +418,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_faceAndFingerprint_whenFaceEnrolled_withOneFinger_setsData() { int enrolledFingerprintsCount = 1; when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); Loading @@ -408,6 +437,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_faceAndFingerprint_whenFaceEnrolled_withNoFingers_setsData() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(true); Loading @@ -425,6 +455,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_activeUnlockEnabled_withFingerprintOnly_setsData() { int enrolledFingerprintsCount = 1; when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); Loading @@ -445,6 +476,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_activeUnlockEnabled_withFaceOnly_setsData() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(false); Loading @@ -461,6 +493,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_activeUnlockEnabled_withFaceAndFingerprint_setsData() { int enrolledFingerprintsCount = 1; when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); Loading @@ -480,6 +513,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_faceAndFingerprint_whenNoFaceEnrolled_withFingers_setsData() { int enrolledFingerprintsCount = 1; when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); Loading @@ -499,6 +533,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_faceAndFingerprint_whenFaceEnrolled_setsInfoSeverity() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(true); Loading @@ -521,6 +556,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_faceAndFingerprint_whenFingerprintEnrolled_setsInfoSeverity() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(true); Loading @@ -543,6 +579,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_faceAndFingerprint_whenNotEnrolled_setsUnspSeverity() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(true); Loading @@ -565,6 +602,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_fingerprint_whenEnrolled_setsInfoSeverity() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(true); Loading @@ -586,6 +624,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_fingerprint_whenNotEnrolled_setsUnspSeverity() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(true); Loading @@ -607,6 +646,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_face_whenEnrolled_setsInfoSeverity() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(false); Loading @@ -628,6 +668,7 @@ public class BiometricsSafetySourceTest { } @Test @RequiresFlagsDisabled(Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION) public void setSafetySourceData_face_whenNotEnrolled_setsUnspSeverity() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(false); Loading