Merge "Conditions Monitor as singleton." into udc-dev
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
*/
|
||||
@@ -128,21 +117,6 @@ public interface DreamModule {
|
||||
return resources.getBoolean(com.android.internal.R.bool.config_dreamsSupported);
|
||||
}
|
||||
|
||||
/** */
|
||||
@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)
|
||||
|
||||
Reference in New Issue
Block a user