Respond with null data when no biometrics.

Safety Center expects a response to the broadcast in this case.
The Settings app should respond with explicitely no data to Safety
Center rather than not respond.

Bug: 295143688
Test: atest BiometricsSafetySourceTest
Change-Id: Iea7f7c53919d90bf3d7fd989fb2f320a5c9ee9c6
This commit is contained in:
Elliot Sisteron
2023-08-09 12:43:54 +00:00
parent 76707864e5
commit cbc619c870
2 changed files with 124 additions and 82 deletions

View File

@@ -164,7 +164,12 @@ public final class BiometricsSafetySource {
disablingAdmin == null /* enabled */, disablingAdmin == null /* enabled */,
fingerprintStatusUtils.hasEnrolled(), fingerprintStatusUtils.hasEnrolled(),
safetyEvent); safetyEvent);
return;
} }
SafetyCenterManagerWrapper.get()
.setSafetySourceData(
context, SAFETY_SOURCE_ID, /* safetySourceData= */ null, safetyEvent);
} }
/** Notifies Safety Center of a change in biometrics settings. */ /** Notifies Safety Center of a change in biometrics settings. */

View File

@@ -67,24 +67,18 @@ import java.util.List;
@RunWith(AndroidJUnit4.class) @RunWith(AndroidJUnit4.class)
public class BiometricsSafetySourceTest { public class BiometricsSafetySourceTest {
private static final ComponentName COMPONENT_NAME = private static final ComponentName COMPONENT_NAME = new ComponentName("package", "class");
new ComponentName("package", "class");
private static final UserHandle USER_HANDLE = new UserHandle(UserHandle.myUserId()); private static final UserHandle USER_HANDLE = new UserHandle(UserHandle.myUserId());
private static final SafetyEvent EVENT_SOURCE_STATE_CHANGED = private static final SafetyEvent EVENT_SOURCE_STATE_CHANGED =
new SafetyEvent.Builder(SAFETY_EVENT_TYPE_SOURCE_STATE_CHANGED).build(); new SafetyEvent.Builder(SAFETY_EVENT_TYPE_SOURCE_STATE_CHANGED).build();
private Context mApplicationContext; private Context mApplicationContext;
@Mock @Mock private PackageManager mPackageManager;
private PackageManager mPackageManager; @Mock private DevicePolicyManager mDevicePolicyManager;
@Mock @Mock private FingerprintManager mFingerprintManager;
private DevicePolicyManager mDevicePolicyManager; @Mock private FaceManager mFaceManager;
@Mock @Mock private SafetyCenterManagerWrapper mSafetyCenterManagerWrapper;
private FingerprintManager mFingerprintManager;
@Mock
private FaceManager mFaceManager;
@Mock
private SafetyCenterManagerWrapper mSafetyCenterManagerWrapper;
@Before @Before
public void setUp() { public void setUp() {
@@ -119,15 +113,16 @@ public class BiometricsSafetySourceTest {
} }
@Test @Test
public void setSafetySourceData_whenSafetyCenterIsEnabled_withoutBiometrics_doesNotSetData() { public void setSafetySourceData_whenSafetyCenterIsEnabled_withoutBiometrics_setsNullData() {
when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(false); when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(false);
when(mFingerprintManager.isHardwareDetected()).thenReturn(false); when(mFingerprintManager.isHardwareDetected()).thenReturn(false);
when(mFaceManager.isHardwareDetected()).thenReturn(false); when(mFaceManager.isHardwareDetected()).thenReturn(false);
BiometricsSafetySource.setSafetySourceData(mApplicationContext, EVENT_SOURCE_STATE_CHANGED); BiometricsSafetySource.setSafetySourceData(mApplicationContext, EVENT_SOURCE_STATE_CHANGED);
verify(mSafetyCenterManagerWrapper, never()) verify(mSafetyCenterManagerWrapper)
.setSafetySourceData(any(), any(), any(), any()); .setSafetySourceData(
any(), eq(BiometricsSafetySource.SAFETY_SOURCE_ID), eq(null), any());
} }
@Test @Test
@@ -140,8 +135,9 @@ public class BiometricsSafetySourceTest {
BiometricsSafetySource.setSafetySourceData(mApplicationContext, EVENT_SOURCE_STATE_CHANGED); BiometricsSafetySource.setSafetySourceData(mApplicationContext, EVENT_SOURCE_STATE_CHANGED);
verify(mSafetyCenterManagerWrapper).setSafetySourceData( verify(mSafetyCenterManagerWrapper)
any(), eq(BiometricsSafetySource.SAFETY_SOURCE_ID), any(), any()); .setSafetySourceData(
any(), eq(BiometricsSafetySource.SAFETY_SOURCE_ID), any(), any());
} }
@Test @Test
@@ -225,7 +221,8 @@ public class BiometricsSafetySourceTest {
assertSafetySourceEnabledDataSetWithPluralSummary( assertSafetySourceEnabledDataSetWithPluralSummary(
"security_settings_fingerprint_preference_title", "security_settings_fingerprint_preference_title",
"security_settings_fingerprint_preference_summary", enrolledFingerprintsCount, "security_settings_fingerprint_preference_summary",
enrolledFingerprintsCount,
FingerprintSettings.class.getName()); FingerprintSettings.class.getName());
} }
@@ -346,8 +343,9 @@ public class BiometricsSafetySourceTest {
when(mFingerprintManager.isHardwareDetected()).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(true);
when(mFaceManager.isHardwareDetected()).thenReturn(true); when(mFaceManager.isHardwareDetected()).thenReturn(true);
when(mDevicePolicyManager.getKeyguardDisabledFeatures(COMPONENT_NAME)) when(mDevicePolicyManager.getKeyguardDisabledFeatures(COMPONENT_NAME))
.thenReturn(DevicePolicyManager.KEYGUARD_DISABLE_FACE .thenReturn(
| DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT); DevicePolicyManager.KEYGUARD_DISABLE_FACE
| DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT);
BiometricsSafetySource.setSafetySourceData(mApplicationContext, EVENT_SOURCE_STATE_CHANGED); BiometricsSafetySource.setSafetySourceData(mApplicationContext, EVENT_SOURCE_STATE_CHANGED);
@@ -363,8 +361,8 @@ public class BiometricsSafetySourceTest {
when(mFingerprintManager.isHardwareDetected()).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(true);
when(mFaceManager.isHardwareDetected()).thenReturn(true); when(mFaceManager.isHardwareDetected()).thenReturn(true);
when(mFaceManager.hasEnrolledTemplates(anyInt())).thenReturn(true); when(mFaceManager.hasEnrolledTemplates(anyInt())).thenReturn(true);
when(mFingerprintManager.getEnrolledFingerprints(anyInt())).thenReturn( when(mFingerprintManager.getEnrolledFingerprints(anyInt()))
createFingerprintList(enrolledFingerprintsCount)); .thenReturn(createFingerprintList(enrolledFingerprintsCount));
BiometricsSafetySource.setSafetySourceData(mApplicationContext, EVENT_SOURCE_STATE_CHANGED); BiometricsSafetySource.setSafetySourceData(mApplicationContext, EVENT_SOURCE_STATE_CHANGED);
@@ -381,8 +379,8 @@ public class BiometricsSafetySourceTest {
when(mFingerprintManager.isHardwareDetected()).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(true);
when(mFaceManager.isHardwareDetected()).thenReturn(true); when(mFaceManager.isHardwareDetected()).thenReturn(true);
when(mFaceManager.hasEnrolledTemplates(anyInt())).thenReturn(true); when(mFaceManager.hasEnrolledTemplates(anyInt())).thenReturn(true);
when(mFingerprintManager.getEnrolledFingerprints(anyInt())).thenReturn( when(mFingerprintManager.getEnrolledFingerprints(anyInt()))
createFingerprintList(enrolledFingerprintsCount)); .thenReturn(createFingerprintList(enrolledFingerprintsCount));
BiometricsSafetySource.setSafetySourceData(mApplicationContext, EVENT_SOURCE_STATE_CHANGED); BiometricsSafetySource.setSafetySourceData(mApplicationContext, EVENT_SOURCE_STATE_CHANGED);
@@ -398,8 +396,8 @@ public class BiometricsSafetySourceTest {
when(mFingerprintManager.isHardwareDetected()).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(true);
when(mFaceManager.isHardwareDetected()).thenReturn(true); when(mFaceManager.isHardwareDetected()).thenReturn(true);
when(mFaceManager.hasEnrolledTemplates(anyInt())).thenReturn(true); when(mFaceManager.hasEnrolledTemplates(anyInt())).thenReturn(true);
when(mFingerprintManager.getEnrolledFingerprints(anyInt())).thenReturn( when(mFingerprintManager.getEnrolledFingerprints(anyInt()))
Collections.emptyList()); .thenReturn(Collections.emptyList());
BiometricsSafetySource.setSafetySourceData(mApplicationContext, EVENT_SOURCE_STATE_CHANGED); BiometricsSafetySource.setSafetySourceData(mApplicationContext, EVENT_SOURCE_STATE_CHANGED);
@@ -415,8 +413,8 @@ public class BiometricsSafetySourceTest {
when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true);
when(mFingerprintManager.isHardwareDetected()).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(true);
when(mFaceManager.isHardwareDetected()).thenReturn(false); when(mFaceManager.isHardwareDetected()).thenReturn(false);
when(mFingerprintManager.getEnrolledFingerprints(anyInt())).thenReturn( when(mFingerprintManager.getEnrolledFingerprints(anyInt()))
createFingerprintList(enrolledFingerprintsCount)); .thenReturn(createFingerprintList(enrolledFingerprintsCount));
ActiveUnlockTestUtils.enable(mApplicationContext); ActiveUnlockTestUtils.enable(mApplicationContext);
@@ -452,8 +450,8 @@ public class BiometricsSafetySourceTest {
when(mFingerprintManager.isHardwareDetected()).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(true);
when(mFaceManager.isHardwareDetected()).thenReturn(true); when(mFaceManager.isHardwareDetected()).thenReturn(true);
when(mFaceManager.hasEnrolledTemplates(anyInt())).thenReturn(true); when(mFaceManager.hasEnrolledTemplates(anyInt())).thenReturn(true);
when(mFingerprintManager.getEnrolledFingerprints(anyInt())).thenReturn( when(mFingerprintManager.getEnrolledFingerprints(anyInt()))
createFingerprintList(enrolledFingerprintsCount)); .thenReturn(createFingerprintList(enrolledFingerprintsCount));
ActiveUnlockTestUtils.enable(mApplicationContext); ActiveUnlockTestUtils.enable(mApplicationContext);
BiometricsSafetySource.setSafetySourceData(mApplicationContext, EVENT_SOURCE_STATE_CHANGED); BiometricsSafetySource.setSafetySourceData(mApplicationContext, EVENT_SOURCE_STATE_CHANGED);
@@ -462,7 +460,6 @@ public class BiometricsSafetySourceTest {
"security_settings_biometric_preference_title", "security_settings_biometric_preference_title",
"security_settings_biometric_preference_summary_both_fp_single", "security_settings_biometric_preference_summary_both_fp_single",
Settings.CombinedBiometricSettingsActivity.class.getName()); Settings.CombinedBiometricSettingsActivity.class.getName());
} }
@Test @Test
@@ -472,14 +469,15 @@ public class BiometricsSafetySourceTest {
when(mFingerprintManager.isHardwareDetected()).thenReturn(true); when(mFingerprintManager.isHardwareDetected()).thenReturn(true);
when(mFaceManager.isHardwareDetected()).thenReturn(true); when(mFaceManager.isHardwareDetected()).thenReturn(true);
when(mFaceManager.hasEnrolledTemplates(anyInt())).thenReturn(false); when(mFaceManager.hasEnrolledTemplates(anyInt())).thenReturn(false);
when(mFingerprintManager.getEnrolledFingerprints(anyInt())).thenReturn( when(mFingerprintManager.getEnrolledFingerprints(anyInt()))
createFingerprintList(enrolledFingerprintsCount)); .thenReturn(createFingerprintList(enrolledFingerprintsCount));
BiometricsSafetySource.setSafetySourceData(mApplicationContext, EVENT_SOURCE_STATE_CHANGED); BiometricsSafetySource.setSafetySourceData(mApplicationContext, EVENT_SOURCE_STATE_CHANGED);
assertSafetySourceEnabledDataSetWithPluralSummary( assertSafetySourceEnabledDataSetWithPluralSummary(
"security_settings_biometric_preference_title", "security_settings_biometric_preference_title",
"security_settings_fingerprint_preference_summary", enrolledFingerprintsCount, "security_settings_fingerprint_preference_summary",
enrolledFingerprintsCount,
Settings.CombinedBiometricSettingsActivity.class.getName()); Settings.CombinedBiometricSettingsActivity.class.getName());
} }
@@ -494,8 +492,12 @@ public class BiometricsSafetySourceTest {
BiometricsSafetySource.setSafetySourceData(mApplicationContext, EVENT_SOURCE_STATE_CHANGED); BiometricsSafetySource.setSafetySourceData(mApplicationContext, EVENT_SOURCE_STATE_CHANGED);
ArgumentCaptor<SafetySourceData> captor = ArgumentCaptor.forClass(SafetySourceData.class); ArgumentCaptor<SafetySourceData> captor = ArgumentCaptor.forClass(SafetySourceData.class);
verify(mSafetyCenterManagerWrapper).setSafetySourceData( verify(mSafetyCenterManagerWrapper)
any(), eq(BiometricsSafetySource.SAFETY_SOURCE_ID), captor.capture(), any()); .setSafetySourceData(
any(),
eq(BiometricsSafetySource.SAFETY_SOURCE_ID),
captor.capture(),
any());
SafetySourceStatus safetySourceStatus = captor.getValue().getStatus(); SafetySourceStatus safetySourceStatus = captor.getValue().getStatus();
assertThat(safetySourceStatus.getSeverityLevel()) assertThat(safetySourceStatus.getSeverityLevel())
.isEqualTo(SafetySourceData.SEVERITY_LEVEL_INFORMATION); .isEqualTo(SafetySourceData.SEVERITY_LEVEL_INFORMATION);
@@ -512,8 +514,12 @@ public class BiometricsSafetySourceTest {
BiometricsSafetySource.setSafetySourceData(mApplicationContext, EVENT_SOURCE_STATE_CHANGED); BiometricsSafetySource.setSafetySourceData(mApplicationContext, EVENT_SOURCE_STATE_CHANGED);
ArgumentCaptor<SafetySourceData> captor = ArgumentCaptor.forClass(SafetySourceData.class); ArgumentCaptor<SafetySourceData> captor = ArgumentCaptor.forClass(SafetySourceData.class);
verify(mSafetyCenterManagerWrapper).setSafetySourceData( verify(mSafetyCenterManagerWrapper)
any(), eq(BiometricsSafetySource.SAFETY_SOURCE_ID), captor.capture(), any()); .setSafetySourceData(
any(),
eq(BiometricsSafetySource.SAFETY_SOURCE_ID),
captor.capture(),
any());
SafetySourceStatus safetySourceStatus = captor.getValue().getStatus(); SafetySourceStatus safetySourceStatus = captor.getValue().getStatus();
assertThat(safetySourceStatus.getSeverityLevel()) assertThat(safetySourceStatus.getSeverityLevel())
.isEqualTo(SafetySourceData.SEVERITY_LEVEL_INFORMATION); .isEqualTo(SafetySourceData.SEVERITY_LEVEL_INFORMATION);
@@ -530,8 +536,12 @@ public class BiometricsSafetySourceTest {
BiometricsSafetySource.setSafetySourceData(mApplicationContext, EVENT_SOURCE_STATE_CHANGED); BiometricsSafetySource.setSafetySourceData(mApplicationContext, EVENT_SOURCE_STATE_CHANGED);
ArgumentCaptor<SafetySourceData> captor = ArgumentCaptor.forClass(SafetySourceData.class); ArgumentCaptor<SafetySourceData> captor = ArgumentCaptor.forClass(SafetySourceData.class);
verify(mSafetyCenterManagerWrapper).setSafetySourceData( verify(mSafetyCenterManagerWrapper)
any(), eq(BiometricsSafetySource.SAFETY_SOURCE_ID), captor.capture(), any()); .setSafetySourceData(
any(),
eq(BiometricsSafetySource.SAFETY_SOURCE_ID),
captor.capture(),
any());
SafetySourceStatus safetySourceStatus = captor.getValue().getStatus(); SafetySourceStatus safetySourceStatus = captor.getValue().getStatus();
assertThat(safetySourceStatus.getSeverityLevel()) assertThat(safetySourceStatus.getSeverityLevel())
.isEqualTo(SafetySourceData.SEVERITY_LEVEL_UNSPECIFIED); .isEqualTo(SafetySourceData.SEVERITY_LEVEL_UNSPECIFIED);
@@ -547,8 +557,12 @@ public class BiometricsSafetySourceTest {
BiometricsSafetySource.setSafetySourceData(mApplicationContext, EVENT_SOURCE_STATE_CHANGED); BiometricsSafetySource.setSafetySourceData(mApplicationContext, EVENT_SOURCE_STATE_CHANGED);
ArgumentCaptor<SafetySourceData> captor = ArgumentCaptor.forClass(SafetySourceData.class); ArgumentCaptor<SafetySourceData> captor = ArgumentCaptor.forClass(SafetySourceData.class);
verify(mSafetyCenterManagerWrapper).setSafetySourceData( verify(mSafetyCenterManagerWrapper)
any(), eq(BiometricsSafetySource.SAFETY_SOURCE_ID), captor.capture(), any()); .setSafetySourceData(
any(),
eq(BiometricsSafetySource.SAFETY_SOURCE_ID),
captor.capture(),
any());
SafetySourceStatus safetySourceStatus = captor.getValue().getStatus(); SafetySourceStatus safetySourceStatus = captor.getValue().getStatus();
assertThat(safetySourceStatus.getSeverityLevel()) assertThat(safetySourceStatus.getSeverityLevel())
.isEqualTo(SafetySourceData.SEVERITY_LEVEL_INFORMATION); .isEqualTo(SafetySourceData.SEVERITY_LEVEL_INFORMATION);
@@ -564,8 +578,12 @@ public class BiometricsSafetySourceTest {
BiometricsSafetySource.setSafetySourceData(mApplicationContext, EVENT_SOURCE_STATE_CHANGED); BiometricsSafetySource.setSafetySourceData(mApplicationContext, EVENT_SOURCE_STATE_CHANGED);
ArgumentCaptor<SafetySourceData> captor = ArgumentCaptor.forClass(SafetySourceData.class); ArgumentCaptor<SafetySourceData> captor = ArgumentCaptor.forClass(SafetySourceData.class);
verify(mSafetyCenterManagerWrapper).setSafetySourceData( verify(mSafetyCenterManagerWrapper)
any(), eq(BiometricsSafetySource.SAFETY_SOURCE_ID), captor.capture(), any()); .setSafetySourceData(
any(),
eq(BiometricsSafetySource.SAFETY_SOURCE_ID),
captor.capture(),
any());
SafetySourceStatus safetySourceStatus = captor.getValue().getStatus(); SafetySourceStatus safetySourceStatus = captor.getValue().getStatus();
assertThat(safetySourceStatus.getSeverityLevel()) assertThat(safetySourceStatus.getSeverityLevel())
.isEqualTo(SafetySourceData.SEVERITY_LEVEL_UNSPECIFIED); .isEqualTo(SafetySourceData.SEVERITY_LEVEL_UNSPECIFIED);
@@ -581,8 +599,12 @@ public class BiometricsSafetySourceTest {
BiometricsSafetySource.setSafetySourceData(mApplicationContext, EVENT_SOURCE_STATE_CHANGED); BiometricsSafetySource.setSafetySourceData(mApplicationContext, EVENT_SOURCE_STATE_CHANGED);
ArgumentCaptor<SafetySourceData> captor = ArgumentCaptor.forClass(SafetySourceData.class); ArgumentCaptor<SafetySourceData> captor = ArgumentCaptor.forClass(SafetySourceData.class);
verify(mSafetyCenterManagerWrapper).setSafetySourceData( verify(mSafetyCenterManagerWrapper)
any(), eq(BiometricsSafetySource.SAFETY_SOURCE_ID), captor.capture(), any()); .setSafetySourceData(
any(),
eq(BiometricsSafetySource.SAFETY_SOURCE_ID),
captor.capture(),
any());
SafetySourceStatus safetySourceStatus = captor.getValue().getStatus(); SafetySourceStatus safetySourceStatus = captor.getValue().getStatus();
assertThat(safetySourceStatus.getSeverityLevel()) assertThat(safetySourceStatus.getSeverityLevel())
.isEqualTo(SafetySourceData.SEVERITY_LEVEL_INFORMATION); .isEqualTo(SafetySourceData.SEVERITY_LEVEL_INFORMATION);
@@ -598,61 +620,74 @@ public class BiometricsSafetySourceTest {
BiometricsSafetySource.setSafetySourceData(mApplicationContext, EVENT_SOURCE_STATE_CHANGED); BiometricsSafetySource.setSafetySourceData(mApplicationContext, EVENT_SOURCE_STATE_CHANGED);
ArgumentCaptor<SafetySourceData> captor = ArgumentCaptor.forClass(SafetySourceData.class); ArgumentCaptor<SafetySourceData> captor = ArgumentCaptor.forClass(SafetySourceData.class);
verify(mSafetyCenterManagerWrapper).setSafetySourceData( verify(mSafetyCenterManagerWrapper)
any(), eq(BiometricsSafetySource.SAFETY_SOURCE_ID), captor.capture(), any()); .setSafetySourceData(
any(),
eq(BiometricsSafetySource.SAFETY_SOURCE_ID),
captor.capture(),
any());
SafetySourceStatus safetySourceStatus = captor.getValue().getStatus(); SafetySourceStatus safetySourceStatus = captor.getValue().getStatus();
assertThat(safetySourceStatus.getSeverityLevel()) assertThat(safetySourceStatus.getSeverityLevel())
.isEqualTo(SafetySourceData.SEVERITY_LEVEL_UNSPECIFIED); .isEqualTo(SafetySourceData.SEVERITY_LEVEL_UNSPECIFIED);
} }
private void assertSafetySourceDisabledDataSetWithSingularSummary(String expectedTitleResName, private void assertSafetySourceDisabledDataSetWithSingularSummary(
String expectedSummaryResName) { String expectedTitleResName, String expectedSummaryResName) {
assertSafetySourceDisabledDataSet( assertSafetySourceDisabledDataSet(
ResourcesUtils.getResourcesString(mApplicationContext, expectedTitleResName), ResourcesUtils.getResourcesString(mApplicationContext, expectedTitleResName),
ResourcesUtils.getResourcesString(mApplicationContext, expectedSummaryResName) ResourcesUtils.getResourcesString(mApplicationContext, expectedSummaryResName));
);
} }
private void assertSafetySourceEnabledDataSetWithSingularSummary(String expectedTitleResName, private void assertSafetySourceEnabledDataSetWithSingularSummary(
String expectedTitleResName,
String expectedSummaryResName, String expectedSummaryResName,
String expectedSettingsClassName) { String expectedSettingsClassName) {
assertSafetySourceEnabledDataSet( assertSafetySourceEnabledDataSet(
ResourcesUtils.getResourcesString(mApplicationContext, expectedTitleResName), ResourcesUtils.getResourcesString(mApplicationContext, expectedTitleResName),
ResourcesUtils.getResourcesString(mApplicationContext, expectedSummaryResName), ResourcesUtils.getResourcesString(mApplicationContext, expectedSummaryResName),
expectedSettingsClassName expectedSettingsClassName);
);
} }
private void assertSafetySourceDisabledDataSetWithPluralSummary(String expectedTitleResName, private void assertSafetySourceDisabledDataSetWithPluralSummary(
String expectedSummaryResName, int expectedSummaryQuantity) { String expectedTitleResName,
final int stringResId = ResourcesUtils.getResourcesId( String expectedSummaryResName,
ApplicationProvider.getApplicationContext(), "string", int expectedSummaryQuantity) {
expectedSummaryResName); final int stringResId =
ResourcesUtils.getResourcesId(
ApplicationProvider.getApplicationContext(),
"string",
expectedSummaryResName);
assertSafetySourceDisabledDataSet( assertSafetySourceDisabledDataSet(
ResourcesUtils.getResourcesString(mApplicationContext, expectedTitleResName), ResourcesUtils.getResourcesString(mApplicationContext, expectedTitleResName),
StringUtil.getIcuPluralsString(mApplicationContext, StringUtil.getIcuPluralsString(
expectedSummaryQuantity, stringResId) mApplicationContext, expectedSummaryQuantity, stringResId));
);
} }
private void assertSafetySourceEnabledDataSetWithPluralSummary(String expectedTitleResName, private void assertSafetySourceEnabledDataSetWithPluralSummary(
String expectedSummaryResName, int expectedSummaryQuantity, String expectedTitleResName,
String expectedSummaryResName,
int expectedSummaryQuantity,
String expectedSettingsClassName) { String expectedSettingsClassName) {
final int stringResId = ResourcesUtils.getResourcesId( final int stringResId =
ApplicationProvider.getApplicationContext(), "string", ResourcesUtils.getResourcesId(
expectedSummaryResName); ApplicationProvider.getApplicationContext(),
"string",
expectedSummaryResName);
assertSafetySourceEnabledDataSet( assertSafetySourceEnabledDataSet(
ResourcesUtils.getResourcesString(mApplicationContext, expectedTitleResName), ResourcesUtils.getResourcesString(mApplicationContext, expectedTitleResName),
StringUtil.getIcuPluralsString(mApplicationContext, StringUtil.getIcuPluralsString(
expectedSummaryQuantity, stringResId), mApplicationContext, expectedSummaryQuantity, stringResId),
expectedSettingsClassName expectedSettingsClassName);
);
} }
private void assertSafetySourceDisabledDataSet(String expectedTitle, String expectedSummary) { private void assertSafetySourceDisabledDataSet(String expectedTitle, String expectedSummary) {
ArgumentCaptor<SafetySourceData> captor = ArgumentCaptor.forClass(SafetySourceData.class); ArgumentCaptor<SafetySourceData> captor = ArgumentCaptor.forClass(SafetySourceData.class);
verify(mSafetyCenterManagerWrapper).setSafetySourceData( verify(mSafetyCenterManagerWrapper)
any(), eq(BiometricsSafetySource.SAFETY_SOURCE_ID), captor.capture(), any()); .setSafetySourceData(
any(),
eq(BiometricsSafetySource.SAFETY_SOURCE_ID),
captor.capture(),
any());
SafetySourceData safetySourceData = captor.getValue(); SafetySourceData safetySourceData = captor.getValue();
SafetySourceStatus safetySourceStatus = safetySourceData.getStatus(); SafetySourceStatus safetySourceStatus = safetySourceData.getStatus();
@@ -667,11 +702,15 @@ public class BiometricsSafetySourceTest {
assertThat(clickIntent.getAction()).isEqualTo(ACTION_SHOW_ADMIN_SUPPORT_DETAILS); assertThat(clickIntent.getAction()).isEqualTo(ACTION_SHOW_ADMIN_SUPPORT_DETAILS);
} }
private void assertSafetySourceEnabledDataSet(String expectedTitle, String expectedSummary, private void assertSafetySourceEnabledDataSet(
String expectedSettingsClassName) { String expectedTitle, String expectedSummary, String expectedSettingsClassName) {
ArgumentCaptor<SafetySourceData> captor = ArgumentCaptor.forClass(SafetySourceData.class); ArgumentCaptor<SafetySourceData> captor = ArgumentCaptor.forClass(SafetySourceData.class);
verify(mSafetyCenterManagerWrapper).setSafetySourceData( verify(mSafetyCenterManagerWrapper)
any(), eq(BiometricsSafetySource.SAFETY_SOURCE_ID), captor.capture(), any()); .setSafetySourceData(
any(),
eq(BiometricsSafetySource.SAFETY_SOURCE_ID),
captor.capture(),
any());
SafetySourceData safetySourceData = captor.getValue(); SafetySourceData safetySourceData = captor.getValue();
SafetySourceStatus safetySourceStatus = safetySourceData.getStatus(); SafetySourceStatus safetySourceStatus = safetySourceData.getStatus();
@@ -680,10 +719,8 @@ public class BiometricsSafetySourceTest {
assertThat(safetySourceStatus.isEnabled()).isTrue(); assertThat(safetySourceStatus.isEnabled()).isTrue();
final Intent clickIntent = safetySourceStatus.getPendingIntent().getIntent(); final Intent clickIntent = safetySourceStatus.getPendingIntent().getIntent();
assertThat(clickIntent).isNotNull(); assertThat(clickIntent).isNotNull();
assertThat(clickIntent.getComponent().getPackageName()) assertThat(clickIntent.getComponent().getPackageName()).isEqualTo("com.android.settings");
.isEqualTo("com.android.settings"); assertThat(clickIntent.getComponent().getClassName()).isEqualTo(expectedSettingsClassName);
assertThat(clickIntent.getComponent().getClassName())
.isEqualTo(expectedSettingsClassName);
} }
private List<Fingerprint> createFingerprintList(int size) { private List<Fingerprint> createFingerprintList(int size) {