blob: 4f429d3fd9c25b2e134b3df58960e431977ae015 [file] [log] [blame]
Dave Mankoffaa8b7ae2019-09-04 18:03:21 -04001/*
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
Dave Mankofff4736812019-10-18 17:25:50 -040017package com.android.systemui.dagger;
Dave Mankoffaa8b7ae2019-09-04 18:03:21 -040018
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
Lucas Dupin64171fe2019-10-30 14:28:29 -070025import androidx.annotation.Nullable;
26
Dave Mankoffa7ca1572019-10-23 17:09:17 -040027import com.android.internal.logging.MetricsLogger;
28import com.android.keyguard.KeyguardUpdateMonitor;
29import com.android.systemui.ForegroundServiceController;
Dave Mankoff7abd1022019-10-23 15:18:49 -040030import com.android.systemui.LatencyTester;
Dave Mankoff4ddc25b2019-10-23 15:46:08 -040031import com.android.systemui.ScreenDecorations;
Dave Mankoffbcaca8a2019-10-31 18:04:08 -040032import com.android.systemui.SizeCompatModeActivityController;
Fabian Kozynski5ca7a512019-10-16 19:56:11 +000033import com.android.systemui.SliceBroadcastRelayHandler;
Dave Mankofff4736812019-10-18 17:25:50 -040034import com.android.systemui.SystemUI;
Dave Mankoffa7ca1572019-10-23 17:09:17 -040035import com.android.systemui.UiOffloadThread;
36import com.android.systemui.appops.AppOpsController;
37import com.android.systemui.assist.AssistManager;
Dave Mankoffbcaca8a2019-10-31 18:04:08 -040038import com.android.systemui.biometrics.AuthController;
Dave Mankoffa7ca1572019-10-23 17:09:17 -040039import com.android.systemui.broadcast.BroadcastDispatcher;
40import com.android.systemui.bubbles.BubbleController;
41import com.android.systemui.colorextraction.SysuiColorExtractor;
42import com.android.systemui.doze.DozeLog;
Dave Mankoffbcaca8a2019-10-31 18:04:08 -040043import com.android.systemui.globalactions.GlobalActionsComponent;
Dave Mankoffaa8b7ae2019-09-04 18:03:21 -040044import com.android.systemui.keyguard.KeyguardViewMediator;
Dave Mankoffa7ca1572019-10-23 17:09:17 -040045import com.android.systemui.keyguard.ScreenLifecycle;
46import com.android.systemui.keyguard.WakefulnessLifecycle;
Dave Mankoff33174bc2019-10-10 14:57:02 -040047import com.android.systemui.pip.PipUI;
Dave Mankoffa7ca1572019-10-23 17:09:17 -040048import com.android.systemui.plugins.FalsingManager;
Fabian Kozynskiff5e91f2019-09-24 15:38:08 -040049import com.android.systemui.power.PowerUI;
Dave Mankoff898e1bb2019-09-25 17:54:19 -040050import com.android.systemui.recents.Recents;
51import com.android.systemui.recents.RecentsModule;
Dave Mankoff2e484922019-10-31 12:25:08 -040052import com.android.systemui.shared.plugins.PluginManager;
Dave Mankoffbcaca8a2019-10-31 18:04:08 -040053import com.android.systemui.statusbar.CommandQueue;
Dave Mankoffa7ca1572019-10-23 17:09:17 -040054import com.android.systemui.statusbar.FeatureFlags;
55import com.android.systemui.statusbar.NavigationBarController;
56import com.android.systemui.statusbar.NotificationListener;
57import com.android.systemui.statusbar.NotificationLockscreenUserManager;
58import com.android.systemui.statusbar.NotificationMediaManager;
59import com.android.systemui.statusbar.NotificationRemoteInputManager;
60import com.android.systemui.statusbar.NotificationViewHierarchyManager;
61import com.android.systemui.statusbar.PulseExpansionHandler;
62import com.android.systemui.statusbar.SysuiStatusBarStateController;
63import com.android.systemui.statusbar.VibratorHelper;
64import com.android.systemui.statusbar.notification.BypassHeadsUpNotifier;
65import com.android.systemui.statusbar.notification.DynamicPrivacyController;
Dave Mankoffbcaca8a2019-10-31 18:04:08 -040066import com.android.systemui.statusbar.notification.InstantAppNotifier;
Dave Mankoffa7ca1572019-10-23 17:09:17 -040067import com.android.systemui.statusbar.notification.NewNotifPipeline;
68import com.android.systemui.statusbar.notification.NotificationAlertingManager;
69import com.android.systemui.statusbar.notification.NotificationEntryManager;
70import com.android.systemui.statusbar.notification.NotificationInterruptionStateProvider;
71import com.android.systemui.statusbar.notification.NotificationWakeUpCoordinator;
72import com.android.systemui.statusbar.notification.VisualStabilityManager;
73import com.android.systemui.statusbar.notification.logging.NotifLog;
74import com.android.systemui.statusbar.notification.logging.NotificationLogger;
75import com.android.systemui.statusbar.notification.row.NotificationGutsManager;
76import com.android.systemui.statusbar.phone.AutoHideController;
77import com.android.systemui.statusbar.phone.BiometricUnlockController;
78import com.android.systemui.statusbar.phone.DozeParameters;
79import com.android.systemui.statusbar.phone.DozeScrimController;
80import com.android.systemui.statusbar.phone.DozeServiceHost;
81import com.android.systemui.statusbar.phone.HeadsUpManagerPhone;
82import com.android.systemui.statusbar.phone.KeyguardBypassController;
Lucas Dupin64171fe2019-10-30 14:28:29 -070083import com.android.systemui.statusbar.phone.KeyguardLiftController;
Dave Mankoffa7ca1572019-10-23 17:09:17 -040084import com.android.systemui.statusbar.phone.LightBarController;
85import com.android.systemui.statusbar.phone.LockscreenWallpaper;
86import com.android.systemui.statusbar.phone.NotificationGroupAlertTransferHelper;
87import com.android.systemui.statusbar.phone.NotificationGroupManager;
88import com.android.systemui.statusbar.phone.ScrimController;
Dave Mankoffae8ec452019-10-29 15:50:02 -040089import com.android.systemui.statusbar.phone.StatusBar;
Dave Mankoffa7ca1572019-10-23 17:09:17 -040090import com.android.systemui.statusbar.phone.StatusBarIconController;
91import com.android.systemui.statusbar.phone.StatusBarWindowController;
92import com.android.systemui.statusbar.phone.StatusBarWindowViewController;
93import com.android.systemui.statusbar.policy.BatteryController;
94import com.android.systemui.statusbar.policy.ConfigurationController;
95import com.android.systemui.statusbar.policy.DeviceProvisionedController;
96import com.android.systemui.statusbar.policy.KeyguardStateController;
97import com.android.systemui.statusbar.policy.NetworkController;
98import com.android.systemui.statusbar.policy.RemoteInputQuickSettingsDisabler;
99import com.android.systemui.statusbar.policy.UserSwitcherController;
100import com.android.systemui.statusbar.policy.ZenModeController;
Dave Mankoffbcaca8a2019-10-31 18:04:08 -0400101import com.android.systemui.statusbar.tv.TvStatusBar;
Fabian Kozynski5ca7a512019-10-16 19:56:11 +0000102import com.android.systemui.theme.ThemeOverlayController;
Dave Mankoffa7ca1572019-10-23 17:09:17 -0400103import com.android.systemui.util.InjectionInflationController;
Robert Snoeberger81d76152019-09-30 15:43:34 -0400104import com.android.systemui.util.leak.GarbageMonitor;
Dave Mankoff33174bc2019-10-10 14:57:02 -0400105import com.android.systemui.volume.VolumeUI;
Dave Mankoffaa8b7ae2019-09-04 18:03:21 -0400106
Dave Mankoffa7ca1572019-10-23 17:09:17 -0400107import javax.inject.Named;
108import javax.inject.Singleton;
109
Dave Mankoffaa8b7ae2019-09-04 18:03:21 -0400110import dagger.Binds;
Dave Mankoffa7ca1572019-10-23 17:09:17 -0400111import dagger.Lazy;
Dave Mankoffaa8b7ae2019-09-04 18:03:21 -0400112import dagger.Module;
Dave Mankoffa7ca1572019-10-23 17:09:17 -0400113import dagger.Provides;
Dave Mankoffaa8b7ae2019-09-04 18:03:21 -0400114import dagger.multibindings.ClassKey;
115import dagger.multibindings.IntoMap;
116
117/**
Dave Mankoffeb593ae2019-09-04 11:31:55 -0400118 * SystemUI objects that are injectable should go here.
Dave Mankoffaa8b7ae2019-09-04 18:03:21 -0400119 */
Dave Mankoff898e1bb2019-09-25 17:54:19 -0400120@Module(includes = {RecentsModule.class})
Dave Mankoffaa8b7ae2019-09-04 18:03:21 -0400121public abstract class SystemUIBinder {
Dave Mankoffbcaca8a2019-10-31 18:04:08 -0400122 /** Inject into AuthController. */
123 @Binds
124 @IntoMap
125 @ClassKey(AuthController.class)
126 public abstract SystemUI bindAuthController(AuthController service);
Dave Mankoffa5d8a392019-10-10 12:21:09 -0400127
128 /** Inject into GarbageMonitor.Service. */
129 @Binds
130 @IntoMap
131 @ClassKey(GarbageMonitor.Service.class)
132 public abstract SystemUI bindGarbageMonitorService(GarbageMonitor.Service service);
133
Dave Mankoffbcaca8a2019-10-31 18:04:08 -0400134 /** Inject into GlobalActionsComponent. */
135 @Binds
136 @IntoMap
137 @ClassKey(GlobalActionsComponent.class)
138 public abstract SystemUI bindGlobalActionsComponent(GlobalActionsComponent sysui);
139
140 /** Inject into InstantAppNotifier. */
141 @Binds
142 @IntoMap
143 @ClassKey(InstantAppNotifier.class)
144 public abstract SystemUI bindInstantAppNotifier(InstantAppNotifier sysui);
145
Dave Mankoffaa8b7ae2019-09-04 18:03:21 -0400146 /** Inject into KeyguardViewMediator. */
147 @Binds
148 @IntoMap
149 @ClassKey(KeyguardViewMediator.class)
150 public abstract SystemUI bindKeyguardViewMediator(KeyguardViewMediator sysui);
Fabian Kozynskiff5e91f2019-09-24 15:38:08 -0400151
Dave Mankoff7abd1022019-10-23 15:18:49 -0400152 /** Inject into LatencyTests. */
153 @Binds
154 @IntoMap
155 @ClassKey(LatencyTester.class)
156 public abstract SystemUI bindLatencyTester(LatencyTester sysui);
157
Dave Mankoff33174bc2019-10-10 14:57:02 -0400158 /** Inject into PipUI. */
159 @Binds
160 @IntoMap
161 @ClassKey(PipUI.class)
162 public abstract SystemUI bindPipUI(PipUI sysui);
163
Fabian Kozynskiff5e91f2019-09-24 15:38:08 -0400164 /** Inject into PowerUI. */
165 @Binds
166 @IntoMap
167 @ClassKey(PowerUI.class)
168 public abstract SystemUI bindPowerUI(PowerUI sysui);
Dave Mankoff898e1bb2019-09-25 17:54:19 -0400169
Dave Mankoffbb9575f2019-10-02 12:23:49 -0400170 /** Inject into Recents. */
Dave Mankoff898e1bb2019-09-25 17:54:19 -0400171 @Binds
172 @IntoMap
173 @ClassKey(Recents.class)
174 public abstract SystemUI bindRecents(Recents sysui);
Robert Snoeberger81d76152019-09-30 15:43:34 -0400175
Dave Mankoff4ddc25b2019-10-23 15:46:08 -0400176 /** Inject into ScreenDecorations. */
177 @Binds
178 @IntoMap
179 @ClassKey(ScreenDecorations.class)
180 public abstract SystemUI bindScreenDecorations(ScreenDecorations sysui);
Dave Mankoff7abd1022019-10-23 15:18:49 -0400181
Dave Mankoffbcaca8a2019-10-31 18:04:08 -0400182 /** Inject into SizeCompatModeActivityController. */
183 @Binds
184 @IntoMap
185 @ClassKey(SizeCompatModeActivityController.class)
186 public abstract SystemUI bindsSizeCompatModeActivityController(
187 SizeCompatModeActivityController sysui);
188
Fabian Kozynski5ca7a512019-10-16 19:56:11 +0000189 /** Inject into SliceBroadcastRelayHandler. */
190 @Binds
191 @IntoMap
192 @ClassKey(SliceBroadcastRelayHandler.class)
193 public abstract SystemUI bindSliceBroadcastRelayHandler(SliceBroadcastRelayHandler sysui);
194
Dave Mankoffae8ec452019-10-29 15:50:02 -0400195 /** Inject into StatusBar. */
196 @Binds
197 @IntoMap
198 @ClassKey(StatusBar.class)
199 public abstract SystemUI bindsStatusBar(StatusBar sysui);
200
Fabian Kozynski5ca7a512019-10-16 19:56:11 +0000201 /** Inject into ThemeOverlayController. */
202 @Binds
203 @IntoMap
204 @ClassKey(ThemeOverlayController.class)
205 public abstract SystemUI bindThemeOverlayController(ThemeOverlayController sysui);
206
Dave Mankoffbcaca8a2019-10-31 18:04:08 -0400207 /** Inject into TvStatusBar. */
208 @Binds
209 @IntoMap
210 @ClassKey(TvStatusBar.class)
211 public abstract SystemUI bindsTvStatusBar(TvStatusBar sysui);
212
Dave Mankoff33174bc2019-10-10 14:57:02 -0400213 /** Inject into VolumeUI. */
214 @Binds
215 @IntoMap
216 @ClassKey(VolumeUI.class)
217 public abstract SystemUI bindVolumeUI(VolumeUI sysui);
218
Dave Mankoffa7ca1572019-10-23 17:09:17 -0400219 /**
220 * Provides our instance of StatusBar which is considered optional.
221 */
222 @Provides
223 @Singleton
224 static StatusBar provideStatusBar(
225 Context context,
226 FeatureFlags featureFlags,
227 LightBarController lightBarController,
228 AutoHideController autoHideController,
229 KeyguardUpdateMonitor keyguardUpdateMonitor,
230 StatusBarIconController statusBarIconController,
231 DozeLog dozeLog,
232 InjectionInflationController injectionInflationController,
233 PulseExpansionHandler pulseExpansionHandler,
234 NotificationWakeUpCoordinator notificationWakeUpCoordinator,
235 KeyguardBypassController keyguardBypassController,
236 KeyguardStateController keyguardStateController,
237 HeadsUpManagerPhone headsUpManagerPhone,
238 DynamicPrivacyController dynamicPrivacyController,
239 BypassHeadsUpNotifier bypassHeadsUpNotifier,
240 @Named(ALLOW_NOTIFICATION_LONG_PRESS_NAME) boolean allowNotificationLongPress,
241 Lazy<NewNotifPipeline> newNotifPipeline,
242 FalsingManager falsingManager,
243 BroadcastDispatcher broadcastDispatcher,
244 RemoteInputQuickSettingsDisabler remoteInputQuickSettingsDisabler,
245 NotificationGutsManager notificationGutsManager,
246 NotificationLogger notificationLogger,
247 NotificationEntryManager notificationEntryManager,
248 NotificationInterruptionStateProvider notificationInterruptionStateProvider,
249 NotificationViewHierarchyManager notificationViewHierarchyManager,
250 ForegroundServiceController foregroundServiceController,
251 AppOpsController appOpsController,
252 KeyguardViewMediator keyguardViewMediator,
253 ZenModeController zenModeController,
254 NotificationAlertingManager notificationAlertingManager,
255 DisplayMetrics displayMetrics,
256 MetricsLogger metricsLogger,
257 UiOffloadThread uiOffloadThread,
258 NotificationMediaManager notificationMediaManager,
259 NotificationLockscreenUserManager lockScreenUserManager,
260 NotificationRemoteInputManager remoteInputManager,
261 UserSwitcherController userSwitcherController,
262 NetworkController networkController,
263 BatteryController batteryController,
264 SysuiColorExtractor colorExtractor,
265 ScreenLifecycle screenLifecycle,
266 WakefulnessLifecycle wakefulnessLifecycle,
267 SysuiStatusBarStateController statusBarStateController,
268 VibratorHelper vibratorHelper,
269 BubbleController bubbleController,
270 NotificationGroupManager groupManager,
271 NotificationGroupAlertTransferHelper groupAlertTransferHelper,
272 VisualStabilityManager visualStabilityManager,
273 DeviceProvisionedController deviceProvisionedController,
274 NavigationBarController navigationBarController,
275 AssistManager assistManager,
276 NotificationListener notificationListener,
277 ConfigurationController configurationController,
278 StatusBarWindowController statusBarWindowController,
279 StatusBarWindowViewController.Builder statusBarWindowViewControllerBuilder,
280 NotifLog notifLog,
281 DozeParameters dozeParameters,
282 ScrimController scrimController,
Lucas Dupin64171fe2019-10-30 14:28:29 -0700283 @Nullable KeyguardLiftController keyguardLiftController,
Dave Mankoffa7ca1572019-10-23 17:09:17 -0400284 Lazy<LockscreenWallpaper> lockscreenWallpaperLazy,
285 Lazy<BiometricUnlockController> biometricUnlockControllerLazy,
286 DozeServiceHost dozeServiceHost,
287 PowerManager powerManager,
Dave Mankoffbcaca8a2019-10-31 18:04:08 -0400288 DozeScrimController dozeScrimController,
Dave Mankoff2e484922019-10-31 12:25:08 -0400289 CommandQueue commandQueue,
290 PluginManager pluginManager) {
Dave Mankoffa7ca1572019-10-23 17:09:17 -0400291 return new StatusBar(
292 context,
293 featureFlags,
294 lightBarController,
295 autoHideController,
296 keyguardUpdateMonitor,
297 statusBarIconController,
298 dozeLog,
299 injectionInflationController,
300 pulseExpansionHandler,
301 notificationWakeUpCoordinator,
302 keyguardBypassController,
303 keyguardStateController,
304 headsUpManagerPhone,
305 dynamicPrivacyController,
306 bypassHeadsUpNotifier,
307 allowNotificationLongPress,
308 newNotifPipeline,
309 falsingManager,
310 broadcastDispatcher,
311 remoteInputQuickSettingsDisabler,
312 notificationGutsManager,
313 notificationLogger,
314 notificationEntryManager,
315 notificationInterruptionStateProvider,
316 notificationViewHierarchyManager,
317 foregroundServiceController,
318 appOpsController,
319 keyguardViewMediator,
320 zenModeController,
321 notificationAlertingManager,
322 displayMetrics,
323 metricsLogger,
324 uiOffloadThread,
325 notificationMediaManager,
326 lockScreenUserManager,
327 remoteInputManager,
328 userSwitcherController,
329 networkController,
330 batteryController,
331 colorExtractor,
332 screenLifecycle,
333 wakefulnessLifecycle,
334 statusBarStateController,
335 vibratorHelper,
336 bubbleController,
337 groupManager,
338 groupAlertTransferHelper,
339 visualStabilityManager,
340 deviceProvisionedController,
341 navigationBarController,
342 assistManager,
343 notificationListener,
344 configurationController,
345 statusBarWindowController,
346 statusBarWindowViewControllerBuilder,
347 notifLog,
348 dozeParameters,
349 scrimController,
Lucas Dupin64171fe2019-10-30 14:28:29 -0700350 keyguardLiftController,
Dave Mankoffa7ca1572019-10-23 17:09:17 -0400351 lockscreenWallpaperLazy,
352 biometricUnlockControllerLazy,
353 dozeServiceHost,
354 powerManager,
Dave Mankoffbcaca8a2019-10-31 18:04:08 -0400355 dozeScrimController,
Dave Mankoff2e484922019-10-31 12:25:08 -0400356 commandQueue,
357 pluginManager);
Dave Mankoffa7ca1572019-10-23 17:09:17 -0400358 }
359
Dave Mankoffaa8b7ae2019-09-04 18:03:21 -0400360}