• 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.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