Merge "Fix crash when pausing DndCondition." into pi-dev
diff --git a/src/com/android/settings/dashboard/conditional/DndCondition.java b/src/com/android/settings/dashboard/conditional/DndCondition.java
index cd5178a..673dccc 100644
--- a/src/com/android/settings/dashboard/conditional/DndCondition.java
+++ b/src/com/android/settings/dashboard/conditional/DndCondition.java
@@ -152,7 +152,9 @@
 
     @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 8be7b6f..d68a675 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 @@
 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.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 @@
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
+        FakeFeatureFactory.setupForTest();
         when(mConditionManager.getContext()).thenReturn(mContext);
         when(mContext.getPackageManager()).thenReturn(mPackageManager);
     }
@@ -90,4 +93,15 @@
 
         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));
+    }
 }