Merge "Fix crash when pausing DndCondition." into pi-dev

am: e119601136

Change-Id: I93b7cf1cf7ceecb4855469d69e35fb2d95412e1c
This commit is contained in:
Doris Ling
2018-03-22 05:26:50 +00:00
committed by android-build-merger
2 changed files with 18 additions and 2 deletions

View File

@@ -152,7 +152,9 @@ public class DndCondition extends Condition {
@Override @Override
public void onPause() { public void onPause() {
mManager.getContext().unregisterReceiver(mReceiver); if (mRegistered) {
mRegistered = false; mManager.getContext().unregisterReceiver(mReceiver);
mRegistered = false;
}
} }
} }

View File

@@ -18,6 +18,7 @@ package com.android.settings.dashboard.conditional;
import static org.mockito.Matchers.any; import static org.mockito.Matchers.any;
import static org.mockito.Matchers.eq; import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.never; import static org.mockito.Mockito.never;
import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.times; import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
@@ -26,6 +27,7 @@ import android.content.ComponentName;
import android.content.Context; import android.content.Context;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.SettingsRobolectricTestRunner;
import org.junit.Before; import org.junit.Before;
@@ -47,6 +49,7 @@ public class DndConditionTest {
@Before @Before
public void setUp() { public void setUp() {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
FakeFeatureFactory.setupForTest();
when(mConditionManager.getContext()).thenReturn(mContext); when(mConditionManager.getContext()).thenReturn(mContext);
when(mContext.getPackageManager()).thenReturn(mPackageManager); when(mContext.getPackageManager()).thenReturn(mPackageManager);
} }
@@ -90,4 +93,15 @@ public class DndConditionTest {
verify(mContext).unregisterReceiver(any(DndCondition.Receiver.class)); 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));
}
} }