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

Commit ba2f3ee3 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix crash when silencing condition." into oc-dev

parents 120ec5d1 b72163b9
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ public abstract class Condition {

    protected final ConditionManager mManager;
    protected final MetricsFeatureProvider mMetricsFeatureProvider;
    protected boolean mReceiverRegistered;

    private boolean mIsSilenced;
    private boolean mIsActive;
@@ -110,9 +111,15 @@ public abstract class Condition {
            return;
        }
        if (silenced) {
            if (!mReceiverRegistered) {
                mManager.getContext().registerReceiver(receiver, getIntentFilter());
                mReceiverRegistered = true;
            }
        } else {
            if (mReceiverRegistered) {
                mManager.getContext().unregisterReceiver(receiver);
                mReceiverRegistered = false;
            }
        }
    }

+16 −3
Original line number Diff line number Diff line
@@ -29,11 +29,14 @@ import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.annotation.Config;
import org.robolectric.RuntimeEnvironment;

import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

@@ -45,14 +48,14 @@ public class ConditionTest {
    private ConditionManager mConditionManager;
    @Mock
    private MetricsFeatureProvider mMetricsFeatureProvider;
    @Mock
    private Context mContext;

    private Context mContext;
    private TestCondition mCondition;

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        mContext = spy(RuntimeEnvironment.application);
        mCondition = new TestCondition(mConditionManager, mMetricsFeatureProvider);
        when(mConditionManager.getContext()).thenReturn(mContext);
    }
@@ -82,12 +85,22 @@ public class ConditionTest {
    }

    @Test
    public void onSilenceChanged_notSilenced_shouldUnregisterReceiver() {
    public void onSilenceChanged_notSilenced_registered_shouldUnregisterReceiver() {
        mCondition.onSilenceChanged(true);

        mCondition.onSilenceChanged(false);

        verify(mContext).unregisterReceiver(TestCondition.mReceiver);
    }

    @Test
    public void onSilenceChanged_notSilenced_notRegistered_shouldNotCrash() {
        mCondition.onSilenceChanged(false);

        verify(mContext, never()).unregisterReceiver(TestCondition.mReceiver);
        // no crash
    }

    private static final class TestCondition extends Condition {

        private static final int TEST_METRIC_CONSTANT = 1234;