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

Commit cc89d0bc authored by Darrell Shi's avatar Darrell Shi Committed by Android (Google) Code Review
Browse files

Merge "Monitor add callback uniqueness."

parents 663ddef4 59594bee
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -145,6 +145,10 @@ public class Monitor implements CallbackController<Monitor.Callback> {
    }

    private void addCallbackLocked(@NotNull Callback callback) {
        if (mCallbacks.contains(callback)) {
            return;
        }

        if (shouldLog()) Log.d(mTag, "adding callback");
        mCallbacks.add(callback);

+15 −0
Original line number Diff line number Diff line
@@ -194,6 +194,21 @@ public class ConditionMonitorTest extends SysuiTestCase {
        verify(callback).onConditionsChanged(true);
    }

    @Test
    public void addCallback_withMultipleInstancesOfTheSameCallback_registerOnlyOne() {
        final Monitor monitor = new Monitor(mExecutor, new HashSet<>(), null /*callbacks*/);
        final Monitor.Callback callback = mock(Monitor.Callback.class);

        // Adds the same instance multiple times.
        monitor.addCallback(callback);
        monitor.addCallback(callback);
        monitor.addCallback(callback);
        mExecutor.runAllReady();

        // Callback should only be triggered once.
        verify(callback, times(1)).onConditionsChanged(true);
    }

    @Test
    public void removeCallback_shouldNoLongerReceiveUpdate() {
        final Condition condition = mock(Condition.class);