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

Commit 3534a7f4 authored by Bryce Lee's avatar Bryce Lee Committed by Automerger Merge Worker
Browse files

Always have ConditionalCoreStartable subscribe to monitor. am: daed6675

parents 63fe13e7 daed6675
Loading
Loading
Loading
Loading
+0 −10
Original line number Diff line number Diff line
@@ -43,11 +43,6 @@ public abstract class ConditionalCoreStartable implements CoreStartable {

    @Override
    public final void start() {
        if (mConditionSet == null || mConditionSet.isEmpty()) {
            onStart();
            return;
        }

        mStartToken = mMonitor.addSubscription(
                new Monitor.Subscription.Builder(allConditionsMet -> {
                    if (allConditionsMet) {
@@ -63,11 +58,6 @@ public abstract class ConditionalCoreStartable implements CoreStartable {

    @Override
    public final void onBootCompleted() {
        if (mConditionSet == null || mConditionSet.isEmpty()) {
            bootCompleted();
            return;
        }

        mBootCompletedToken = mMonitor.addSubscription(
                new Monitor.Subscription.Builder(allConditionsMet -> {
                    if (allConditionsMet) {
+15 −0
Original line number Diff line number Diff line
@@ -248,6 +248,21 @@ public class ConditionMonitorTest extends SysuiTestCase {
        verify(callback).onConditionsChanged(true);
    }

    @Test
    public void addCallback_preCondition_noConditions_reportAllConditionsMet() {
        final Monitor
                monitor = new Monitor(mExecutor, new HashSet<>(Arrays.asList(mCondition1)));
        final Monitor.Callback callback = mock(
                Monitor.Callback.class);

        monitor.addSubscription(new Monitor.Subscription.Builder(callback).build());
        mExecutor.runAllReady();
        verify(callback, never()).onConditionsChanged(true);
        mCondition1.fakeUpdateCondition(true);
        mExecutor.runAllReady();
        verify(callback).onConditionsChanged(true);
    }

    @Test
    public void removeCallback_noFailureOnDoubleRemove() {
        final Condition condition = mock(
+30 −0
Original line number Diff line number Diff line
@@ -60,6 +60,11 @@ public class ConditionalCoreStartableTest extends SysuiTestCase {
            mCallback = callback;
        }

        public FakeConditionalCoreStartable(Monitor monitor, Callback callback) {
            super(monitor);
            mCallback = callback;
        }

        @Override
        protected void onStart() {
            mCallback.onStart();
@@ -122,6 +127,31 @@ public class ConditionalCoreStartableTest extends SysuiTestCase {
        verify(mMonitor).removeSubscription(mSubscriptionToken);
    }

    @Test
    public void testOnStartCallbackWithNoConditions() {
        final CoreStartable coreStartable =
                new FakeConditionalCoreStartable(mMonitor,
                        mCallback);

        when(mMonitor.addSubscription(any())).thenReturn(mSubscriptionToken);
        coreStartable.start();

        final ArgumentCaptor<Monitor.Subscription> subscriptionCaptor = ArgumentCaptor.forClass(
                Monitor.Subscription.class);
        verify(mMonitor).addSubscription(subscriptionCaptor.capture());

        final Monitor.Subscription subscription = subscriptionCaptor.getValue();

        assertThat(subscription.getConditions()).isEmpty();

        verify(mCallback, never()).onStart();

        subscription.getCallback().onConditionsChanged(true);

        verify(mCallback).onStart();
        verify(mMonitor).removeSubscription(mSubscriptionToken);
    }


    /**
     * Verifies that {@link ConditionalCoreStartable#bootCompleted()} ()} is predicated on