Loading packages/SystemUI/src/com/android/systemui/SystemUIInitializer.java +1 −4 Original line number Diff line number Diff line Loading @@ -22,10 +22,10 @@ import android.os.Handler; import android.os.HandlerThread; import android.util.Log; import com.android.systemui.res.R; import com.android.systemui.dagger.GlobalRootComponent; import com.android.systemui.dagger.SysUIComponent; import com.android.systemui.dagger.WMComponent; import com.android.systemui.res.R; import com.android.systemui.util.InitializationChecker; import com.android.wm.shell.dagger.WMShellConcurrencyModule; import com.android.wm.shell.keyguard.KeyguardTransitions; Loading Loading @@ -124,9 +124,6 @@ public abstract class SystemUIInitializer { .setDesktopMode(Optional.ofNullable(null)); } mSysUIComponent = builder.build(); if (initializeComponents) { mSysUIComponent.init(); } // Every other part of our codebase currently relies on Dependency, so we // really need to ensure the Dependency gets initialized early on. Loading packages/SystemUI/src/com/android/systemui/dagger/ReferenceSystemUIModule.java +8 −0 Original line number Diff line number Diff line Loading @@ -26,10 +26,13 @@ import com.android.keyguard.KeyguardViewController; import com.android.systemui.ScreenDecorationsModule; import com.android.systemui.accessibility.SystemActionsModule; import com.android.systemui.battery.BatterySaverModule; import com.android.systemui.display.ui.viewmodel.ConnectingDisplayViewModel; import com.android.systemui.dock.DockManager; import com.android.systemui.dock.DockManagerImpl; import com.android.systemui.doze.DozeHost; import com.android.systemui.media.dagger.MediaModule; import com.android.systemui.media.muteawait.MediaMuteAwaitConnectionCli; import com.android.systemui.media.nearby.NearbyMediaDevicesManager; import com.android.systemui.navigationbar.NavigationBarControllerModule; import com.android.systemui.navigationbar.gestural.GestureModule; import com.android.systemui.plugins.qs.QSFactory; Loading Loading @@ -63,6 +66,7 @@ import com.android.systemui.statusbar.policy.IndividualSensorPrivacyControllerIm import com.android.systemui.statusbar.policy.SensorPrivacyController; import com.android.systemui.statusbar.policy.SensorPrivacyControllerImpl; import com.android.systemui.toast.ToastModule; import com.android.systemui.unfold.SysUIUnfoldStartableModule; import com.android.systemui.unfold.UnfoldTransitionModule; import com.android.systemui.volume.dagger.VolumeModule; import com.android.systemui.wallpapers.dagger.WallpaperModule; Loading Loading @@ -92,12 +96,15 @@ import javax.inject.Named; AospPolicyModule.class, BatterySaverModule.class, CollapsedStatusBarFragmentStartableModule.class, ConnectingDisplayViewModel.StartableModule.class, GestureModule.class, HeadsUpModule.class, KeyboardShortcutsModule.class, MediaModule.class, MediaMuteAwaitConnectionCli.StartableModule.class, MultiUserUtilsModule.class, NavigationBarControllerModule.class, NearbyMediaDevicesManager.StartableModule.class, PowerModule.class, QSModule.class, RearDisplayModule.class, Loading @@ -108,6 +115,7 @@ import javax.inject.Named; ShadeModule.class, StartCentralSurfacesModule.class, SceneContainerFrameworkModule.class, SysUIUnfoldStartableModule.class, UnfoldTransitionModule.Startables.class, ToastModule.class, VolumeModule.class, Loading packages/SystemUI/src/com/android/systemui/dagger/SysUIComponent.java +0 −93 Original line number Diff line number Diff line Loading @@ -19,25 +19,15 @@ package com.android.systemui.dagger; import com.android.systemui.BootCompleteCacheImpl; import com.android.systemui.CoreStartable; import com.android.systemui.Dependency; import com.android.systemui.Flags; import com.android.systemui.InitController; import com.android.systemui.SystemUIAppComponentFactoryBase; import com.android.systemui.dagger.qualifiers.PerUser; import com.android.systemui.display.ui.viewmodel.ConnectingDisplayViewModel; import com.android.systemui.dump.DumpManager; import com.android.systemui.keyguard.KeyguardSliceProvider; import com.android.systemui.media.muteawait.MediaMuteAwaitConnectionCli; import com.android.systemui.media.nearby.NearbyMediaDevicesManager; import com.android.systemui.people.PeopleProvider; import com.android.systemui.statusbar.NotificationInsetsModule; import com.android.systemui.statusbar.QsFrameTranslateModule; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.unfold.FoldStateLogger; import com.android.systemui.unfold.FoldStateLoggingProvider; import com.android.systemui.unfold.SysUIUnfoldComponent; import com.android.systemui.unfold.UnfoldTransitionProgressProvider; import com.android.systemui.unfold.dagger.UnfoldBg; import com.android.systemui.unfold.progress.UnfoldTransitionProgressForwarder; import com.android.wm.shell.back.BackAnimation; import com.android.wm.shell.bubbles.Bubbles; import com.android.wm.shell.desktopmode.DesktopMode; Loading Loading @@ -125,42 +115,6 @@ public interface SysUIComponent { SysUIComponent build(); } /** * Initializes all the SysUI components. */ default void init() { // Initialize components that have no direct tie to the dagger dependency graph, // but are critical to this component's operation getSysUIUnfoldComponent() .ifPresent( c -> { c.getFullScreenLightRevealAnimations().forEach(it -> it.init()); c.getUnfoldTransitionWallpaperController().init(); c.getUnfoldHapticsPlayer(); c.getNaturalRotationUnfoldProgressProvider().init(); c.getUnfoldLatencyTracker().init(); }); // No init method needed, just needs to be gotten so that it's created. getMediaMuteAwaitConnectionCli(); getNearbyMediaDevicesManager(); getConnectingDisplayViewModel().init(); getFoldStateLoggingProvider().ifPresent(FoldStateLoggingProvider::init); getFoldStateLogger().ifPresent(FoldStateLogger::init); Optional<UnfoldTransitionProgressProvider> unfoldTransitionProgressProvider; if (Flags.unfoldAnimationBackgroundProgress()) { unfoldTransitionProgressProvider = getBgUnfoldTransitionProgressProvider(); } else { unfoldTransitionProgressProvider = getUnfoldTransitionProgressProvider(); } unfoldTransitionProgressProvider .ifPresent( (progressProvider) -> getUnfoldTransitionProgressForwarder() .ifPresent(progressProvider::addCallback)); } /** * Provides a BootCompleteCache. */ Loading @@ -179,37 +133,6 @@ public interface SysUIComponent { @SysUISingleton ContextComponentHelper getContextComponentHelper(); /** * Creates a UnfoldTransitionProgressProvider that calculates progress in the background. */ @SysUISingleton @UnfoldBg Optional<UnfoldTransitionProgressProvider> getBgUnfoldTransitionProgressProvider(); /** * Creates a UnfoldTransitionProgressProvider that calculates progress in the main thread. */ @SysUISingleton Optional<UnfoldTransitionProgressProvider> getUnfoldTransitionProgressProvider(); /** * Creates a UnfoldTransitionProgressForwarder. */ @SysUISingleton Optional<UnfoldTransitionProgressForwarder> getUnfoldTransitionProgressForwarder(); /** * Creates a FoldStateLoggingProvider. */ @SysUISingleton Optional<FoldStateLoggingProvider> getFoldStateLoggingProvider(); /** * Creates a FoldStateLogger. */ @SysUISingleton Optional<FoldStateLogger> getFoldStateLogger(); /** * Main dependency providing module. */ Loading @@ -226,22 +149,6 @@ public interface SysUIComponent { @SysUISingleton InitController getInitController(); /** * For devices with a hinge: access objects within this component */ Optional<SysUIUnfoldComponent> getSysUIUnfoldComponent(); /** */ MediaMuteAwaitConnectionCli getMediaMuteAwaitConnectionCli(); /** */ NearbyMediaDevicesManager getNearbyMediaDevicesManager(); /** * Creates a ConnectingDisplayViewModel */ ConnectingDisplayViewModel getConnectingDisplayViewModel(); /** * Returns {@link CoreStartable}s that should be started with the application. */ Loading packages/SystemUI/src/com/android/systemui/display/ui/viewmodel/ConnectingDisplayViewModel.kt +15 −2 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.systemui.display.ui.viewmodel import android.app.Dialog import android.content.Context import com.android.server.policy.feature.flags.Flags import com.android.systemui.CoreStartable import com.android.systemui.biometrics.Utils import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Application Loading @@ -26,6 +27,10 @@ import com.android.systemui.display.domain.interactor.ConnectedDisplayInteractor import com.android.systemui.display.domain.interactor.ConnectedDisplayInteractor.PendingDisplay import com.android.systemui.display.ui.view.MirroringConfirmationDialog import com.android.systemui.statusbar.policy.ConfigurationController import dagger.Binds import dagger.Module import dagger.multibindings.ClassKey import dagger.multibindings.IntoMap import javax.inject.Inject import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineScope Loading @@ -47,12 +52,12 @@ constructor( @Application private val scope: CoroutineScope, @Background private val bgDispatcher: CoroutineDispatcher, private val configurationController: ConfigurationController, ) { ) : CoreStartable { private var dialog: Dialog? = null /** Starts listening for pending displays. */ fun init() { override fun start() { val pendingDisplayFlow = connectedDisplayInteractor.pendingDisplay val concurrentDisplaysInProgessFlow = if (Flags.enableDualDisplayBlocking()) { Loading Loading @@ -96,4 +101,12 @@ constructor( dialog?.hide() dialog = null } @Module interface StartableModule { @Binds @IntoMap @ClassKey(ConnectingDisplayViewModel::class) fun bindsConnectingDisplayViewModel(impl: ConnectingDisplayViewModel): CoreStartable } } packages/SystemUI/src/com/android/systemui/media/muteawait/MediaMuteAwaitConnectionCli.kt +19 −7 Original line number Diff line number Diff line Loading @@ -16,13 +16,18 @@ package com.android.systemui.media.muteawait import android.content.Context import android.annotation.SuppressLint import android.media.AudioAttributes.USAGE_MEDIA import android.media.AudioDeviceAttributes import android.media.AudioManager import com.android.systemui.CoreStartable import com.android.systemui.dagger.SysUISingleton import com.android.systemui.statusbar.commandline.Command import com.android.systemui.statusbar.commandline.CommandRegistry import dagger.Binds import dagger.Module import dagger.multibindings.ClassKey import dagger.multibindings.IntoMap import java.io.PrintWriter import java.util.concurrent.TimeUnit import javax.inject.Inject Loading @@ -30,14 +35,15 @@ import javax.inject.Inject /** A command line interface to manually test [MediaMuteAwaitConnectionManager]. */ @SysUISingleton class MediaMuteAwaitConnectionCli @Inject constructor( commandRegistry: CommandRegistry, private val context: Context ) { init { private val commandRegistry: CommandRegistry, private val audioManager: AudioManager, ) : CoreStartable { override fun start() { commandRegistry.registerCommand(MEDIA_MUTE_AWAIT_COMMAND) { MuteAwaitCommand() } } inner class MuteAwaitCommand : Command { @SuppressLint("MissingPermission") override fun execute(pw: PrintWriter, args: List<String>) { val device = AudioDeviceAttributes( AudioDeviceAttributes.ROLE_OUTPUT, Loading @@ -49,8 +55,6 @@ class MediaMuteAwaitConnectionCli @Inject constructor( ) val startOrCancel = args[2] val audioManager: AudioManager = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager when (startOrCancel) { START -> audioManager.muteAwaitConnection( Loading @@ -65,6 +69,14 @@ class MediaMuteAwaitConnectionCli @Inject constructor( "[type] [name] [$START|$CANCEL]") } } @Module interface StartableModule { @Binds @IntoMap @ClassKey(MediaMuteAwaitConnectionCli::class) fun bindsMediaMuteAwaitConnectionCli(impl: MediaMuteAwaitConnectionCli): CoreStartable } } private const val MEDIA_MUTE_AWAIT_COMMAND = "media-mute-await" Loading Loading
packages/SystemUI/src/com/android/systemui/SystemUIInitializer.java +1 −4 Original line number Diff line number Diff line Loading @@ -22,10 +22,10 @@ import android.os.Handler; import android.os.HandlerThread; import android.util.Log; import com.android.systemui.res.R; import com.android.systemui.dagger.GlobalRootComponent; import com.android.systemui.dagger.SysUIComponent; import com.android.systemui.dagger.WMComponent; import com.android.systemui.res.R; import com.android.systemui.util.InitializationChecker; import com.android.wm.shell.dagger.WMShellConcurrencyModule; import com.android.wm.shell.keyguard.KeyguardTransitions; Loading Loading @@ -124,9 +124,6 @@ public abstract class SystemUIInitializer { .setDesktopMode(Optional.ofNullable(null)); } mSysUIComponent = builder.build(); if (initializeComponents) { mSysUIComponent.init(); } // Every other part of our codebase currently relies on Dependency, so we // really need to ensure the Dependency gets initialized early on. Loading
packages/SystemUI/src/com/android/systemui/dagger/ReferenceSystemUIModule.java +8 −0 Original line number Diff line number Diff line Loading @@ -26,10 +26,13 @@ import com.android.keyguard.KeyguardViewController; import com.android.systemui.ScreenDecorationsModule; import com.android.systemui.accessibility.SystemActionsModule; import com.android.systemui.battery.BatterySaverModule; import com.android.systemui.display.ui.viewmodel.ConnectingDisplayViewModel; import com.android.systemui.dock.DockManager; import com.android.systemui.dock.DockManagerImpl; import com.android.systemui.doze.DozeHost; import com.android.systemui.media.dagger.MediaModule; import com.android.systemui.media.muteawait.MediaMuteAwaitConnectionCli; import com.android.systemui.media.nearby.NearbyMediaDevicesManager; import com.android.systemui.navigationbar.NavigationBarControllerModule; import com.android.systemui.navigationbar.gestural.GestureModule; import com.android.systemui.plugins.qs.QSFactory; Loading Loading @@ -63,6 +66,7 @@ import com.android.systemui.statusbar.policy.IndividualSensorPrivacyControllerIm import com.android.systemui.statusbar.policy.SensorPrivacyController; import com.android.systemui.statusbar.policy.SensorPrivacyControllerImpl; import com.android.systemui.toast.ToastModule; import com.android.systemui.unfold.SysUIUnfoldStartableModule; import com.android.systemui.unfold.UnfoldTransitionModule; import com.android.systemui.volume.dagger.VolumeModule; import com.android.systemui.wallpapers.dagger.WallpaperModule; Loading Loading @@ -92,12 +96,15 @@ import javax.inject.Named; AospPolicyModule.class, BatterySaverModule.class, CollapsedStatusBarFragmentStartableModule.class, ConnectingDisplayViewModel.StartableModule.class, GestureModule.class, HeadsUpModule.class, KeyboardShortcutsModule.class, MediaModule.class, MediaMuteAwaitConnectionCli.StartableModule.class, MultiUserUtilsModule.class, NavigationBarControllerModule.class, NearbyMediaDevicesManager.StartableModule.class, PowerModule.class, QSModule.class, RearDisplayModule.class, Loading @@ -108,6 +115,7 @@ import javax.inject.Named; ShadeModule.class, StartCentralSurfacesModule.class, SceneContainerFrameworkModule.class, SysUIUnfoldStartableModule.class, UnfoldTransitionModule.Startables.class, ToastModule.class, VolumeModule.class, Loading
packages/SystemUI/src/com/android/systemui/dagger/SysUIComponent.java +0 −93 Original line number Diff line number Diff line Loading @@ -19,25 +19,15 @@ package com.android.systemui.dagger; import com.android.systemui.BootCompleteCacheImpl; import com.android.systemui.CoreStartable; import com.android.systemui.Dependency; import com.android.systemui.Flags; import com.android.systemui.InitController; import com.android.systemui.SystemUIAppComponentFactoryBase; import com.android.systemui.dagger.qualifiers.PerUser; import com.android.systemui.display.ui.viewmodel.ConnectingDisplayViewModel; import com.android.systemui.dump.DumpManager; import com.android.systemui.keyguard.KeyguardSliceProvider; import com.android.systemui.media.muteawait.MediaMuteAwaitConnectionCli; import com.android.systemui.media.nearby.NearbyMediaDevicesManager; import com.android.systemui.people.PeopleProvider; import com.android.systemui.statusbar.NotificationInsetsModule; import com.android.systemui.statusbar.QsFrameTranslateModule; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.unfold.FoldStateLogger; import com.android.systemui.unfold.FoldStateLoggingProvider; import com.android.systemui.unfold.SysUIUnfoldComponent; import com.android.systemui.unfold.UnfoldTransitionProgressProvider; import com.android.systemui.unfold.dagger.UnfoldBg; import com.android.systemui.unfold.progress.UnfoldTransitionProgressForwarder; import com.android.wm.shell.back.BackAnimation; import com.android.wm.shell.bubbles.Bubbles; import com.android.wm.shell.desktopmode.DesktopMode; Loading Loading @@ -125,42 +115,6 @@ public interface SysUIComponent { SysUIComponent build(); } /** * Initializes all the SysUI components. */ default void init() { // Initialize components that have no direct tie to the dagger dependency graph, // but are critical to this component's operation getSysUIUnfoldComponent() .ifPresent( c -> { c.getFullScreenLightRevealAnimations().forEach(it -> it.init()); c.getUnfoldTransitionWallpaperController().init(); c.getUnfoldHapticsPlayer(); c.getNaturalRotationUnfoldProgressProvider().init(); c.getUnfoldLatencyTracker().init(); }); // No init method needed, just needs to be gotten so that it's created. getMediaMuteAwaitConnectionCli(); getNearbyMediaDevicesManager(); getConnectingDisplayViewModel().init(); getFoldStateLoggingProvider().ifPresent(FoldStateLoggingProvider::init); getFoldStateLogger().ifPresent(FoldStateLogger::init); Optional<UnfoldTransitionProgressProvider> unfoldTransitionProgressProvider; if (Flags.unfoldAnimationBackgroundProgress()) { unfoldTransitionProgressProvider = getBgUnfoldTransitionProgressProvider(); } else { unfoldTransitionProgressProvider = getUnfoldTransitionProgressProvider(); } unfoldTransitionProgressProvider .ifPresent( (progressProvider) -> getUnfoldTransitionProgressForwarder() .ifPresent(progressProvider::addCallback)); } /** * Provides a BootCompleteCache. */ Loading @@ -179,37 +133,6 @@ public interface SysUIComponent { @SysUISingleton ContextComponentHelper getContextComponentHelper(); /** * Creates a UnfoldTransitionProgressProvider that calculates progress in the background. */ @SysUISingleton @UnfoldBg Optional<UnfoldTransitionProgressProvider> getBgUnfoldTransitionProgressProvider(); /** * Creates a UnfoldTransitionProgressProvider that calculates progress in the main thread. */ @SysUISingleton Optional<UnfoldTransitionProgressProvider> getUnfoldTransitionProgressProvider(); /** * Creates a UnfoldTransitionProgressForwarder. */ @SysUISingleton Optional<UnfoldTransitionProgressForwarder> getUnfoldTransitionProgressForwarder(); /** * Creates a FoldStateLoggingProvider. */ @SysUISingleton Optional<FoldStateLoggingProvider> getFoldStateLoggingProvider(); /** * Creates a FoldStateLogger. */ @SysUISingleton Optional<FoldStateLogger> getFoldStateLogger(); /** * Main dependency providing module. */ Loading @@ -226,22 +149,6 @@ public interface SysUIComponent { @SysUISingleton InitController getInitController(); /** * For devices with a hinge: access objects within this component */ Optional<SysUIUnfoldComponent> getSysUIUnfoldComponent(); /** */ MediaMuteAwaitConnectionCli getMediaMuteAwaitConnectionCli(); /** */ NearbyMediaDevicesManager getNearbyMediaDevicesManager(); /** * Creates a ConnectingDisplayViewModel */ ConnectingDisplayViewModel getConnectingDisplayViewModel(); /** * Returns {@link CoreStartable}s that should be started with the application. */ Loading
packages/SystemUI/src/com/android/systemui/display/ui/viewmodel/ConnectingDisplayViewModel.kt +15 −2 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.systemui.display.ui.viewmodel import android.app.Dialog import android.content.Context import com.android.server.policy.feature.flags.Flags import com.android.systemui.CoreStartable import com.android.systemui.biometrics.Utils import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Application Loading @@ -26,6 +27,10 @@ import com.android.systemui.display.domain.interactor.ConnectedDisplayInteractor import com.android.systemui.display.domain.interactor.ConnectedDisplayInteractor.PendingDisplay import com.android.systemui.display.ui.view.MirroringConfirmationDialog import com.android.systemui.statusbar.policy.ConfigurationController import dagger.Binds import dagger.Module import dagger.multibindings.ClassKey import dagger.multibindings.IntoMap import javax.inject.Inject import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineScope Loading @@ -47,12 +52,12 @@ constructor( @Application private val scope: CoroutineScope, @Background private val bgDispatcher: CoroutineDispatcher, private val configurationController: ConfigurationController, ) { ) : CoreStartable { private var dialog: Dialog? = null /** Starts listening for pending displays. */ fun init() { override fun start() { val pendingDisplayFlow = connectedDisplayInteractor.pendingDisplay val concurrentDisplaysInProgessFlow = if (Flags.enableDualDisplayBlocking()) { Loading Loading @@ -96,4 +101,12 @@ constructor( dialog?.hide() dialog = null } @Module interface StartableModule { @Binds @IntoMap @ClassKey(ConnectingDisplayViewModel::class) fun bindsConnectingDisplayViewModel(impl: ConnectingDisplayViewModel): CoreStartable } }
packages/SystemUI/src/com/android/systemui/media/muteawait/MediaMuteAwaitConnectionCli.kt +19 −7 Original line number Diff line number Diff line Loading @@ -16,13 +16,18 @@ package com.android.systemui.media.muteawait import android.content.Context import android.annotation.SuppressLint import android.media.AudioAttributes.USAGE_MEDIA import android.media.AudioDeviceAttributes import android.media.AudioManager import com.android.systemui.CoreStartable import com.android.systemui.dagger.SysUISingleton import com.android.systemui.statusbar.commandline.Command import com.android.systemui.statusbar.commandline.CommandRegistry import dagger.Binds import dagger.Module import dagger.multibindings.ClassKey import dagger.multibindings.IntoMap import java.io.PrintWriter import java.util.concurrent.TimeUnit import javax.inject.Inject Loading @@ -30,14 +35,15 @@ import javax.inject.Inject /** A command line interface to manually test [MediaMuteAwaitConnectionManager]. */ @SysUISingleton class MediaMuteAwaitConnectionCli @Inject constructor( commandRegistry: CommandRegistry, private val context: Context ) { init { private val commandRegistry: CommandRegistry, private val audioManager: AudioManager, ) : CoreStartable { override fun start() { commandRegistry.registerCommand(MEDIA_MUTE_AWAIT_COMMAND) { MuteAwaitCommand() } } inner class MuteAwaitCommand : Command { @SuppressLint("MissingPermission") override fun execute(pw: PrintWriter, args: List<String>) { val device = AudioDeviceAttributes( AudioDeviceAttributes.ROLE_OUTPUT, Loading @@ -49,8 +55,6 @@ class MediaMuteAwaitConnectionCli @Inject constructor( ) val startOrCancel = args[2] val audioManager: AudioManager = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager when (startOrCancel) { START -> audioManager.muteAwaitConnection( Loading @@ -65,6 +69,14 @@ class MediaMuteAwaitConnectionCli @Inject constructor( "[type] [name] [$START|$CANCEL]") } } @Module interface StartableModule { @Binds @IntoMap @ClassKey(MediaMuteAwaitConnectionCli::class) fun bindsMediaMuteAwaitConnectionCli(impl: MediaMuteAwaitConnectionCli): CoreStartable } } private const val MEDIA_MUTE_AWAIT_COMMAND = "media-mute-await" Loading