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 Original line Diff line number Diff line
@@ -32,8 +32,10 @@ import java.util.concurrent.Executor;
import javax.inject.Inject;
import javax.inject.Inject;


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


package com.android.systemui.complication;
package com.android.systemui.complication;


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

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


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


/**
/**
 * {@link ComplicationTypesUpdater} observes the state of available complication types set by the
 * {@link ComplicationTypesUpdater} observes the state of available complication types set by the
@@ -53,7 +51,7 @@ public class ComplicationTypesUpdater extends ConditionalCoreStartable {
            @Main Executor executor,
            @Main Executor executor,
            SecureSettings secureSettings,
            SecureSettings secureSettings,
            DreamOverlayStateController dreamOverlayStateController,
            DreamOverlayStateController dreamOverlayStateController,
            @Named(DREAM_PRETEXT_MONITOR) Monitor monitor) {
            @SystemUser Monitor monitor) {
        super(monitor);
        super(monitor);
        mDreamBackend = dreamBackend;
        mDreamBackend = dreamBackend;
        mExecutor = executor;
        mExecutor = executor;
+2 −2
Original line number Original line 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.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.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 android.view.View;


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


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


import static com.android.systemui.complication.dagger.RegisteredComplicationsModule.DREAM_SMARTSPACE_LAYOUT_PARAMS;
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.content.Context;
import android.os.Parcelable;
import android.os.Parcelable;
@@ -26,6 +25,7 @@ import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.FrameLayout;


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