diff --git a/src/com/android/settings/safetycenter/SafetySourceBroadcastReceiver.java b/src/com/android/settings/safetycenter/SafetySourceBroadcastReceiver.java index 38458d92571..dec06b02e79 100644 --- a/src/com/android/settings/safetycenter/SafetySourceBroadcastReceiver.java +++ b/src/com/android/settings/safetycenter/SafetySourceBroadcastReceiver.java @@ -26,6 +26,7 @@ import android.app.settings.SettingsEnums; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; +import android.safetycenter.SafetyCenterManager; import android.safetycenter.SafetyEvent; import com.android.settings.security.ScreenLockPreferenceDetailsUtils; @@ -37,8 +38,6 @@ import java.util.List; /** Broadcast receiver for handling requests from Safety Center for fresh data. */ public class SafetySourceBroadcastReceiver extends BroadcastReceiver { - private static final SafetyEvent EVENT_REFRESH_REQUESTED = - new SafetyEvent.Builder(SAFETY_EVENT_TYPE_REFRESH_REQUESTED).build(); private static final SafetyEvent EVENT_DEVICE_REBOOTED = new SafetyEvent.Builder(SAFETY_EVENT_TYPE_DEVICE_REBOOTED).build(); @@ -52,10 +51,15 @@ public class SafetySourceBroadcastReceiver extends BroadcastReceiver { String[] sourceIdsExtra = intent.getStringArrayExtra(EXTRA_REFRESH_SAFETY_SOURCE_IDS); if (sourceIdsExtra != null && sourceIdsExtra.length > 0) { + final String refreshBroadcastId = intent.getStringExtra( + SafetyCenterManager.EXTRA_REFRESH_SAFETY_SOURCES_BROADCAST_ID); + final SafetyEvent safetyEvent = new SafetyEvent.Builder( + SAFETY_EVENT_TYPE_REFRESH_REQUESTED) + .setRefreshBroadcastId(refreshBroadcastId).build(); refreshSafetySources( context, ImmutableList.copyOf(sourceIdsExtra), - EVENT_REFRESH_REQUESTED); + safetyEvent); } return; } diff --git a/tests/unit/src/com/android/settings/safetycenter/SafetySourceBroadcastReceiverTest.java b/tests/unit/src/com/android/settings/safetycenter/SafetySourceBroadcastReceiverTest.java index 8a4214ced2e..8004d600e9e 100644 --- a/tests/unit/src/com/android/settings/safetycenter/SafetySourceBroadcastReceiverTest.java +++ b/tests/unit/src/com/android/settings/safetycenter/SafetySourceBroadcastReceiverTest.java @@ -17,6 +17,7 @@ package com.android.settings.safetycenter; import static android.safetycenter.SafetyCenterManager.ACTION_REFRESH_SAFETY_SOURCES; +import static android.safetycenter.SafetyCenterManager.EXTRA_REFRESH_SAFETY_SOURCES_BROADCAST_ID; import static android.safetycenter.SafetyCenterManager.EXTRA_REFRESH_SAFETY_SOURCE_IDS; import static android.safetycenter.SafetyEvent.SAFETY_EVENT_TYPE_DEVICE_REBOOTED; import static android.safetycenter.SafetyEvent.SAFETY_EVENT_TYPE_REFRESH_REQUESTED; @@ -147,6 +148,29 @@ public class SafetySourceBroadcastReceiverTest { new SafetyEvent.Builder(SAFETY_EVENT_TYPE_REFRESH_REQUESTED).build()); } + @Test + public void onReceive_onRefreshWithBroadcastId_setsRefreshEventWithBroadcastId() { + final String refreshBroadcastId = "REFRESH_BROADCAST_ID"; + when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true); + Intent intent = + new Intent() + .setAction(ACTION_REFRESH_SAFETY_SOURCES) + .putExtra( + EXTRA_REFRESH_SAFETY_SOURCE_IDS, + new String[]{ LockScreenSafetySource.SAFETY_SOURCE_ID }) + .putExtra(EXTRA_REFRESH_SAFETY_SOURCES_BROADCAST_ID, refreshBroadcastId); + + new SafetySourceBroadcastReceiver().onReceive(mApplicationContext, intent); + ArgumentCaptor captor = ArgumentCaptor.forClass(SafetyEvent.class); + verify(mSafetyCenterManagerWrapper, times(1)) + .setSafetySourceData(any(), any(), any(), captor.capture()); + + assertThat(captor.getValue().getRefreshBroadcastId()).isEqualTo(refreshBroadcastId); + assertThat(captor.getValue()).isEqualTo( + new SafetyEvent.Builder(SAFETY_EVENT_TYPE_REFRESH_REQUESTED) + .setRefreshBroadcastId(refreshBroadcastId).build()); + } + @Test public void onReceive_onRefresh_withLockscreenSourceId_setsLockscreenData() { when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true);