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

Commit 339267d4 authored by Bryce Lee's avatar Bryce Lee Committed by Android (Google) Code Review
Browse files

Merge "Remove CommunalConditionsMonitor."

parents 0d4513d3 42987562
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