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

Commit 42987562 authored by Bryce Lee's avatar Bryce Lee
Browse files

Remove CommunalConditionsMonitor.

CommunalConditionsMonitor was simply a wrapper
after the generalized Monitor introduction. This
changelist makes it instead a binding around Monitor
with the newly introduced MonitorComponent.

Test: atest CommunalSourceMonitorTest
Test: atest CommunalManagerUpdaterTest
Bug: 210181109
Change-Id: I00ddd9a91219ffd4128e3e8e110e8e7b6eabe326
Docking detection

Change-Id: I8c0d30802d06457f90c9a6fbecb715e6380fc4e8
parent c74e2e0e
Loading
Loading
Loading
Loading
+7 −4
Original line number Diff line number Diff line
@@ -16,12 +16,14 @@

package com.android.systemui.communal;

import static com.android.systemui.communal.dagger.CommunalModule.COMMUNAL_CONDITIONS;

import android.util.Log;

import com.android.internal.annotations.VisibleForTesting;
import com.android.systemui.communal.conditions.CommunalConditionsMonitor;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.util.condition.Monitor;

import com.google.android.collect.Lists;

@@ -31,6 +33,7 @@ import java.util.Iterator;
import java.util.concurrent.Executor;

import javax.inject.Inject;
import javax.inject.Named;

/**
 * A Monitor for reporting a {@link CommunalSource} presence.
@@ -42,7 +45,7 @@ public class CommunalSourceMonitor {

    // A list of {@link Callback} that have registered to receive updates.
    private final ArrayList<WeakReference<Callback>> mCallbacks = Lists.newArrayList();
    private final CommunalConditionsMonitor mConditionsMonitor;
    private final Monitor mConditionsMonitor;
    private final Executor mExecutor;

    private CommunalSource mCurrentSource;
@@ -53,7 +56,7 @@ public class CommunalSourceMonitor {
    // Whether the class is currently listening for condition changes.
    private boolean mListeningForConditions = false;

    private final CommunalConditionsMonitor.Callback mConditionsCallback =
    private final Monitor.Callback mConditionsCallback =
            allConditionsMet -> {
                if (mAllCommunalConditionsMet != allConditionsMet) {
                    if (DEBUG) Log.d(TAG, "communal conditions changed: " + allConditionsMet);
@@ -66,7 +69,7 @@ public class CommunalSourceMonitor {
    @VisibleForTesting
    @Inject
    public CommunalSourceMonitor(@Main Executor executor,
            CommunalConditionsMonitor communalConditionsMonitor) {
            @Named(COMMUNAL_CONDITIONS) Monitor communalConditionsMonitor) {
        mExecutor = executor;
        mConditionsMonitor = communalConditionsMonitor;
    }
+12 −0
Original line number Diff line number Diff line
@@ -34,6 +34,8 @@ import com.android.systemui.idle.AmbientLightModeMonitor;
import com.android.systemui.idle.LightSensorEventsDebounceAlgorithm;
import com.android.systemui.idle.dagger.IdleViewComponent;
import com.android.systemui.util.condition.Condition;
import com.android.systemui.util.condition.Monitor;
import com.android.systemui.util.condition.dagger.MonitorComponent;

import java.util.Collections;
import java.util.HashSet;
@@ -135,4 +137,14 @@ public interface CommunalModule {
            return Optional.empty();
        }
    }

    /** */
    @Provides
    @Named(COMMUNAL_CONDITIONS)
    static Monitor provideCommunalSourceMonitor(
            @Named(COMMUNAL_CONDITIONS) Set<Condition> communalConditions,
            MonitorComponent.Factory factory) {
        final MonitorComponent component = factory.create(communalConditions, new HashSet<>());
        return component.getMonitor();
    }
}
+15 −8
Original line number Diff line number Diff line
@@ -23,7 +23,6 @@ import com.android.systemui.statusbar.policy.CallbackController;

import org.jetbrains.annotations.NotNull;

import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
@@ -38,7 +37,7 @@ import javax.inject.Inject;
public class Monitor implements CallbackController<Monitor.Callback> {
    private final String mTag = getClass().getSimpleName();

    private final ArrayList<WeakReference<Callback>> mCallbacks = new ArrayList<>();
    private final ArrayList<Callback> mCallbacks = new ArrayList<>();

    // Set of all conditions that need to be monitored.
    private final Set<Condition> mConditions;
@@ -66,9 +65,9 @@ public class Monitor implements CallbackController<Monitor.Callback> {
        mAllConditionsMet = newAllConditionsMet;

        // Updates all callbacks.
        final Iterator<WeakReference<Callback>> iterator = mCallbacks.iterator();
        final Iterator<Callback> iterator = mCallbacks.iterator();
        while (iterator.hasNext()) {
            final Callback callback = iterator.next().get();
            final Callback callback = iterator.next();
            if (callback == null) {
                iterator.remove();
            } else {
@@ -78,7 +77,7 @@ public class Monitor implements CallbackController<Monitor.Callback> {
    };

    @Inject
    public Monitor(Set<Condition> conditions) {
    public Monitor(Set<Condition> conditions, Set<Callback> callbacks) {
        mConditions = conditions;

        // If there is no condition, give green pass.
@@ -89,12 +88,20 @@ public class Monitor implements CallbackController<Monitor.Callback> {

        // Initializes the conditions map and registers a callback for each condition.
        mConditions.forEach((condition -> mConditionsMap.put(condition, false)));

        if (callbacks == null) {
            return;
        }

        for (Callback callback : callbacks) {
            addCallback(callback);
        }
    }

    @Override
    public void addCallback(@NotNull Callback callback) {
        if (shouldLog()) Log.d(mTag, "adding callback");
        mCallbacks.add(new WeakReference<>(callback));
        mCallbacks.add(callback);

        // Updates the callback immediately.
        callback.onConditionsChanged(mAllConditionsMet);
@@ -109,9 +116,9 @@ public class Monitor implements CallbackController<Monitor.Callback> {
    @Override
    public void removeCallback(@NotNull Callback callback) {
        if (shouldLog()) Log.d(mTag, "removing callback");
        final Iterator<WeakReference<Callback>> iterator = mCallbacks.iterator();
        final Iterator<Callback> iterator = mCallbacks.iterator();
        while (iterator.hasNext()) {
            final Callback cb = iterator.next().get();
            final Callback cb = iterator.next();
            if (cb == null || cb == callback) {
                iterator.remove();
            }
+19 −15
Original line number Diff line number Diff line
@@ -14,29 +14,33 @@
 * limitations under the License.
 */

package com.android.systemui.communal.conditions;
package com.android.systemui.util.condition.dagger;


import static com.android.systemui.communal.dagger.CommunalModule.COMMUNAL_CONDITIONS;

import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.util.condition.Condition;
import com.android.systemui.util.condition.Monitor;

import java.util.Set;

import javax.inject.Inject;
import javax.inject.Named;
import dagger.BindsInstance;
import dagger.Subcomponent;

/**
 * A concrete implementation of {@Monitor} with conditions for monitoring when communal mode should
 * be enabled.
 * Component for {@link Monitor}.
 */
@Subcomponent
public interface MonitorComponent {
    /**
     * Factory for {@link MonitorComponent}.
     */
@SysUISingleton
public class CommunalConditionsMonitor extends Monitor {
    @Inject
    public CommunalConditionsMonitor(
            @Named(COMMUNAL_CONDITIONS) Set<Condition> communalConditions) {
        super(communalConditions);
    @Subcomponent.Factory
    interface Factory {
        MonitorComponent create(@BindsInstance Set<Condition> conditions,
                @BindsInstance Set<Monitor.Callback> callbacks);
    }

    /**
     * Provides {@link Monitor}.
     * @return
     */
    Monitor getMonitor();
}
+4 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.systemui.util.dagger;

import com.android.systemui.util.RingerModeTracker;
import com.android.systemui.util.RingerModeTrackerImpl;
import com.android.systemui.util.condition.dagger.MonitorComponent;
import com.android.systemui.util.wrapper.UtilWrapperModule;

import dagger.Binds;
@@ -26,6 +27,9 @@ import dagger.Module;
/** Dagger Module for code in the util package. */
@Module(includes = {
                UtilWrapperModule.class
        },
        subcomponents = {
                MonitorComponent.class,
        })
public interface UtilModule {
    /** */
Loading