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.content.Context; 22 import android.os.Handler; 23 import android.os.PowerManager; 24 import android.util.DisplayMetrics; 25 26 import androidx.annotation.Nullable; 27 28 import com.android.internal.logging.MetricsLogger; 29 import com.android.keyguard.KeyguardUpdateMonitor; 30 import com.android.keyguard.ViewMediatorCallback; 31 import com.android.systemui.InitController; 32 import com.android.systemui.assist.AssistManager; 33 import com.android.systemui.broadcast.BroadcastDispatcher; 34 import com.android.systemui.bubbles.BubbleController; 35 import com.android.systemui.colorextraction.SysuiColorExtractor; 36 import com.android.systemui.dagger.qualifiers.UiBackground; 37 import com.android.systemui.keyguard.DismissCallbackRegistry; 38 import com.android.systemui.keyguard.KeyguardViewMediator; 39 import com.android.systemui.keyguard.ScreenLifecycle; 40 import com.android.systemui.keyguard.WakefulnessLifecycle; 41 import com.android.systemui.plugins.DarkIconDispatcher; 42 import com.android.systemui.plugins.FalsingManager; 43 import com.android.systemui.plugins.PluginDependencyProvider; 44 import com.android.systemui.recents.Recents; 45 import com.android.systemui.recents.ScreenPinningRequest; 46 import com.android.systemui.shared.plugins.PluginManager; 47 import com.android.systemui.stackdivider.Divider; 48 import com.android.systemui.statusbar.CommandQueue; 49 import com.android.systemui.statusbar.KeyguardIndicationController; 50 import com.android.systemui.statusbar.NavigationBarController; 51 import com.android.systemui.statusbar.NotificationLockscreenUserManager; 52 import com.android.systemui.statusbar.NotificationMediaManager; 53 import com.android.systemui.statusbar.NotificationRemoteInputManager; 54 import com.android.systemui.statusbar.NotificationShadeDepthController; 55 import com.android.systemui.statusbar.NotificationViewHierarchyManager; 56 import com.android.systemui.statusbar.PulseExpansionHandler; 57 import com.android.systemui.statusbar.SuperStatusBarViewFactory; 58 import com.android.systemui.statusbar.SysuiStatusBarStateController; 59 import com.android.systemui.statusbar.VibratorHelper; 60 import com.android.systemui.statusbar.notification.DynamicPrivacyController; 61 import com.android.systemui.statusbar.notification.NotificationWakeUpCoordinator; 62 import com.android.systemui.statusbar.notification.VisualStabilityManager; 63 import com.android.systemui.statusbar.notification.init.NotificationsController; 64 import com.android.systemui.statusbar.notification.interruption.BypassHeadsUpNotifier; 65 import com.android.systemui.statusbar.notification.interruption.NotificationInterruptStateProvider; 66 import com.android.systemui.statusbar.notification.logging.NotificationLogger; 67 import com.android.systemui.statusbar.notification.row.NotificationGutsManager; 68 import com.android.systemui.statusbar.phone.AutoHideController; 69 import com.android.systemui.statusbar.phone.BiometricUnlockController; 70 import com.android.systemui.statusbar.phone.DozeParameters; 71 import com.android.systemui.statusbar.phone.DozeScrimController; 72 import com.android.systemui.statusbar.phone.DozeServiceHost; 73 import com.android.systemui.statusbar.phone.HeadsUpManagerPhone; 74 import com.android.systemui.statusbar.phone.KeyguardBypassController; 75 import com.android.systemui.statusbar.phone.KeyguardDismissUtil; 76 import com.android.systemui.statusbar.phone.KeyguardLiftController; 77 import com.android.systemui.statusbar.phone.LightBarController; 78 import com.android.systemui.statusbar.phone.LightsOutNotifController; 79 import com.android.systemui.statusbar.phone.LockscreenLockIconController; 80 import com.android.systemui.statusbar.phone.LockscreenWallpaper; 81 import com.android.systemui.statusbar.phone.NotificationGroupManager; 82 import com.android.systemui.statusbar.phone.NotificationShadeWindowController; 83 import com.android.systemui.statusbar.phone.PhoneStatusBarPolicy; 84 import com.android.systemui.statusbar.phone.ScrimController; 85 import com.android.systemui.statusbar.phone.ShadeController; 86 import com.android.systemui.statusbar.phone.StatusBar; 87 import com.android.systemui.statusbar.phone.StatusBarIconController; 88 import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; 89 import com.android.systemui.statusbar.phone.StatusBarNotificationActivityStarter; 90 import com.android.systemui.statusbar.phone.StatusBarTouchableRegionManager; 91 import com.android.systemui.statusbar.policy.BatteryController; 92 import com.android.systemui.statusbar.policy.ConfigurationController; 93 import com.android.systemui.statusbar.policy.DeviceProvisionedController; 94 import com.android.systemui.statusbar.policy.ExtensionController; 95 import com.android.systemui.statusbar.policy.KeyguardStateController; 96 import com.android.systemui.statusbar.policy.NetworkController; 97 import com.android.systemui.statusbar.policy.RemoteInputQuickSettingsDisabler; 98 import com.android.systemui.statusbar.policy.UserInfoControllerImpl; 99 import com.android.systemui.statusbar.policy.UserSwitcherController; 100 import com.android.systemui.volume.VolumeComponent; 101 102 import java.util.Optional; 103 import java.util.concurrent.Executor; 104 105 import javax.inject.Named; 106 import javax.inject.Provider; 107 import javax.inject.Singleton; 108 109 import dagger.Lazy; 110 import dagger.Module; 111 import dagger.Provides; 112 113 /** 114 * Dagger Module providing {@link StatusBar}. 115 */ 116 @Module(includes = {StatusBarPhoneDependenciesModule.class}) 117 public interface StatusBarPhoneModule { 118 /** 119 * Provides our instance of StatusBar which is considered optional. 120 */ 121 @Provides 122 @Singleton provideStatusBar( Context context, NotificationsController notificationsController, LightBarController lightBarController, AutoHideController autoHideController, KeyguardUpdateMonitor keyguardUpdateMonitor, StatusBarIconController statusBarIconController, PulseExpansionHandler pulseExpansionHandler, NotificationWakeUpCoordinator notificationWakeUpCoordinator, KeyguardBypassController keyguardBypassController, KeyguardStateController keyguardStateController, HeadsUpManagerPhone headsUpManagerPhone, DynamicPrivacyController dynamicPrivacyController, BypassHeadsUpNotifier bypassHeadsUpNotifier, FalsingManager falsingManager, BroadcastDispatcher broadcastDispatcher, RemoteInputQuickSettingsDisabler remoteInputQuickSettingsDisabler, NotificationGutsManager notificationGutsManager, NotificationLogger notificationLogger, NotificationInterruptStateProvider notificationInterruptStateProvider, NotificationViewHierarchyManager notificationViewHierarchyManager, 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, VibratorHelper vibratorHelper, BubbleController bubbleController, NotificationGroupManager groupManager, VisualStabilityManager visualStabilityManager, DeviceProvisionedController deviceProvisionedController, NavigationBarController navigationBarController, Lazy<AssistManager> assistManagerLazy, ConfigurationController configurationController, NotificationShadeWindowController notificationShadeWindowController, LockscreenLockIconController lockscreenLockIconController, DozeParameters dozeParameters, ScrimController scrimController, @Nullable KeyguardLiftController keyguardLiftController, Lazy<LockscreenWallpaper> lockscreenWallpaperLazy, Lazy<BiometricUnlockController> biometricUnlockControllerLazy, DozeServiceHost dozeServiceHost, PowerManager powerManager, ScreenPinningRequest screenPinningRequest, DozeScrimController dozeScrimController, VolumeComponent volumeComponent, CommandQueue commandQueue, Optional<Recents> recentsOptional, Provider<StatusBarComponent.Builder> statusBarComponentBuilder, PluginManager pluginManager, Optional<Divider> dividerOptional, LightsOutNotifController lightsOutNotifController, StatusBarNotificationActivityStarter.Builder statusBarNotificationActivityStarterBuilder, ShadeController shadeController, SuperStatusBarViewFactory superStatusBarViewFactory, StatusBarKeyguardViewManager statusBarKeyguardViewManager, ViewMediatorCallback viewMediatorCallback, InitController initController, DarkIconDispatcher darkIconDispatcher, @Named(TIME_TICK_HANDLER_NAME) Handler timeTickHandler, PluginDependencyProvider pluginDependencyProvider, KeyguardDismissUtil keyguardDismissUtil, ExtensionController extensionController, UserInfoControllerImpl userInfoControllerImpl, PhoneStatusBarPolicy phoneStatusBarPolicy, KeyguardIndicationController keyguardIndicationController, Lazy<NotificationShadeDepthController> notificationShadeDepthController, DismissCallbackRegistry dismissCallbackRegistry, StatusBarTouchableRegionManager statusBarTouchableRegionManager)123 static StatusBar provideStatusBar( 124 Context context, 125 NotificationsController notificationsController, 126 LightBarController lightBarController, 127 AutoHideController autoHideController, 128 KeyguardUpdateMonitor keyguardUpdateMonitor, 129 StatusBarIconController statusBarIconController, 130 PulseExpansionHandler pulseExpansionHandler, 131 NotificationWakeUpCoordinator notificationWakeUpCoordinator, 132 KeyguardBypassController keyguardBypassController, 133 KeyguardStateController keyguardStateController, 134 HeadsUpManagerPhone headsUpManagerPhone, 135 DynamicPrivacyController dynamicPrivacyController, 136 BypassHeadsUpNotifier bypassHeadsUpNotifier, 137 FalsingManager falsingManager, 138 BroadcastDispatcher broadcastDispatcher, 139 RemoteInputQuickSettingsDisabler remoteInputQuickSettingsDisabler, 140 NotificationGutsManager notificationGutsManager, 141 NotificationLogger notificationLogger, 142 NotificationInterruptStateProvider notificationInterruptStateProvider, 143 NotificationViewHierarchyManager notificationViewHierarchyManager, 144 KeyguardViewMediator keyguardViewMediator, 145 DisplayMetrics displayMetrics, 146 MetricsLogger metricsLogger, 147 @UiBackground Executor uiBgExecutor, 148 NotificationMediaManager notificationMediaManager, 149 NotificationLockscreenUserManager lockScreenUserManager, 150 NotificationRemoteInputManager remoteInputManager, 151 UserSwitcherController userSwitcherController, 152 NetworkController networkController, 153 BatteryController batteryController, 154 SysuiColorExtractor colorExtractor, 155 ScreenLifecycle screenLifecycle, 156 WakefulnessLifecycle wakefulnessLifecycle, 157 SysuiStatusBarStateController statusBarStateController, 158 VibratorHelper vibratorHelper, 159 BubbleController bubbleController, 160 NotificationGroupManager groupManager, 161 VisualStabilityManager visualStabilityManager, 162 DeviceProvisionedController deviceProvisionedController, 163 NavigationBarController navigationBarController, 164 Lazy<AssistManager> assistManagerLazy, 165 ConfigurationController configurationController, 166 NotificationShadeWindowController notificationShadeWindowController, 167 LockscreenLockIconController lockscreenLockIconController, 168 DozeParameters dozeParameters, 169 ScrimController scrimController, 170 @Nullable KeyguardLiftController keyguardLiftController, 171 Lazy<LockscreenWallpaper> lockscreenWallpaperLazy, 172 Lazy<BiometricUnlockController> biometricUnlockControllerLazy, 173 DozeServiceHost dozeServiceHost, 174 PowerManager powerManager, 175 ScreenPinningRequest screenPinningRequest, 176 DozeScrimController dozeScrimController, 177 VolumeComponent volumeComponent, 178 CommandQueue commandQueue, 179 Optional<Recents> recentsOptional, 180 Provider<StatusBarComponent.Builder> statusBarComponentBuilder, 181 PluginManager pluginManager, 182 Optional<Divider> dividerOptional, 183 LightsOutNotifController lightsOutNotifController, 184 StatusBarNotificationActivityStarter.Builder 185 statusBarNotificationActivityStarterBuilder, 186 ShadeController shadeController, 187 SuperStatusBarViewFactory superStatusBarViewFactory, 188 StatusBarKeyguardViewManager statusBarKeyguardViewManager, 189 ViewMediatorCallback viewMediatorCallback, 190 InitController initController, 191 DarkIconDispatcher darkIconDispatcher, 192 @Named(TIME_TICK_HANDLER_NAME) Handler timeTickHandler, 193 PluginDependencyProvider pluginDependencyProvider, 194 KeyguardDismissUtil keyguardDismissUtil, 195 ExtensionController extensionController, 196 UserInfoControllerImpl userInfoControllerImpl, 197 PhoneStatusBarPolicy phoneStatusBarPolicy, 198 KeyguardIndicationController keyguardIndicationController, 199 Lazy<NotificationShadeDepthController> notificationShadeDepthController, 200 DismissCallbackRegistry dismissCallbackRegistry, 201 StatusBarTouchableRegionManager statusBarTouchableRegionManager) { 202 return new StatusBar( 203 context, 204 notificationsController, 205 lightBarController, 206 autoHideController, 207 keyguardUpdateMonitor, 208 statusBarIconController, 209 pulseExpansionHandler, 210 notificationWakeUpCoordinator, 211 keyguardBypassController, 212 keyguardStateController, 213 headsUpManagerPhone, 214 dynamicPrivacyController, 215 bypassHeadsUpNotifier, 216 falsingManager, 217 broadcastDispatcher, 218 remoteInputQuickSettingsDisabler, 219 notificationGutsManager, 220 notificationLogger, 221 notificationInterruptStateProvider, 222 notificationViewHierarchyManager, 223 keyguardViewMediator, 224 displayMetrics, 225 metricsLogger, 226 uiBgExecutor, 227 notificationMediaManager, 228 lockScreenUserManager, 229 remoteInputManager, 230 userSwitcherController, 231 networkController, 232 batteryController, 233 colorExtractor, 234 screenLifecycle, 235 wakefulnessLifecycle, 236 statusBarStateController, 237 vibratorHelper, 238 bubbleController, 239 groupManager, 240 visualStabilityManager, 241 deviceProvisionedController, 242 navigationBarController, 243 assistManagerLazy, 244 configurationController, 245 notificationShadeWindowController, 246 lockscreenLockIconController, 247 dozeParameters, 248 scrimController, 249 keyguardLiftController, 250 lockscreenWallpaperLazy, 251 biometricUnlockControllerLazy, 252 dozeServiceHost, 253 powerManager, 254 screenPinningRequest, 255 dozeScrimController, 256 volumeComponent, 257 commandQueue, 258 recentsOptional, 259 statusBarComponentBuilder, 260 pluginManager, 261 dividerOptional, 262 lightsOutNotifController, 263 statusBarNotificationActivityStarterBuilder, 264 shadeController, 265 superStatusBarViewFactory, 266 statusBarKeyguardViewManager, 267 viewMediatorCallback, 268 initController, 269 darkIconDispatcher, 270 timeTickHandler, 271 pluginDependencyProvider, 272 keyguardDismissUtil, 273 extensionController, 274 userInfoControllerImpl, 275 phoneStatusBarPolicy, 276 keyguardIndicationController, 277 dismissCallbackRegistry, 278 notificationShadeDepthController, 279 statusBarTouchableRegionManager); 280 } 281 } 282