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

Commit bfbfff43 authored by Darrell Shi's avatar Darrell Shi
Browse files

Conditions Monitor as singleton.

This change refactors Monitor usage across SystemUI to be singleton to
prevent duplicate monitoring of the same conditions. This monitor by
default requires the process is running as the system user.

Test: add local logging to verify Monitor only constructed once
Bug: 276475674
Change-Id: I344da95f985f7380f2ca2e5d8266449f366f59ae
parent 1d8d37bb
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -32,8 +32,10 @@ import java.util.concurrent.Executor;
import javax.inject.Inject;

/**
 * {@link Monitor} takes in a set of conditions, monitors whether all of them have
 * been fulfilled, and informs any registered listeners.
 * {@link Monitor} allows {@link Subscription}s to a set of conditions and monitors whether all of
 * them have been fulfilled.
 * <p>
 * This class should be used as a singleton, to prevent duplicate monitoring of the same conditions.
 */
public class Monitor {
    private final String mTag = getClass().getSimpleName();
+2 −4
Original line number Diff line number Diff line
@@ -16,8 +16,6 @@

package com.android.systemui.complication;

import static com.android.systemui.dreams.dagger.DreamModule.DREAM_PRETEXT_MONITOR;

import android.database.ContentObserver;
import android.os.UserHandle;
import android.provider.Settings;
@@ -25,6 +23,7 @@ import android.provider.Settings;
import com.android.settingslib.dream.DreamBackend;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dagger.qualifiers.SystemUser;
import com.android.systemui.dreams.DreamOverlayStateController;
import com.android.systemui.shared.condition.Monitor;
import com.android.systemui.util.condition.ConditionalCoreStartable;
@@ -33,7 +32,6 @@ import com.android.systemui.util.settings.SecureSettings;
import java.util.concurrent.Executor;

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

/**
 * {@link ComplicationTypesUpdater} observes the state of available complication types set by the
@@ -53,7 +51,7 @@ public class ComplicationTypesUpdater extends ConditionalCoreStartable {
            @Main Executor executor,
            SecureSettings secureSettings,
            DreamOverlayStateController dreamOverlayStateController,
            @Named(DREAM_PRETEXT_MONITOR) Monitor monitor) {
            @SystemUser Monitor monitor) {
        super(monitor);
        mDreamBackend = dreamBackend;
        mExecutor = executor;
+2 −2
Original line number Diff line number Diff line
@@ -18,11 +18,11 @@ package com.android.systemui.complication;

import static com.android.systemui.complication.dagger.DreamClockTimeComplicationModule.DREAM_CLOCK_TIME_COMPLICATION_VIEW;
import static com.android.systemui.complication.dagger.RegisteredComplicationsModule.DREAM_CLOCK_TIME_COMPLICATION_LAYOUT_PARAMS;
import static com.android.systemui.dreams.dagger.DreamModule.DREAM_PRETEXT_MONITOR;

import android.view.View;

import com.android.systemui.CoreStartable;
import com.android.systemui.dagger.qualifiers.SystemUser;
import com.android.systemui.dreams.DreamOverlayStateController;
import com.android.systemui.shared.condition.Monitor;
import com.android.systemui.util.condition.ConditionalCoreStartable;
@@ -74,7 +74,7 @@ public class DreamClockTimeComplication implements Complication {
        public Registrant(
                DreamOverlayStateController dreamOverlayStateController,
                DreamClockTimeComplication dreamClockTimeComplication,
                @Named(DREAM_PRETEXT_MONITOR) Monitor monitor) {
                @SystemUser Monitor monitor) {
            super(monitor);
            mDreamOverlayStateController = dreamOverlayStateController;
            mComplication = dreamClockTimeComplication;
+2 −2
Original line number Diff line number Diff line
@@ -21,7 +21,6 @@ import static com.android.systemui.complication.dagger.RegisteredComplicationsMo
import static com.android.systemui.controls.dagger.ControlsComponent.Visibility.AVAILABLE;
import static com.android.systemui.controls.dagger.ControlsComponent.Visibility.AVAILABLE_AFTER_UNLOCK;
import static com.android.systemui.controls.dagger.ControlsComponent.Visibility.UNAVAILABLE;
import static com.android.systemui.dreams.dagger.DreamModule.DREAM_PRETEXT_MONITOR;

import android.content.Context;
import android.content.Intent;
@@ -40,6 +39,7 @@ import com.android.systemui.controls.dagger.ControlsComponent;
import com.android.systemui.controls.management.ControlsListingController;
import com.android.systemui.controls.ui.ControlsActivity;
import com.android.systemui.controls.ui.ControlsUiController;
import com.android.systemui.dagger.qualifiers.SystemUser;
import com.android.systemui.dreams.DreamOverlayStateController;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.shared.condition.Monitor;
@@ -108,7 +108,7 @@ public class DreamHomeControlsComplication implements Complication {
        public Registrant(DreamHomeControlsComplication complication,
                DreamOverlayStateController dreamOverlayStateController,
                ControlsComponent controlsComponent,
                @Named(DREAM_PRETEXT_MONITOR) Monitor monitor) {
                @SystemUser Monitor monitor) {
            super(monitor);
            mComplication = complication;
            mControlsComponent = controlsComponent;
+2 −2
Original line number Diff line number Diff line
@@ -17,7 +17,6 @@
package com.android.systemui.complication;

import static com.android.systemui.complication.dagger.RegisteredComplicationsModule.DREAM_SMARTSPACE_LAYOUT_PARAMS;
import static com.android.systemui.dreams.dagger.DreamModule.DREAM_PRETEXT_MONITOR;

import android.content.Context;
import android.os.Parcelable;
@@ -26,6 +25,7 @@ import android.view.ViewGroup;
import android.widget.FrameLayout;

import com.android.systemui.CoreStartable;
import com.android.systemui.dagger.qualifiers.SystemUser;
import com.android.systemui.dreams.DreamOverlayStateController;
import com.android.systemui.dreams.smartspace.DreamSmartspaceController;
import com.android.systemui.flags.FeatureFlags;
@@ -88,7 +88,7 @@ public class SmartSpaceComplication implements Complication {
                DreamOverlayStateController dreamOverlayStateController,
                SmartSpaceComplication smartSpaceComplication,
                DreamSmartspaceController smartSpaceController,
                @Named(DREAM_PRETEXT_MONITOR) Monitor monitor,
                @SystemUser Monitor monitor,
                FeatureFlags featureFlags) {
            super(monitor);
            mDreamOverlayStateController = dreamOverlayStateController;
Loading