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

Commit de0c2a08 authored by Giulio Fiscella's avatar Giulio Fiscella
Browse files

Add refresh broadcast id checks

Test: atest SettingsUnitTests
Bug: 224522714
Change-Id: Id49767c27ecd842fc9d886cbf5bc0eee9eabc775
parent 92caf1c7
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -49,9 +49,9 @@ public class SafetySourceBroadcastReceiver extends BroadcastReceiver {
        if (ACTION_REFRESH_SAFETY_SOURCES.equals(intent.getAction())) {
            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);
            if (sourceIdsExtra != null && sourceIdsExtra.length > 0 && refreshBroadcastId != null) {
                final SafetyEvent safetyEvent = new SafetyEvent.Builder(
                        SAFETY_EVENT_TYPE_REFRESH_REQUESTED)
                        .setRefreshBroadcastId(refreshBroadcastId).build();
+47 −38
Original line number Diff line number Diff line
@@ -54,13 +54,13 @@ import java.util.List;
@RunWith(AndroidJUnit4.class)
public class SafetySourceBroadcastReceiverTest {

    private static final String REFRESH_BROADCAST_ID = "REFRESH_BROADCAST_ID";

    private Context mApplicationContext;

    @Mock
    private SafetyCenterManagerWrapper mSafetyCenterManagerWrapper;
    @Mock private SafetyCenterManagerWrapper mSafetyCenterManagerWrapper;

    @Mock
    private LockPatternUtils mLockPatternUtils;
    @Mock private LockPatternUtils mLockPatternUtils;

    @Before
    public void setUp() {
@@ -78,41 +78,50 @@ public class SafetySourceBroadcastReceiverTest {
    }

    @Test
    public void onReceive_onRefresh_whenSafetyCenterIsEnabled_withNoIntentAction_doesNotSetData() {
        when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true);
        Intent intent = new Intent().putExtra(EXTRA_REFRESH_SAFETY_SOURCE_IDS, new String[]{});
    public void onReceive_onRefresh_whenSafetyCenterIsDisabled_doesNotSetData() {
        when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(false);
        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, REFRESH_BROADCAST_ID);

        new SafetySourceBroadcastReceiver().onReceive(mApplicationContext, intent);

        verify(mSafetyCenterManagerWrapper, never()).setSafetySourceData(
                any(), any(), any(), any());
        verify(mSafetyCenterManagerWrapper, never())
                .setSafetySourceData(any(), any(), any(), any());
    }

    @Test
    public void onReceive_onRefresh_whenSafetyCenterIsDisabled_doesNotSetData() {
        when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(false);
    public void onReceive_onRefresh_whenSafetyCenterIsEnabled_withNoIntentAction_doesNotSetData() {
        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 });
                                new String[] {LockScreenSafetySource.SAFETY_SOURCE_ID})
                        .putExtra(EXTRA_REFRESH_SAFETY_SOURCES_BROADCAST_ID, REFRESH_BROADCAST_ID);

        new SafetySourceBroadcastReceiver().onReceive(mApplicationContext, intent);

        verify(mSafetyCenterManagerWrapper, never()).setSafetySourceData(
                any(), any(), any(), any());
        verify(mSafetyCenterManagerWrapper, never())
                .setSafetySourceData(any(), any(), any(), any());
    }

    @Test
    public void onReceive_onRefresh_whenSafetyCenterIsEnabled_withNullSourceIds_doesNotSetData() {
        when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true);
        Intent intent = new Intent().setAction(ACTION_REFRESH_SAFETY_SOURCES);
        Intent intent =
                new Intent()
                        .setAction(ACTION_REFRESH_SAFETY_SOURCES)
                        .putExtra(EXTRA_REFRESH_SAFETY_SOURCES_BROADCAST_ID, REFRESH_BROADCAST_ID);

        new SafetySourceBroadcastReceiver().onReceive(mApplicationContext, intent);

        verify(mSafetyCenterManagerWrapper, never()).setSafetySourceData(
                any(), any(), any(), any());
        verify(mSafetyCenterManagerWrapper, never())
                .setSafetySourceData(any(), any(), any(), any());
    }

    @Test
@@ -121,16 +130,17 @@ public class SafetySourceBroadcastReceiverTest {
        Intent intent =
                new Intent()
                        .setAction(ACTION_REFRESH_SAFETY_SOURCES)
                        .putExtra(EXTRA_REFRESH_SAFETY_SOURCE_IDS, new String[]{});
                        .putExtra(EXTRA_REFRESH_SAFETY_SOURCE_IDS, new String[] {})
                        .putExtra(EXTRA_REFRESH_SAFETY_SOURCES_BROADCAST_ID, REFRESH_BROADCAST_ID);

        new SafetySourceBroadcastReceiver().onReceive(mApplicationContext, intent);

        verify(mSafetyCenterManagerWrapper, never()).setSafetySourceData(
                any(), any(), any(), any());
        verify(mSafetyCenterManagerWrapper, never())
                .setSafetySourceData(any(), any(), any(), any());
    }

    @Test
    public void onReceive_onRefresh_setsRefreshEvent() {
    public void onReceive_onRefresh_whenSafetyCenterIsEnabled_withNoBroadcastId_doesNotSetData() {
        when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true);
        Intent intent =
                new Intent()
@@ -140,17 +150,13 @@ public class SafetySourceBroadcastReceiverTest {
                                new String[] {LockScreenSafetySource.SAFETY_SOURCE_ID});

        new SafetySourceBroadcastReceiver().onReceive(mApplicationContext, intent);
        ArgumentCaptor<SafetyEvent> captor = ArgumentCaptor.forClass(SafetyEvent.class);
        verify(mSafetyCenterManagerWrapper, times(1))
                .setSafetySourceData(any(), any(), any(), captor.capture());

        assertThat(captor.getValue()).isEqualTo(
                new SafetyEvent.Builder(SAFETY_EVENT_TYPE_REFRESH_REQUESTED).build());
        verify(mSafetyCenterManagerWrapper, never())
                .setSafetySourceData(any(), any(), any(), any());
    }

    @Test
    public void onReceive_onRefreshWithBroadcastId_setsRefreshEventWithBroadcastId() {
        final String refreshBroadcastId = "REFRESH_BROADCAST_ID";
    public void onReceive_onRefresh_setsRefreshEvent() {
        when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true);
        Intent intent =
                new Intent()
@@ -158,17 +164,18 @@ public class SafetySourceBroadcastReceiverTest {
                        .putExtra(
                                EXTRA_REFRESH_SAFETY_SOURCE_IDS,
                                new String[] {LockScreenSafetySource.SAFETY_SOURCE_ID})
                        .putExtra(EXTRA_REFRESH_SAFETY_SOURCES_BROADCAST_ID, refreshBroadcastId);
                        .putExtra(EXTRA_REFRESH_SAFETY_SOURCES_BROADCAST_ID, REFRESH_BROADCAST_ID);

        new SafetySourceBroadcastReceiver().onReceive(mApplicationContext, intent);
        ArgumentCaptor<SafetyEvent> 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(
        assertThat(captor.getValue())
                .isEqualTo(
                        new SafetyEvent.Builder(SAFETY_EVENT_TYPE_REFRESH_REQUESTED)
                        .setRefreshBroadcastId(refreshBroadcastId).build());
                                .setRefreshBroadcastId(REFRESH_BROADCAST_ID)
                                .build());
    }

    @Test
@@ -179,7 +186,8 @@ public class SafetySourceBroadcastReceiverTest {
                        .setAction(ACTION_REFRESH_SAFETY_SOURCES)
                        .putExtra(
                                EXTRA_REFRESH_SAFETY_SOURCE_IDS,
                                new String[]{ LockScreenSafetySource.SAFETY_SOURCE_ID });
                                new String[] {LockScreenSafetySource.SAFETY_SOURCE_ID})
                        .putExtra(EXTRA_REFRESH_SAFETY_SOURCES_BROADCAST_ID, REFRESH_BROADCAST_ID);

        new SafetySourceBroadcastReceiver().onReceive(mApplicationContext, intent);
        ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);
@@ -197,7 +205,8 @@ public class SafetySourceBroadcastReceiverTest {
                        .setAction(ACTION_REFRESH_SAFETY_SOURCES)
                        .putExtra(
                                EXTRA_REFRESH_SAFETY_SOURCE_IDS,
                                new String[]{ BiometricsSafetySource.SAFETY_SOURCE_ID });
                                new String[] {BiometricsSafetySource.SAFETY_SOURCE_ID})
                        .putExtra(EXTRA_REFRESH_SAFETY_SOURCES_BROADCAST_ID, REFRESH_BROADCAST_ID);

        new SafetySourceBroadcastReceiver().onReceive(mApplicationContext, intent);
        ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);