diff options
11 files changed, 54 insertions, 48 deletions
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/condition/Monitor.java b/packages/SystemUI/shared/src/com/android/systemui/shared/condition/Monitor.java index 209d5e80e2d2..43df08df9f45 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/condition/Monitor.java +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/condition/Monitor.java @@ -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(); diff --git a/packages/SystemUI/src/com/android/systemui/complication/ComplicationTypesUpdater.java b/packages/SystemUI/src/com/android/systemui/complication/ComplicationTypesUpdater.java index 016891df4b3b..a334c1ed2338 100644 --- a/packages/SystemUI/src/com/android/systemui/complication/ComplicationTypesUpdater.java +++ b/packages/SystemUI/src/com/android/systemui/complication/ComplicationTypesUpdater.java @@ -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; diff --git a/packages/SystemUI/src/com/android/systemui/complication/DreamClockTimeComplication.java b/packages/SystemUI/src/com/android/systemui/complication/DreamClockTimeComplication.java index 5020480f8d60..9c3448b91b39 100644 --- a/packages/SystemUI/src/com/android/systemui/complication/DreamClockTimeComplication.java +++ b/packages/SystemUI/src/com/android/systemui/complication/DreamClockTimeComplication.java @@ -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; diff --git a/packages/SystemUI/src/com/android/systemui/complication/DreamHomeControlsComplication.java b/packages/SystemUI/src/com/android/systemui/complication/DreamHomeControlsComplication.java index 8f192de8c4a5..f973aeef0e6b 100644 --- a/packages/SystemUI/src/com/android/systemui/complication/DreamHomeControlsComplication.java +++ b/packages/SystemUI/src/com/android/systemui/complication/DreamHomeControlsComplication.java @@ -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; diff --git a/packages/SystemUI/src/com/android/systemui/complication/SmartSpaceComplication.java b/packages/SystemUI/src/com/android/systemui/complication/SmartSpaceComplication.java index 2f5ef6da6912..b98794ef8026 100644 --- a/packages/SystemUI/src/com/android/systemui/complication/SmartSpaceComplication.java +++ b/packages/SystemUI/src/com/android/systemui/complication/SmartSpaceComplication.java @@ -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; diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java index dff2c0e91f1f..8e6e0dd37a90 100644 --- a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java +++ b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java @@ -42,6 +42,7 @@ import com.android.systemui.clipboardoverlay.dagger.ClipboardOverlayModule; import com.android.systemui.complication.dagger.ComplicationComponent; import com.android.systemui.controls.dagger.ControlsModule; import com.android.systemui.dagger.qualifiers.Main; +import com.android.systemui.dagger.qualifiers.SystemUser; import com.android.systemui.demomode.dagger.DemoModeModule; import com.android.systemui.doze.dagger.DozeComponent; import com.android.systemui.dreams.dagger.DreamModule; @@ -60,6 +61,7 @@ import com.android.systemui.people.PeopleModule; import com.android.systemui.plugins.BcSmartspaceConfigPlugin; import com.android.systemui.plugins.BcSmartspaceDataPlugin; import com.android.systemui.privacy.PrivacyModule; +import com.android.systemui.process.condition.SystemProcessCondition; import com.android.systemui.qrcodescanner.dagger.QRCodeScannerModule; import com.android.systemui.qs.FgsManagerController; import com.android.systemui.qs.FgsManagerControllerImpl; @@ -74,6 +76,7 @@ import com.android.systemui.shade.ShadeController; import com.android.systemui.shade.ShadeModule; import com.android.systemui.shade.transition.LargeScreenShadeInterpolator; import com.android.systemui.shade.transition.LargeScreenShadeInterpolatorImpl; +import com.android.systemui.shared.condition.Monitor; import com.android.systemui.smartspace.dagger.SmartspaceModule; import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.NotificationLockscreenUserManager; @@ -126,6 +129,7 @@ import dagger.BindsOptionalOf; import dagger.Module; import dagger.Provides; +import java.util.Collections; import java.util.Optional; import java.util.concurrent.Executor; @@ -232,6 +236,17 @@ public abstract class SystemUIModule { return state; } + /** + * Provides the monitor for SystemUI that requires the process running as the system user. + */ + @SysUISingleton + @Provides + @SystemUser + static Monitor provideSystemUserMonitor(@Main Executor executor, + SystemProcessCondition systemProcessCondition) { + return new Monitor(executor, Collections.singleton(systemProcessCondition)); + } + @BindsOptionalOf abstract CommandQueue optionalCommandQueue(); diff --git a/packages/SystemUI/src/com/android/systemui/dagger/qualifiers/SystemUser.kt b/packages/SystemUI/src/com/android/systemui/dagger/qualifiers/SystemUser.kt new file mode 100644 index 000000000000..6878a52b672d --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/dagger/qualifiers/SystemUser.kt @@ -0,0 +1,20 @@ +/* + * Copyright (C) 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.systemui.dagger.qualifiers + +import javax.inject.Qualifier + +@Qualifier @MustBeDocumented @Retention(AnnotationRetention.RUNTIME) annotation class SystemUser diff --git a/packages/SystemUI/src/com/android/systemui/dreams/AssistantAttentionMonitor.java b/packages/SystemUI/src/com/android/systemui/dreams/AssistantAttentionMonitor.java index 49d7f7810740..822cfb89e706 100644 --- a/packages/SystemUI/src/com/android/systemui/dreams/AssistantAttentionMonitor.java +++ b/packages/SystemUI/src/com/android/systemui/dreams/AssistantAttentionMonitor.java @@ -19,6 +19,7 @@ package com.android.systemui.dreams; import android.util.Log; import com.android.systemui.CoreStartable; +import com.android.systemui.dagger.qualifiers.SystemUser; import com.android.systemui.dreams.callbacks.AssistantAttentionCallback; import com.android.systemui.dreams.conditions.AssistantAttentionCondition; import com.android.systemui.shared.condition.Monitor; @@ -38,7 +39,7 @@ public class AssistantAttentionMonitor implements CoreStartable { @Inject public AssistantAttentionMonitor( - Monitor monitor, + @SystemUser Monitor monitor, AssistantAttentionCondition assistantAttentionCondition, AssistantAttentionCallback callback) { mConditionMonitor = monitor; diff --git a/packages/SystemUI/src/com/android/systemui/dreams/DreamMonitor.java b/packages/SystemUI/src/com/android/systemui/dreams/DreamMonitor.java index 7f567aa334a6..e9ebd3b9c91d 100644 --- a/packages/SystemUI/src/com/android/systemui/dreams/DreamMonitor.java +++ b/packages/SystemUI/src/com/android/systemui/dreams/DreamMonitor.java @@ -16,11 +16,10 @@ package com.android.systemui.dreams; -import static com.android.systemui.dreams.dagger.DreamModule.DREAM_PRETEXT_MONITOR; - import android.util.Log; import com.android.systemui.CoreStartable; +import com.android.systemui.dagger.qualifiers.SystemUser; import com.android.systemui.dreams.callbacks.DreamStatusBarStateCallback; import com.android.systemui.dreams.conditions.DreamCondition; import com.android.systemui.flags.RestartDozeListener; @@ -28,7 +27,6 @@ import com.android.systemui.shared.condition.Monitor; import com.android.systemui.util.condition.ConditionalCoreStartable; import javax.inject.Inject; -import javax.inject.Named; /** * A {@link CoreStartable} to retain a monitor for tracking dreaming. @@ -42,13 +40,11 @@ public class DreamMonitor extends ConditionalCoreStartable { private final DreamStatusBarStateCallback mCallback; private RestartDozeListener mRestartDozeListener; - @Inject - public DreamMonitor(Monitor monitor, DreamCondition dreamCondition, - @Named(DREAM_PRETEXT_MONITOR) Monitor pretextMonitor, + public DreamMonitor(@SystemUser Monitor monitor, DreamCondition dreamCondition, DreamStatusBarStateCallback callback, RestartDozeListener restartDozeListener) { - super(pretextMonitor); + super(monitor); mConditionMonitor = monitor; mDreamCondition = dreamCondition; mCallback = callback; diff --git a/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayRegistrant.java b/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayRegistrant.java index a2dcdf52ad3c..80e68cfbff21 100644 --- a/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayRegistrant.java +++ b/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayRegistrant.java @@ -17,7 +17,6 @@ package com.android.systemui.dreams; import static com.android.systemui.dreams.dagger.DreamModule.DREAM_OVERLAY_SERVICE_COMPONENT; -import static com.android.systemui.dreams.dagger.DreamModule.DREAM_PRETEXT_MONITOR; import android.content.BroadcastReceiver; import android.content.ComponentName; @@ -35,6 +34,7 @@ import android.service.dreams.IDreamManager; import android.util.Log; import com.android.systemui.dagger.qualifiers.Main; +import com.android.systemui.dagger.qualifiers.SystemUser; import com.android.systemui.shared.condition.Monitor; import com.android.systemui.util.condition.ConditionalCoreStartable; @@ -105,7 +105,7 @@ public class DreamOverlayRegistrant extends ConditionalCoreStartable { @Inject public DreamOverlayRegistrant(Context context, @Main Resources resources, @Named(DREAM_OVERLAY_SERVICE_COMPONENT) ComponentName dreamOverlayServiceComponent, - @Named(DREAM_PRETEXT_MONITOR) Monitor monitor) { + @SystemUser Monitor monitor) { super(monitor); mContext = context; mResources = resources; diff --git a/packages/SystemUI/src/com/android/systemui/dreams/dagger/DreamModule.java b/packages/SystemUI/src/com/android/systemui/dreams/dagger/DreamModule.java index 1271645dac4e..c61b47758ab7 100644 --- a/packages/SystemUI/src/com/android/systemui/dreams/dagger/DreamModule.java +++ b/packages/SystemUI/src/com/android/systemui/dreams/dagger/DreamModule.java @@ -31,22 +31,14 @@ import com.android.systemui.dreams.DreamOverlayNotificationCountProvider; import com.android.systemui.dreams.DreamOverlayService; import com.android.systemui.dreams.complication.dagger.ComplicationComponent; import com.android.systemui.dreams.touch.scrim.dagger.ScrimModule; -import com.android.systemui.process.condition.SystemProcessCondition; -import com.android.systemui.shared.condition.Condition; -import com.android.systemui.shared.condition.Monitor; -import dagger.Binds; import dagger.Module; import dagger.Provides; -import dagger.multibindings.IntoSet; import java.util.Optional; -import java.util.Set; -import java.util.concurrent.Executor; import javax.inject.Named; - /** * Dagger Module providing Dream-related functionality. */ @@ -65,11 +57,8 @@ public interface DreamModule { String DREAM_OVERLAY_ENABLED = "dream_overlay_enabled"; String DREAM_SUPPORTED = "dream_supported"; - String DREAM_PRETEXT_CONDITIONS = "dream_pretext_conditions"; - String DREAM_PRETEXT_MONITOR = "dream_prtext_monitor"; String DREAM_OVERLAY_WINDOW_TITLE = "dream_overlay_window_title"; - /** * Provides the dream component */ @@ -129,21 +118,6 @@ public interface DreamModule { } /** */ - @Binds - @IntoSet - @Named(DREAM_PRETEXT_CONDITIONS) - Condition bindSystemProcessCondition(SystemProcessCondition condition); - - /** */ - @Provides - @Named(DREAM_PRETEXT_MONITOR) - static Monitor providesDockerPretextMonitor( - @Main Executor executor, - @Named(DREAM_PRETEXT_CONDITIONS) Set<Condition> pretextConditions) { - return new Monitor(executor, pretextConditions); - } - - /** */ @Provides @Named(DREAM_OVERLAY_WINDOW_TITLE) static String providesDreamOverlayWindowTitle(@Main Resources resources) { |