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

Commit b21dcf67 authored by Doris Ling's avatar Doris Ling
Browse files

Fix crash when pausing DndCondition.

- check whether the receiver is registered before trying to unregister
it.

Change-Id: Ia949f5a90b8866f01684dc2c7797e87d8dc7804e
Fixes: 74073233
Test: make RunSettingsRoboTests
parent 91b6d17b
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -152,7 +152,9 @@ public class DndCondition extends Condition {

    @Override
    public void onPause() {
        if (mRegistered) {
            mManager.getContext().unregisterReceiver(mReceiver);
            mRegistered = false;
        }
    }
}
+14 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.settings.dashboard.conditional;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -26,6 +27,7 @@ import android.content.ComponentName;
import android.content.Context;
import android.content.pm.PackageManager;

import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.SettingsRobolectricTestRunner;

import org.junit.Before;
@@ -47,6 +49,7 @@ public class DndConditionTest {
    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        FakeFeatureFactory.setupForTest();
        when(mConditionManager.getContext()).thenReturn(mContext);
        when(mContext.getPackageManager()).thenReturn(mPackageManager);
    }
@@ -90,4 +93,15 @@ public class DndConditionTest {

        verify(mContext).unregisterReceiver(any(DndCondition.Receiver.class));
    }

    @Test
    public void onPause_noReceiverRegistered_shouldNotUnregisterReceiver() {
        DndCondition condition = new DndCondition(mConditionManager);
        condition.onPause();
        reset(mContext);

        condition.onPause();

        verify(mContext, never()).unregisterReceiver(any(DndCondition.Receiver.class));
    }
}