diff --git a/src/com/android/settings/dashboard/conditional/DndCondition.java b/src/com/android/settings/dashboard/conditional/DndCondition.java index cd5178a6e68..673dccc0f8c 100644 --- a/src/com/android/settings/dashboard/conditional/DndCondition.java +++ b/src/com/android/settings/dashboard/conditional/DndCondition.java @@ -152,7 +152,9 @@ public class DndCondition extends Condition { @Override public void onPause() { - mManager.getContext().unregisterReceiver(mReceiver); - mRegistered = false; + if (mRegistered) { + mManager.getContext().unregisterReceiver(mReceiver); + mRegistered = false; + } } } diff --git a/tests/robotests/src/com/android/settings/dashboard/conditional/DndConditionTest.java b/tests/robotests/src/com/android/settings/dashboard/conditional/DndConditionTest.java index 8be7b6f7d54..d68a6755cb1 100644 --- a/tests/robotests/src/com/android/settings/dashboard/conditional/DndConditionTest.java +++ b/tests/robotests/src/com/android/settings/dashboard/conditional/DndConditionTest.java @@ -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)); + } }