Send safety center status on boot

Bug: 215517959
Test: atest SettingsUnitTests
Change-Id: Id34d68063b2bacd07c932b294b36546160384e92
This commit is contained in:
Marie Matheson
2022-02-14 20:33:57 +00:00
parent bf6a2c8136
commit 1106faf2cf
3 changed files with 77 additions and 20 deletions

View File

@@ -4367,6 +4367,7 @@
android:exported="true"> android:exported="true">
<intent-filter> <intent-filter>
<action android:name="android.safetycenter.action.REFRESH_SAFETY_SOURCES"/> <action android:name="android.safetycenter.action.REFRESH_SAFETY_SOURCES"/>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter> </intent-filter>
</receiver> </receiver>

View File

@@ -16,6 +16,8 @@
package com.android.settings.safetycenter; package com.android.settings.safetycenter;
import static android.content.Intent.ACTION_BOOT_COMPLETED;
import static android.safetycenter.SafetyCenterManager.ACTION_REFRESH_SAFETY_SOURCES;
import static android.safetycenter.SafetyCenterManager.EXTRA_REFRESH_SAFETY_SOURCE_IDS; import static android.safetycenter.SafetyCenterManager.EXTRA_REFRESH_SAFETY_SOURCE_IDS;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
@@ -24,6 +26,8 @@ import android.content.Intent;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import java.util.List;
/** Broadcast receiver for handling requests from Safety Center for fresh data. */ /** Broadcast receiver for handling requests from Safety Center for fresh data. */
public class SafetySourceBroadcastReceiver extends BroadcastReceiver { public class SafetySourceBroadcastReceiver extends BroadcastReceiver {
@@ -33,10 +37,22 @@ public class SafetySourceBroadcastReceiver extends BroadcastReceiver {
return; return;
} }
String[] sourceIdsExtra = intent.getStringArrayExtra(EXTRA_REFRESH_SAFETY_SOURCE_IDS); if (ACTION_REFRESH_SAFETY_SOURCES.equals(intent.getAction())) {
String[] sourceIdsExtra =
intent.getStringArrayExtra(EXTRA_REFRESH_SAFETY_SOURCE_IDS);
if (sourceIdsExtra != null && sourceIdsExtra.length > 0) { if (sourceIdsExtra != null && sourceIdsExtra.length > 0) {
ImmutableList<String> sourceIds = ImmutableList.copyOf(sourceIdsExtra); refreshSafetySources(context, ImmutableList.copyOf(sourceIdsExtra));
}
return;
}
if (ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
refreshAllSafetySources(context);
}
}
private static void refreshSafetySources(Context context, List<String> sourceIds) {
if (sourceIds.contains(LockScreenSafetySource.SAFETY_SOURCE_ID)) { if (sourceIds.contains(LockScreenSafetySource.SAFETY_SOURCE_ID)) {
LockScreenSafetySource.sendSafetyData(context); LockScreenSafetySource.sendSafetyData(context);
} }
@@ -45,5 +61,9 @@ public class SafetySourceBroadcastReceiver extends BroadcastReceiver {
BiometricsSafetySource.sendSafetyData(context); BiometricsSafetySource.sendSafetyData(context);
} }
} }
private static void refreshAllSafetySources(Context context) {
LockScreenSafetySource.sendSafetyData(context);
BiometricsSafetySource.sendSafetyData(context);
} }
} }

View File

@@ -16,6 +16,7 @@
package com.android.settings.safetycenter; package com.android.settings.safetycenter;
import static android.safetycenter.SafetyCenterManager.ACTION_REFRESH_SAFETY_SOURCES;
import static android.safetycenter.SafetyCenterManager.EXTRA_REFRESH_SAFETY_SOURCE_IDS; import static android.safetycenter.SafetyCenterManager.EXTRA_REFRESH_SAFETY_SOURCE_IDS;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
@@ -66,11 +67,23 @@ public class SafetySourceBroadcastReceiverTest {
SafetyCenterStatusHolder.sInstance = null; SafetyCenterStatusHolder.sInstance = null;
} }
@Test
public void sendSafetyData_whenSafetyCenterIsEnabled_withNoIntentAction_sendsNoData() {
when(mSafetyCenterStatusHolder.isEnabled(mApplicationContext)).thenReturn(true);
Intent intent = new Intent().putExtra(EXTRA_REFRESH_SAFETY_SOURCE_IDS, new String[]{});
new SafetySourceBroadcastReceiver().onReceive(mApplicationContext, intent);
verify(mSafetyCenterManagerWrapper, never()).sendSafetyCenterUpdate(any(), any());
}
@Test @Test
public void sendSafetyData_whenSafetyCenterIsDisabled_sendsNoData() { public void sendSafetyData_whenSafetyCenterIsDisabled_sendsNoData() {
when(mSafetyCenterStatusHolder.isEnabled(mApplicationContext)).thenReturn(false); when(mSafetyCenterStatusHolder.isEnabled(mApplicationContext)).thenReturn(false);
Intent intent = Intent intent =
new Intent().putExtra( new Intent()
.setAction(ACTION_REFRESH_SAFETY_SOURCES)
.putExtra(
EXTRA_REFRESH_SAFETY_SOURCE_IDS, EXTRA_REFRESH_SAFETY_SOURCE_IDS,
new String[]{ LockScreenSafetySource.SAFETY_SOURCE_ID }); new String[]{ LockScreenSafetySource.SAFETY_SOURCE_ID });
@@ -82,7 +95,7 @@ public class SafetySourceBroadcastReceiverTest {
@Test @Test
public void sendSafetyData_whenSafetyCenterIsEnabled_withNullSourceIds_sendsNoData() { public void sendSafetyData_whenSafetyCenterIsEnabled_withNullSourceIds_sendsNoData() {
when(mSafetyCenterStatusHolder.isEnabled(mApplicationContext)).thenReturn(true); when(mSafetyCenterStatusHolder.isEnabled(mApplicationContext)).thenReturn(true);
Intent intent = new Intent(); Intent intent = new Intent().setAction(ACTION_REFRESH_SAFETY_SOURCES);
new SafetySourceBroadcastReceiver().onReceive(mApplicationContext, intent); new SafetySourceBroadcastReceiver().onReceive(mApplicationContext, intent);
@@ -92,7 +105,10 @@ public class SafetySourceBroadcastReceiverTest {
@Test @Test
public void sendSafetyData_whenSafetyCenterIsEnabled_withNoSourceIds_sendsNoData() { public void sendSafetyData_whenSafetyCenterIsEnabled_withNoSourceIds_sendsNoData() {
when(mSafetyCenterStatusHolder.isEnabled(mApplicationContext)).thenReturn(true); when(mSafetyCenterStatusHolder.isEnabled(mApplicationContext)).thenReturn(true);
Intent intent = new Intent().putExtra(EXTRA_REFRESH_SAFETY_SOURCE_IDS, new String[]{}); Intent intent =
new Intent()
.setAction(ACTION_REFRESH_SAFETY_SOURCES)
.putExtra(EXTRA_REFRESH_SAFETY_SOURCE_IDS, new String[]{});
new SafetySourceBroadcastReceiver().onReceive(mApplicationContext, intent); new SafetySourceBroadcastReceiver().onReceive(mApplicationContext, intent);
@@ -103,7 +119,9 @@ public class SafetySourceBroadcastReceiverTest {
public void sendSafetyData_withLockscreenSourceId_sendsLockscreenData() { public void sendSafetyData_withLockscreenSourceId_sendsLockscreenData() {
when(mSafetyCenterStatusHolder.isEnabled(mApplicationContext)).thenReturn(true); when(mSafetyCenterStatusHolder.isEnabled(mApplicationContext)).thenReturn(true);
Intent intent = Intent intent =
new Intent().putExtra( new Intent()
.setAction(ACTION_REFRESH_SAFETY_SOURCES)
.putExtra(
EXTRA_REFRESH_SAFETY_SOURCE_IDS, EXTRA_REFRESH_SAFETY_SOURCE_IDS,
new String[]{ LockScreenSafetySource.SAFETY_SOURCE_ID }); new String[]{ LockScreenSafetySource.SAFETY_SOURCE_ID });
@@ -120,7 +138,9 @@ public class SafetySourceBroadcastReceiverTest {
public void sendSafetyData_withBiometricsSourceId_sendsBiometricData() { public void sendSafetyData_withBiometricsSourceId_sendsBiometricData() {
when(mSafetyCenterStatusHolder.isEnabled(mApplicationContext)).thenReturn(true); when(mSafetyCenterStatusHolder.isEnabled(mApplicationContext)).thenReturn(true);
Intent intent = Intent intent =
new Intent().putExtra( new Intent()
.setAction(ACTION_REFRESH_SAFETY_SOURCES)
.putExtra(
EXTRA_REFRESH_SAFETY_SOURCE_IDS, EXTRA_REFRESH_SAFETY_SOURCE_IDS,
new String[]{ BiometricsSafetySource.SAFETY_SOURCE_ID }); new String[]{ BiometricsSafetySource.SAFETY_SOURCE_ID });
@@ -129,4 +149,20 @@ public class SafetySourceBroadcastReceiverTest {
// TODO(b/215517420): Update this test when BiometricSafetySource is implemented. // TODO(b/215517420): Update this test when BiometricSafetySource is implemented.
verify(mSafetyCenterManagerWrapper, never()).sendSafetyCenterUpdate(any(), any()); verify(mSafetyCenterManagerWrapper, never()).sendSafetyCenterUpdate(any(), any());
} }
@Test
public void sendSafetyData_onBootCompleted_sendsBiometricAndLockscreenData() {
when(mSafetyCenterStatusHolder.isEnabled(mApplicationContext)).thenReturn(true);
Intent intent = new Intent().setAction(Intent.ACTION_BOOT_COMPLETED);
// TODO(b/215517420): Update this test when BiometricSafetySource is implemented to test
// that biometrics data is also sent.
new SafetySourceBroadcastReceiver().onReceive(mApplicationContext, intent);
ArgumentCaptor<SafetySourceData> captor = ArgumentCaptor.forClass(SafetySourceData.class);
verify(mSafetyCenterManagerWrapper, times(1))
.sendSafetyCenterUpdate(any(), captor.capture());
SafetySourceData safetySourceData = captor.getValue();
assertThat(safetySourceData.getId()).isEqualTo(LockScreenSafetySource.SAFETY_SOURCE_ID);
}
} }