blob: 3acbc3a00d5790da81449204d3b47c0b0e715ecf [file] [log] [blame]
Heemin Seog1a39dea2019-10-16 15:58:21 -07001/*
2 * Copyright (C) 2019 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
17package com.android.systemui;
18
Dave Mankoffa7ca1572019-10-23 17:09:17 -040019import static com.android.systemui.Dependency.ALLOW_NOTIFICATION_LONG_PRESS_NAME;
20
21import android.content.Context;
22import android.os.PowerManager;
23import android.util.DisplayMetrics;
24
25import com.android.internal.logging.MetricsLogger;
26import com.android.keyguard.KeyguardUpdateMonitor;
27import com.android.systemui.appops.AppOpsController;
28import com.android.systemui.assist.AssistManager;
Dave Mankoffbcaca8a2019-10-31 18:04:08 -040029import com.android.systemui.biometrics.AuthController;
Dave Mankoffa7ca1572019-10-23 17:09:17 -040030import com.android.systemui.broadcast.BroadcastDispatcher;
31import com.android.systemui.bubbles.BubbleController;
32import com.android.systemui.colorextraction.SysuiColorExtractor;
33import com.android.systemui.doze.DozeLog;
Dave Mankoffbcaca8a2019-10-31 18:04:08 -040034import com.android.systemui.globalactions.GlobalActionsComponent;
Dave Mankoffae8ec452019-10-29 15:50:02 -040035import com.android.systemui.keyguard.KeyguardViewMediator;
Dave Mankoffa7ca1572019-10-23 17:09:17 -040036import com.android.systemui.keyguard.ScreenLifecycle;
37import com.android.systemui.keyguard.WakefulnessLifecycle;
Heemin Seog1a39dea2019-10-16 15:58:21 -070038import com.android.systemui.navigationbar.car.CarNavigationBar;
Dave Mankoffa7ca1572019-10-23 17:09:17 -040039import com.android.systemui.navigationbar.car.CarNavigationBarController;
Dave Mankoffae8ec452019-10-29 15:50:02 -040040import com.android.systemui.pip.PipUI;
Dave Mankoffa7ca1572019-10-23 17:09:17 -040041import com.android.systemui.plugins.FalsingManager;
Dave Mankoffae8ec452019-10-29 15:50:02 -040042import com.android.systemui.power.PowerUI;
43import com.android.systemui.recents.Recents;
44import com.android.systemui.recents.RecentsModule;
Dave Mankoff2e484922019-10-31 12:25:08 -040045import com.android.systemui.shared.plugins.PluginManager;
Dave Mankoffbcaca8a2019-10-31 18:04:08 -040046import com.android.systemui.statusbar.CommandQueue;
Dave Mankoffa7ca1572019-10-23 17:09:17 -040047import com.android.systemui.statusbar.FeatureFlags;
48import com.android.systemui.statusbar.NavigationBarController;
49import com.android.systemui.statusbar.NotificationListener;
50import com.android.systemui.statusbar.NotificationLockscreenUserManager;
51import com.android.systemui.statusbar.NotificationMediaManager;
52import com.android.systemui.statusbar.NotificationRemoteInputManager;
53import com.android.systemui.statusbar.NotificationViewHierarchyManager;
54import com.android.systemui.statusbar.PulseExpansionHandler;
55import com.android.systemui.statusbar.SysuiStatusBarStateController;
56import com.android.systemui.statusbar.VibratorHelper;
Dave Mankoffae8ec452019-10-29 15:50:02 -040057import com.android.systemui.statusbar.car.CarStatusBar;
Dave Mankoffa7ca1572019-10-23 17:09:17 -040058import com.android.systemui.statusbar.notification.BypassHeadsUpNotifier;
59import com.android.systemui.statusbar.notification.DynamicPrivacyController;
Dave Mankoffbcaca8a2019-10-31 18:04:08 -040060import com.android.systemui.statusbar.notification.InstantAppNotifier;
Dave Mankoffa7ca1572019-10-23 17:09:17 -040061import com.android.systemui.statusbar.notification.NewNotifPipeline;
62import com.android.systemui.statusbar.notification.NotificationAlertingManager;
63import com.android.systemui.statusbar.notification.NotificationEntryManager;
64import com.android.systemui.statusbar.notification.NotificationInterruptionStateProvider;
65import com.android.systemui.statusbar.notification.NotificationWakeUpCoordinator;
66import com.android.systemui.statusbar.notification.VisualStabilityManager;
67import com.android.systemui.statusbar.notification.logging.NotifLog;
68import com.android.systemui.statusbar.notification.logging.NotificationLogger;
69import com.android.systemui.statusbar.notification.row.NotificationGutsManager;
70import com.android.systemui.statusbar.phone.AutoHideController;
71import com.android.systemui.statusbar.phone.BiometricUnlockController;
72import com.android.systemui.statusbar.phone.DozeParameters;
73import com.android.systemui.statusbar.phone.DozeScrimController;
74import com.android.systemui.statusbar.phone.DozeServiceHost;
75import com.android.systemui.statusbar.phone.HeadsUpManagerPhone;
76import com.android.systemui.statusbar.phone.KeyguardBypassController;
77import com.android.systemui.statusbar.phone.LightBarController;
78import com.android.systemui.statusbar.phone.LockscreenWallpaper;
79import com.android.systemui.statusbar.phone.NotificationGroupAlertTransferHelper;
80import com.android.systemui.statusbar.phone.NotificationGroupManager;
81import com.android.systemui.statusbar.phone.ScrimController;
Dave Mankoffae8ec452019-10-29 15:50:02 -040082import com.android.systemui.statusbar.phone.StatusBar;
Dave Mankoffa7ca1572019-10-23 17:09:17 -040083import com.android.systemui.statusbar.phone.StatusBarIconController;
84import com.android.systemui.statusbar.phone.StatusBarWindowController;
85import com.android.systemui.statusbar.phone.StatusBarWindowViewController;
86import com.android.systemui.statusbar.policy.BatteryController;
87import com.android.systemui.statusbar.policy.ConfigurationController;
88import com.android.systemui.statusbar.policy.DeviceProvisionedController;
89import com.android.systemui.statusbar.policy.KeyguardStateController;
90import com.android.systemui.statusbar.policy.NetworkController;
91import com.android.systemui.statusbar.policy.RemoteInputQuickSettingsDisabler;
92import com.android.systemui.statusbar.policy.UserSwitcherController;
93import com.android.systemui.statusbar.policy.ZenModeController;
Dave Mankoffbcaca8a2019-10-31 18:04:08 -040094import com.android.systemui.statusbar.tv.TvStatusBar;
Fabian Kozynski5ca7a512019-10-16 19:56:11 +000095import com.android.systemui.theme.ThemeOverlayController;
Dave Mankoffa7ca1572019-10-23 17:09:17 -040096import com.android.systemui.util.InjectionInflationController;
Dave Mankoffae8ec452019-10-29 15:50:02 -040097import com.android.systemui.util.leak.GarbageMonitor;
98import com.android.systemui.volume.VolumeUI;
Heemin Seog1a39dea2019-10-16 15:58:21 -070099
Dave Mankoffa7ca1572019-10-23 17:09:17 -0400100import javax.inject.Named;
101import javax.inject.Singleton;
102
Heemin Seog1a39dea2019-10-16 15:58:21 -0700103import dagger.Binds;
Dave Mankoffa7ca1572019-10-23 17:09:17 -0400104import dagger.Lazy;
Heemin Seog1a39dea2019-10-16 15:58:21 -0700105import dagger.Module;
Dave Mankoffa7ca1572019-10-23 17:09:17 -0400106import dagger.Provides;
Heemin Seog1a39dea2019-10-16 15:58:21 -0700107import dagger.multibindings.ClassKey;
108import dagger.multibindings.IntoMap;
109
110/** Binder for car specific {@link SystemUI} modules. */
Dave Mankoffae8ec452019-10-29 15:50:02 -0400111@Module(includes = {RecentsModule.class})
Heemin Seog1a39dea2019-10-16 15:58:21 -0700112public abstract class CarSystemUIBinder {
Dave Mankoffbcaca8a2019-10-31 18:04:08 -0400113 /** Inject into AuthController. */
114 @Binds
115 @IntoMap
116 @ClassKey(AuthController.class)
117 public abstract SystemUI bindAuthController(AuthController service);
118
Heemin Seog1a39dea2019-10-16 15:58:21 -0700119 /** */
120 @Binds
121 @IntoMap
122 @ClassKey(CarNavigationBar.class)
123 public abstract SystemUI bindCarNavigationBar(CarNavigationBar sysui);
Dave Mankoffae8ec452019-10-29 15:50:02 -0400124
125 /** Inject into GarbageMonitor.Service. */
126 @Binds
127 @IntoMap
128 @ClassKey(GarbageMonitor.Service.class)
129 public abstract SystemUI bindGarbageMonitorService(GarbageMonitor.Service service);
130
Dave Mankoffbcaca8a2019-10-31 18:04:08 -0400131 /** Inject into GlobalActionsComponent. */
132 @Binds
133 @IntoMap
134 @ClassKey(GlobalActionsComponent.class)
135 public abstract SystemUI bindGlobalActionsComponent(GlobalActionsComponent sysui);
136
137 /** Inject into InstantAppNotifier. */
138 @Binds
139 @IntoMap
140 @ClassKey(InstantAppNotifier.class)
141 public abstract SystemUI bindInstantAppNotifier(InstantAppNotifier sysui);
142
Dave Mankoffae8ec452019-10-29 15:50:02 -0400143 /** Inject into KeyguardViewMediator. */
144 @Binds
145 @IntoMap
146 @ClassKey(KeyguardViewMediator.class)
147 public abstract SystemUI bindKeyguardViewMediator(KeyguardViewMediator sysui);
148
149 /** Inject into LatencyTests. */
150 @Binds
151 @IntoMap
152 @ClassKey(LatencyTester.class)
153 public abstract SystemUI bindLatencyTester(LatencyTester sysui);
154
155 /** Inject into PipUI. */
156 @Binds
157 @IntoMap
158 @ClassKey(PipUI.class)
159 public abstract SystemUI bindPipUI(PipUI sysui);
160
161 /** Inject into PowerUI. */
162 @Binds
163 @IntoMap
164 @ClassKey(PowerUI.class)
165 public abstract SystemUI bindPowerUI(PowerUI sysui);
166
167 /** Inject into Recents. */
168 @Binds
169 @IntoMap
170 @ClassKey(Recents.class)
171 public abstract SystemUI bindRecents(Recents sysui);
172
173 /** Inject into ScreenDecorations. */
174 @Binds
175 @IntoMap
176 @ClassKey(ScreenDecorations.class)
177 public abstract SystemUI bindScreenDecorations(ScreenDecorations sysui);
178
Dave Mankoffbcaca8a2019-10-31 18:04:08 -0400179 /** Inject into SizeCompatModeActivityController. */
180 @Binds
181 @IntoMap
182 @ClassKey(SizeCompatModeActivityController.class)
183 public abstract SystemUI bindsSizeCompatModeActivityController(
184 SizeCompatModeActivityController sysui);
185
Fabian Kozynski5ca7a512019-10-16 19:56:11 +0000186 /** Inject into SliceBroadcastRelayHandler. */
187 @Binds
188 @IntoMap
189 @ClassKey(SliceBroadcastRelayHandler.class)
190 public abstract SystemUI bindSliceBroadcastRelayHandler(SliceBroadcastRelayHandler sysui);
191
192 /** Inject into ThemeOverlayController. */
193 @Binds
194 @IntoMap
195 @ClassKey(ThemeOverlayController.class)
196 public abstract SystemUI bindThemeOverlayController(ThemeOverlayController sysui);
197
Dave Mankoffae8ec452019-10-29 15:50:02 -0400198 /** Inject into StatusBar. */
199 @Binds
200 @IntoMap
201 @ClassKey(StatusBar.class)
202 public abstract SystemUI bindsStatusBar(CarStatusBar sysui);
203
Dave Mankoffbcaca8a2019-10-31 18:04:08 -0400204 /** Inject into TvStatusBar. */
205 @Binds
206 @IntoMap
207 @ClassKey(TvStatusBar.class)
208 public abstract SystemUI bindsTvStatusBar(TvStatusBar sysui);
209
Dave Mankoffae8ec452019-10-29 15:50:02 -0400210 /** Inject into StatusBarGoogle. */
211 @Binds
212 @IntoMap
213 @ClassKey(CarStatusBar.class)
214 public abstract SystemUI bindsCarStatusBar(CarStatusBar sysui);
215
216 /** Inject into VolumeUI. */
217 @Binds
218 @IntoMap
219 @ClassKey(VolumeUI.class)
220 public abstract SystemUI bindVolumeUI(VolumeUI sysui);
Dave Mankoffa7ca1572019-10-23 17:09:17 -0400221
222 /**
223 * Provides our instance of StatusBar which is considered optional.
224 */
225 @Provides
226 @Singleton
227 static CarStatusBar provideStatusBar(
228 Context context,
229 FeatureFlags featureFlags,
230 LightBarController lightBarController,
231 AutoHideController autoHideController,
232 KeyguardUpdateMonitor keyguardUpdateMonitor,
233 StatusBarIconController statusBarIconController,
234 DozeLog dozeLog,
235 InjectionInflationController injectionInflationController,
236 PulseExpansionHandler pulseExpansionHandler,
237 NotificationWakeUpCoordinator notificationWakeUpCoordinator,
238 KeyguardBypassController keyguardBypassController,
239 KeyguardStateController keyguardStateController,
240 HeadsUpManagerPhone headsUpManagerPhone,
241 DynamicPrivacyController dynamicPrivacyController,
242 BypassHeadsUpNotifier bypassHeadsUpNotifier,
243 @Named(ALLOW_NOTIFICATION_LONG_PRESS_NAME) boolean allowNotificationLongPress,
244 Lazy<NewNotifPipeline> newNotifPipeline,
245 FalsingManager falsingManager,
246 BroadcastDispatcher broadcastDispatcher,
247 RemoteInputQuickSettingsDisabler remoteInputQuickSettingsDisabler,
248 NotificationGutsManager notificationGutsManager,
249 NotificationLogger notificationLogger,
250 NotificationEntryManager notificationEntryManager,
251 NotificationInterruptionStateProvider notificationInterruptionStateProvider,
252 NotificationViewHierarchyManager notificationViewHierarchyManager,
253 ForegroundServiceController foregroundServiceController,
254 AppOpsController appOpsController,
255 KeyguardViewMediator keyguardViewMediator,
256 ZenModeController zenModeController,
257 NotificationAlertingManager notificationAlertingManager,
258 DisplayMetrics displayMetrics,
259 MetricsLogger metricsLogger,
260 UiOffloadThread uiOffloadThread,
261 NotificationMediaManager notificationMediaManager,
262 NotificationLockscreenUserManager lockScreenUserManager,
263 NotificationRemoteInputManager remoteInputManager,
264 UserSwitcherController userSwitcherController,
265 NetworkController networkController,
266 BatteryController batteryController,
267 SysuiColorExtractor colorExtractor,
268 ScreenLifecycle screenLifecycle,
269 WakefulnessLifecycle wakefulnessLifecycle,
270 SysuiStatusBarStateController statusBarStateController,
271 VibratorHelper vibratorHelper,
272 BubbleController bubbleController,
273 NotificationGroupManager groupManager,
274 NotificationGroupAlertTransferHelper groupAlertTransferHelper,
275 VisualStabilityManager visualStabilityManager,
276 DeviceProvisionedController deviceProvisionedController,
277 NavigationBarController navigationBarController,
278 AssistManager assistManager,
279 NotificationListener notificationListener,
280 ConfigurationController configurationController,
281 StatusBarWindowController statusBarWindowController,
282 StatusBarWindowViewController.Builder statusBarWindowViewControllerBuilder,
283 NotifLog notifLog,
284 DozeParameters dozeParameters,
285 ScrimController scrimController,
286 Lazy<LockscreenWallpaper> lockscreenWallpaperLazy,
287 Lazy<BiometricUnlockController> biometricUnlockControllerLazy,
288 DozeServiceHost dozeServiceHost,
289 PowerManager powerManager,
290 DozeScrimController dozeScrimController,
Dave Mankoffbcaca8a2019-10-31 18:04:08 -0400291 CommandQueue commandQueue,
Dave Mankoff2e484922019-10-31 12:25:08 -0400292 PluginManager pluginManager,
Dave Mankoffa7ca1572019-10-23 17:09:17 -0400293 CarNavigationBarController carNavigationBarController) {
294 return new CarStatusBar(
295 context,
296 featureFlags,
297 lightBarController,
298 autoHideController,
299 keyguardUpdateMonitor,
300 statusBarIconController,
301 dozeLog,
302 injectionInflationController,
303 pulseExpansionHandler,
304 notificationWakeUpCoordinator,
305 keyguardBypassController,
306 keyguardStateController,
307 headsUpManagerPhone,
308 dynamicPrivacyController,
309 bypassHeadsUpNotifier,
310 allowNotificationLongPress,
311 newNotifPipeline,
312 falsingManager,
313 broadcastDispatcher,
314 remoteInputQuickSettingsDisabler,
315 notificationGutsManager,
316 notificationLogger,
317 notificationEntryManager,
318 notificationInterruptionStateProvider,
319 notificationViewHierarchyManager,
320 foregroundServiceController,
321 appOpsController,
322 keyguardViewMediator,
323 zenModeController,
324 notificationAlertingManager,
325 displayMetrics,
326 metricsLogger,
327 uiOffloadThread,
328 notificationMediaManager,
329 lockScreenUserManager,
330 remoteInputManager,
331 userSwitcherController,
332 networkController,
333 batteryController,
334 colorExtractor,
335 screenLifecycle,
336 wakefulnessLifecycle,
337 statusBarStateController,
338 vibratorHelper,
339 bubbleController,
340 groupManager,
341 groupAlertTransferHelper,
342 visualStabilityManager,
343 deviceProvisionedController,
344 navigationBarController,
345 assistManager,
346 notificationListener,
347 configurationController,
348 statusBarWindowController,
349 statusBarWindowViewControllerBuilder,
350 notifLog,
351 dozeParameters,
352 scrimController,
353 lockscreenWallpaperLazy,
354 biometricUnlockControllerLazy,
355 dozeServiceHost,
356 powerManager,
357 dozeScrimController,
Dave Mankoffbcaca8a2019-10-31 18:04:08 -0400358 commandQueue,
Dave Mankoff2e484922019-10-31 12:25:08 -0400359 pluginManager,
Dave Mankoffa7ca1572019-10-23 17:09:17 -0400360 carNavigationBarController);
361 }
Heemin Seog1a39dea2019-10-16 15:58:21 -0700362}