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