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