• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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