1 /* 2 * Copyright (C) 2020 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.systemui.statusbar.phone.dagger; 18 19 import static com.android.systemui.Dependency.TIME_TICK_HANDLER_NAME; 20 21 import android.app.WallpaperManager; 22 import android.content.Context; 23 import android.os.Handler; 24 import android.os.PowerManager; 25 import android.util.DisplayMetrics; 26 27 import com.android.internal.logging.MetricsLogger; 28 import com.android.keyguard.KeyguardUpdateMonitor; 29 import com.android.keyguard.ViewMediatorCallback; 30 import com.android.systemui.InitController; 31 import com.android.systemui.accessibility.floatingmenu.AccessibilityFloatingMenuController; 32 import com.android.systemui.animation.ActivityLaunchAnimator; 33 import com.android.systemui.assist.AssistManager; 34 import com.android.systemui.broadcast.BroadcastDispatcher; 35 import com.android.systemui.classifier.FalsingCollector; 36 import com.android.systemui.colorextraction.SysuiColorExtractor; 37 import com.android.systemui.dagger.SysUISingleton; 38 import com.android.systemui.dagger.qualifiers.Main; 39 import com.android.systemui.dagger.qualifiers.UiBackground; 40 import com.android.systemui.demomode.DemoModeController; 41 import com.android.systemui.dump.DumpManager; 42 import com.android.systemui.flags.FeatureFlags; 43 import com.android.systemui.fragments.FragmentService; 44 import com.android.systemui.keyguard.KeyguardUnlockAnimationController; 45 import com.android.systemui.keyguard.KeyguardViewMediator; 46 import com.android.systemui.keyguard.ScreenLifecycle; 47 import com.android.systemui.keyguard.WakefulnessLifecycle; 48 import com.android.systemui.navigationbar.NavigationBarController; 49 import com.android.systemui.plugins.FalsingManager; 50 import com.android.systemui.plugins.PluginDependencyProvider; 51 import com.android.systemui.recents.ScreenPinningRequest; 52 import com.android.systemui.settings.brightness.BrightnessSliderController; 53 import com.android.systemui.shared.plugins.PluginManager; 54 import com.android.systemui.statusbar.CommandQueue; 55 import com.android.systemui.statusbar.KeyguardIndicationController; 56 import com.android.systemui.statusbar.LockscreenShadeTransitionController; 57 import com.android.systemui.statusbar.NotificationLockscreenUserManager; 58 import com.android.systemui.statusbar.NotificationMediaManager; 59 import com.android.systemui.statusbar.NotificationRemoteInputManager; 60 import com.android.systemui.statusbar.NotificationShadeDepthController; 61 import com.android.systemui.statusbar.NotificationShadeWindowController; 62 import com.android.systemui.statusbar.NotificationViewHierarchyManager; 63 import com.android.systemui.statusbar.OperatorNameViewController; 64 import com.android.systemui.statusbar.PulseExpansionHandler; 65 import com.android.systemui.statusbar.SysuiStatusBarStateController; 66 import com.android.systemui.statusbar.connectivity.NetworkController; 67 import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler; 68 import com.android.systemui.statusbar.notification.DynamicPrivacyController; 69 import com.android.systemui.statusbar.notification.NotificationEntryManager; 70 import com.android.systemui.statusbar.notification.NotificationWakeUpCoordinator; 71 import com.android.systemui.statusbar.notification.collection.legacy.VisualStabilityManager; 72 import com.android.systemui.statusbar.notification.collection.render.NotifShadeEventSource; 73 import com.android.systemui.statusbar.notification.init.NotificationsController; 74 import com.android.systemui.statusbar.notification.interruption.BypassHeadsUpNotifier; 75 import com.android.systemui.statusbar.notification.interruption.NotificationInterruptStateProvider; 76 import com.android.systemui.statusbar.notification.logging.NotificationLogger; 77 import com.android.systemui.statusbar.notification.row.NotificationGutsManager; 78 import com.android.systemui.statusbar.phone.AutoHideController; 79 import com.android.systemui.statusbar.phone.BiometricUnlockController; 80 import com.android.systemui.statusbar.phone.DozeParameters; 81 import com.android.systemui.statusbar.phone.DozeScrimController; 82 import com.android.systemui.statusbar.phone.DozeServiceHost; 83 import com.android.systemui.statusbar.phone.HeadsUpManagerPhone; 84 import com.android.systemui.statusbar.phone.KeyguardBypassController; 85 import com.android.systemui.statusbar.phone.KeyguardDismissUtil; 86 import com.android.systemui.statusbar.phone.LightBarController; 87 import com.android.systemui.statusbar.phone.LightsOutNotifController; 88 import com.android.systemui.statusbar.phone.LockscreenGestureLogger; 89 import com.android.systemui.statusbar.phone.LockscreenWallpaper; 90 import com.android.systemui.statusbar.phone.NotificationIconAreaController; 91 import com.android.systemui.statusbar.phone.PhoneStatusBarPolicy; 92 import com.android.systemui.statusbar.phone.ScrimController; 93 import com.android.systemui.statusbar.phone.ShadeController; 94 import com.android.systemui.statusbar.phone.StatusBar; 95 import com.android.systemui.statusbar.phone.StatusBarHideIconsForBouncerManager; 96 import com.android.systemui.statusbar.phone.StatusBarIconController; 97 import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; 98 import com.android.systemui.statusbar.phone.StatusBarLocationPublisher; 99 import com.android.systemui.statusbar.phone.StatusBarNotificationActivityStarter; 100 import com.android.systemui.statusbar.phone.StatusBarSignalPolicy; 101 import com.android.systemui.statusbar.phone.StatusBarTouchableRegionManager; 102 import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController; 103 import com.android.systemui.statusbar.phone.fragment.CollapsedStatusBarFragmentLogger; 104 import com.android.systemui.statusbar.phone.ongoingcall.OngoingCallController; 105 import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager; 106 import com.android.systemui.statusbar.policy.BatteryController; 107 import com.android.systemui.statusbar.policy.ConfigurationController; 108 import com.android.systemui.statusbar.policy.DeviceProvisionedController; 109 import com.android.systemui.statusbar.policy.ExtensionController; 110 import com.android.systemui.statusbar.policy.KeyguardStateController; 111 import com.android.systemui.statusbar.policy.UserInfoControllerImpl; 112 import com.android.systemui.statusbar.policy.UserSwitcherController; 113 import com.android.systemui.statusbar.window.StatusBarWindowController; 114 import com.android.systemui.tuner.TunerService; 115 import com.android.systemui.util.WallpaperController; 116 import com.android.systemui.util.concurrency.DelayableExecutor; 117 import com.android.systemui.util.concurrency.MessageRouter; 118 import com.android.systemui.volume.VolumeComponent; 119 import com.android.systemui.wmshell.BubblesManager; 120 import com.android.wm.shell.bubbles.Bubbles; 121 import com.android.wm.shell.legacysplitscreen.LegacySplitScreen; 122 import com.android.wm.shell.startingsurface.StartingSurface; 123 124 import java.util.Optional; 125 import java.util.concurrent.Executor; 126 127 import javax.inject.Named; 128 129 import dagger.Lazy; 130 import dagger.Module; 131 import dagger.Provides; 132 133 /** 134 * Dagger Module providing {@link StatusBar}. 135 */ 136 @Module(includes = {StatusBarPhoneDependenciesModule.class}) 137 public interface StatusBarPhoneModule { 138 /** 139 * Provides our instance of StatusBar which is considered optional. 140 */ 141 @Provides 142 @SysUISingleton provideStatusBar( Context context, NotificationsController notificationsController, FragmentService fragmentService, LightBarController lightBarController, AutoHideController autoHideController, StatusBarWindowController statusBarWindowController, KeyguardUpdateMonitor keyguardUpdateMonitor, StatusBarSignalPolicy statusBarSignalPolicy, PulseExpansionHandler pulseExpansionHandler, NotificationWakeUpCoordinator notificationWakeUpCoordinator, KeyguardBypassController keyguardBypassController, KeyguardStateController keyguardStateController, HeadsUpManagerPhone headsUpManagerPhone, DynamicPrivacyController dynamicPrivacyController, BypassHeadsUpNotifier bypassHeadsUpNotifier, FalsingManager falsingManager, FalsingCollector falsingCollector, BroadcastDispatcher broadcastDispatcher, NotifShadeEventSource notifShadeEventSource, NotificationEntryManager notificationEntryManager, NotificationGutsManager notificationGutsManager, NotificationLogger notificationLogger, NotificationInterruptStateProvider notificationInterruptStateProvider, NotificationViewHierarchyManager notificationViewHierarchyManager, PanelExpansionStateManager panelExpansionStateManager, KeyguardViewMediator keyguardViewMediator, DisplayMetrics displayMetrics, MetricsLogger metricsLogger, @UiBackground Executor uiBgExecutor, NotificationMediaManager notificationMediaManager, NotificationLockscreenUserManager lockScreenUserManager, NotificationRemoteInputManager remoteInputManager, UserSwitcherController userSwitcherController, NetworkController networkController, BatteryController batteryController, SysuiColorExtractor colorExtractor, ScreenLifecycle screenLifecycle, WakefulnessLifecycle wakefulnessLifecycle, SysuiStatusBarStateController statusBarStateController, Optional<BubblesManager> bubblesManagerOptional, Optional<Bubbles> bubblesOptional, VisualStabilityManager visualStabilityManager, DeviceProvisionedController deviceProvisionedController, NavigationBarController navigationBarController, AccessibilityFloatingMenuController accessibilityFloatingMenuController, Lazy<AssistManager> assistManagerLazy, ConfigurationController configurationController, NotificationShadeWindowController notificationShadeWindowController, DozeParameters dozeParameters, ScrimController scrimController, Lazy<LockscreenWallpaper> lockscreenWallpaperLazy, LockscreenGestureLogger lockscreenGestureLogger, Lazy<BiometricUnlockController> biometricUnlockControllerLazy, DozeServiceHost dozeServiceHost, PowerManager powerManager, ScreenPinningRequest screenPinningRequest, DozeScrimController dozeScrimController, VolumeComponent volumeComponent, CommandQueue commandQueue, CollapsedStatusBarFragmentLogger collapsedStatusBarFragmentLogger, StatusBarComponent.Factory statusBarComponentFactory, PluginManager pluginManager, Optional<LegacySplitScreen> splitScreenOptional, LightsOutNotifController lightsOutNotifController, StatusBarNotificationActivityStarter.Builder statusBarNotificationActivityStarterBuilder, ShadeController shadeController, StatusBarKeyguardViewManager statusBarKeyguardViewManager, ViewMediatorCallback viewMediatorCallback, InitController initController, @Named(TIME_TICK_HANDLER_NAME) Handler timeTickHandler, PluginDependencyProvider pluginDependencyProvider, KeyguardDismissUtil keyguardDismissUtil, ExtensionController extensionController, UserInfoControllerImpl userInfoControllerImpl, OperatorNameViewController.Factory operatorNameViewControllerFactory, PhoneStatusBarPolicy phoneStatusBarPolicy, KeyguardIndicationController keyguardIndicationController, DemoModeController demoModeController, Lazy<NotificationShadeDepthController> notificationShadeDepthController, StatusBarTouchableRegionManager statusBarTouchableRegionManager, NotificationIconAreaController notificationIconAreaController, BrightnessSliderController.Factory brightnessSliderFactory, WallpaperController wallpaperController, OngoingCallController ongoingCallController, SystemStatusAnimationScheduler animationScheduler, StatusBarLocationPublisher locationPublisher, StatusBarIconController statusBarIconController, StatusBarHideIconsForBouncerManager statusBarHideIconsForBouncerManager, LockscreenShadeTransitionController transitionController, FeatureFlags featureFlags, KeyguardUnlockAnimationController keyguardUnlockAnimationController, @Main Handler mainHandler, @Main DelayableExecutor delayableExecutor, @Main MessageRouter messageRouter, WallpaperManager wallpaperManager, UnlockedScreenOffAnimationController unlockedScreenOffAnimationController, Optional<StartingSurface> startingSurfaceOptional, TunerService tunerService, DumpManager dumpManager, ActivityLaunchAnimator activityLaunchAnimator)143 static StatusBar provideStatusBar( 144 Context context, 145 NotificationsController notificationsController, 146 FragmentService fragmentService, 147 LightBarController lightBarController, 148 AutoHideController autoHideController, 149 StatusBarWindowController statusBarWindowController, 150 KeyguardUpdateMonitor keyguardUpdateMonitor, 151 StatusBarSignalPolicy statusBarSignalPolicy, 152 PulseExpansionHandler pulseExpansionHandler, 153 NotificationWakeUpCoordinator notificationWakeUpCoordinator, 154 KeyguardBypassController keyguardBypassController, 155 KeyguardStateController keyguardStateController, 156 HeadsUpManagerPhone headsUpManagerPhone, 157 DynamicPrivacyController dynamicPrivacyController, 158 BypassHeadsUpNotifier bypassHeadsUpNotifier, 159 FalsingManager falsingManager, 160 FalsingCollector falsingCollector, 161 BroadcastDispatcher broadcastDispatcher, 162 NotifShadeEventSource notifShadeEventSource, 163 NotificationEntryManager notificationEntryManager, 164 NotificationGutsManager notificationGutsManager, 165 NotificationLogger notificationLogger, 166 NotificationInterruptStateProvider notificationInterruptStateProvider, 167 NotificationViewHierarchyManager notificationViewHierarchyManager, 168 PanelExpansionStateManager panelExpansionStateManager, 169 KeyguardViewMediator keyguardViewMediator, 170 DisplayMetrics displayMetrics, 171 MetricsLogger metricsLogger, 172 @UiBackground Executor uiBgExecutor, 173 NotificationMediaManager notificationMediaManager, 174 NotificationLockscreenUserManager lockScreenUserManager, 175 NotificationRemoteInputManager remoteInputManager, 176 UserSwitcherController userSwitcherController, 177 NetworkController networkController, 178 BatteryController batteryController, 179 SysuiColorExtractor colorExtractor, 180 ScreenLifecycle screenLifecycle, 181 WakefulnessLifecycle wakefulnessLifecycle, 182 SysuiStatusBarStateController statusBarStateController, 183 Optional<BubblesManager> bubblesManagerOptional, 184 Optional<Bubbles> bubblesOptional, 185 VisualStabilityManager visualStabilityManager, 186 DeviceProvisionedController deviceProvisionedController, 187 NavigationBarController navigationBarController, 188 AccessibilityFloatingMenuController accessibilityFloatingMenuController, 189 Lazy<AssistManager> assistManagerLazy, 190 ConfigurationController configurationController, 191 NotificationShadeWindowController notificationShadeWindowController, 192 DozeParameters dozeParameters, 193 ScrimController scrimController, 194 Lazy<LockscreenWallpaper> lockscreenWallpaperLazy, 195 LockscreenGestureLogger lockscreenGestureLogger, 196 Lazy<BiometricUnlockController> biometricUnlockControllerLazy, 197 DozeServiceHost dozeServiceHost, 198 PowerManager powerManager, 199 ScreenPinningRequest screenPinningRequest, 200 DozeScrimController dozeScrimController, 201 VolumeComponent volumeComponent, 202 CommandQueue commandQueue, 203 CollapsedStatusBarFragmentLogger collapsedStatusBarFragmentLogger, 204 StatusBarComponent.Factory statusBarComponentFactory, 205 PluginManager pluginManager, 206 Optional<LegacySplitScreen> splitScreenOptional, 207 LightsOutNotifController lightsOutNotifController, 208 StatusBarNotificationActivityStarter.Builder 209 statusBarNotificationActivityStarterBuilder, 210 ShadeController shadeController, 211 StatusBarKeyguardViewManager statusBarKeyguardViewManager, 212 ViewMediatorCallback viewMediatorCallback, 213 InitController initController, 214 @Named(TIME_TICK_HANDLER_NAME) Handler timeTickHandler, 215 PluginDependencyProvider pluginDependencyProvider, 216 KeyguardDismissUtil keyguardDismissUtil, 217 ExtensionController extensionController, 218 UserInfoControllerImpl userInfoControllerImpl, 219 OperatorNameViewController.Factory operatorNameViewControllerFactory, 220 PhoneStatusBarPolicy phoneStatusBarPolicy, 221 KeyguardIndicationController keyguardIndicationController, 222 DemoModeController demoModeController, 223 Lazy<NotificationShadeDepthController> notificationShadeDepthController, 224 StatusBarTouchableRegionManager statusBarTouchableRegionManager, 225 NotificationIconAreaController notificationIconAreaController, 226 BrightnessSliderController.Factory brightnessSliderFactory, 227 WallpaperController wallpaperController, 228 OngoingCallController ongoingCallController, 229 SystemStatusAnimationScheduler animationScheduler, 230 StatusBarLocationPublisher locationPublisher, 231 StatusBarIconController statusBarIconController, 232 StatusBarHideIconsForBouncerManager statusBarHideIconsForBouncerManager, 233 LockscreenShadeTransitionController transitionController, 234 FeatureFlags featureFlags, 235 KeyguardUnlockAnimationController keyguardUnlockAnimationController, 236 @Main Handler mainHandler, 237 @Main DelayableExecutor delayableExecutor, 238 @Main MessageRouter messageRouter, 239 WallpaperManager wallpaperManager, 240 UnlockedScreenOffAnimationController unlockedScreenOffAnimationController, 241 Optional<StartingSurface> startingSurfaceOptional, 242 TunerService tunerService, 243 DumpManager dumpManager, 244 ActivityLaunchAnimator activityLaunchAnimator) { 245 return new StatusBar( 246 context, 247 notificationsController, 248 fragmentService, 249 lightBarController, 250 autoHideController, 251 statusBarWindowController, 252 keyguardUpdateMonitor, 253 statusBarSignalPolicy, 254 pulseExpansionHandler, 255 notificationWakeUpCoordinator, 256 keyguardBypassController, 257 keyguardStateController, 258 headsUpManagerPhone, 259 dynamicPrivacyController, 260 bypassHeadsUpNotifier, 261 falsingManager, 262 falsingCollector, 263 broadcastDispatcher, 264 notifShadeEventSource, 265 notificationEntryManager, 266 notificationGutsManager, 267 notificationLogger, 268 notificationInterruptStateProvider, 269 notificationViewHierarchyManager, 270 panelExpansionStateManager, 271 keyguardViewMediator, 272 displayMetrics, 273 metricsLogger, 274 uiBgExecutor, 275 notificationMediaManager, 276 lockScreenUserManager, 277 remoteInputManager, 278 userSwitcherController, 279 networkController, 280 batteryController, 281 colorExtractor, 282 screenLifecycle, 283 wakefulnessLifecycle, 284 statusBarStateController, 285 bubblesManagerOptional, 286 bubblesOptional, 287 visualStabilityManager, 288 deviceProvisionedController, 289 navigationBarController, 290 accessibilityFloatingMenuController, 291 assistManagerLazy, 292 configurationController, 293 notificationShadeWindowController, 294 dozeParameters, 295 scrimController, 296 lockscreenWallpaperLazy, 297 lockscreenGestureLogger, 298 biometricUnlockControllerLazy, 299 dozeServiceHost, 300 powerManager, 301 screenPinningRequest, 302 dozeScrimController, 303 volumeComponent, 304 commandQueue, 305 collapsedStatusBarFragmentLogger, 306 statusBarComponentFactory, 307 pluginManager, 308 splitScreenOptional, 309 lightsOutNotifController, 310 statusBarNotificationActivityStarterBuilder, 311 shadeController, 312 statusBarKeyguardViewManager, 313 viewMediatorCallback, 314 initController, 315 timeTickHandler, 316 pluginDependencyProvider, 317 keyguardDismissUtil, 318 extensionController, 319 userInfoControllerImpl, 320 operatorNameViewControllerFactory, 321 phoneStatusBarPolicy, 322 keyguardIndicationController, 323 demoModeController, 324 notificationShadeDepthController, 325 statusBarTouchableRegionManager, 326 notificationIconAreaController, 327 brightnessSliderFactory, 328 wallpaperController, 329 ongoingCallController, 330 animationScheduler, 331 locationPublisher, 332 statusBarIconController, 333 statusBarHideIconsForBouncerManager, 334 transitionController, 335 featureFlags, 336 keyguardUnlockAnimationController, 337 mainHandler, 338 delayableExecutor, 339 messageRouter, 340 wallpaperManager, 341 unlockedScreenOffAnimationController, 342 startingSurfaceOptional, 343 tunerService, 344 dumpManager, 345 activityLaunchAnimator 346 ); 347 } 348 } 349