blob: 88ec76c7706b8dbe7fe3c40de2b7dee58a54b371 [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;
Dave Mankofff4736812019-10-18 17:25:50 -040033import com.android.systemui.SystemUI;
Dave Mankoffa7ca1572019-10-23 17:09:17 -040034import com.android.systemui.UiOffloadThread;
35import com.android.systemui.appops.AppOpsController;
36import com.android.systemui.assist.AssistManager;
Dave Mankoffbcaca8a2019-10-31 18:04:08 -040037import com.android.systemui.biometrics.AuthController;
Dave Mankoffa7ca1572019-10-23 17:09:17 -040038import com.android.systemui.broadcast.BroadcastDispatcher;
39import com.android.systemui.bubbles.BubbleController;
40import com.android.systemui.colorextraction.SysuiColorExtractor;
41import com.android.systemui.doze.DozeLog;
Dave Mankoffbcaca8a2019-10-31 18:04:08 -040042import com.android.systemui.globalactions.GlobalActionsComponent;
Dave Mankoffaa8b7ae2019-09-04 18:03:21 -040043import com.android.systemui.keyguard.KeyguardViewMediator;
Dave Mankoffa7ca1572019-10-23 17:09:17 -040044import com.android.systemui.keyguard.ScreenLifecycle;
45import com.android.systemui.keyguard.WakefulnessLifecycle;
Dave Mankoff33174bc2019-10-10 14:57:02 -040046import com.android.systemui.pip.PipUI;
Dave Mankoffa7ca1572019-10-23 17:09:17 -040047import com.android.systemui.plugins.FalsingManager;
Fabian Kozynskiff5e91f2019-09-24 15:38:08 -040048import com.android.systemui.power.PowerUI;
Dave Mankoff898e1bb2019-09-25 17:54:19 -040049import com.android.systemui.recents.Recents;
50import com.android.systemui.recents.RecentsModule;
Dave Mankoff2e484922019-10-31 12:25:08 -040051import com.android.systemui.shared.plugins.PluginManager;
Dave Mankoffbcaca8a2019-10-31 18:04:08 -040052import com.android.systemui.statusbar.CommandQueue;
Dave Mankoffa7ca1572019-10-23 17:09:17 -040053import com.android.systemui.statusbar.FeatureFlags;
54import com.android.systemui.statusbar.NavigationBarController;
55import com.android.systemui.statusbar.NotificationListener;
56import com.android.systemui.statusbar.NotificationLockscreenUserManager;
57import com.android.systemui.statusbar.NotificationMediaManager;
58import com.android.systemui.statusbar.NotificationRemoteInputManager;
59import com.android.systemui.statusbar.NotificationViewHierarchyManager;
60import com.android.systemui.statusbar.PulseExpansionHandler;
61import com.android.systemui.statusbar.SysuiStatusBarStateController;
62import com.android.systemui.statusbar.VibratorHelper;
63import com.android.systemui.statusbar.notification.BypassHeadsUpNotifier;
64import com.android.systemui.statusbar.notification.DynamicPrivacyController;
Dave Mankoffbcaca8a2019-10-31 18:04:08 -040065import com.android.systemui.statusbar.notification.InstantAppNotifier;
Dave Mankoffa7ca1572019-10-23 17:09:17 -040066import com.android.systemui.statusbar.notification.NewNotifPipeline;
67import com.android.systemui.statusbar.notification.NotificationAlertingManager;
68import com.android.systemui.statusbar.notification.NotificationEntryManager;
69import com.android.systemui.statusbar.notification.NotificationInterruptionStateProvider;
70import com.android.systemui.statusbar.notification.NotificationWakeUpCoordinator;
71import com.android.systemui.statusbar.notification.VisualStabilityManager;
72import com.android.systemui.statusbar.notification.logging.NotifLog;
73import com.android.systemui.statusbar.notification.logging.NotificationLogger;
74import com.android.systemui.statusbar.notification.row.NotificationGutsManager;
75import com.android.systemui.statusbar.phone.AutoHideController;
76import com.android.systemui.statusbar.phone.BiometricUnlockController;
77import com.android.systemui.statusbar.phone.DozeParameters;
78import com.android.systemui.statusbar.phone.DozeScrimController;
79import com.android.systemui.statusbar.phone.DozeServiceHost;
80import com.android.systemui.statusbar.phone.HeadsUpManagerPhone;
81import com.android.systemui.statusbar.phone.KeyguardBypassController;
Lucas Dupin64171fe2019-10-30 14:28:29 -070082import com.android.systemui.statusbar.phone.KeyguardLiftController;
Dave Mankoffa7ca1572019-10-23 17:09:17 -040083import com.android.systemui.statusbar.phone.LightBarController;
84import com.android.systemui.statusbar.phone.LockscreenWallpaper;
85import com.android.systemui.statusbar.phone.NotificationGroupAlertTransferHelper;
86import com.android.systemui.statusbar.phone.NotificationGroupManager;
87import com.android.systemui.statusbar.phone.ScrimController;
Dave Mankoffae8ec452019-10-29 15:50:02 -040088import com.android.systemui.statusbar.phone.StatusBar;
Dave Mankoffa7ca1572019-10-23 17:09:17 -040089import com.android.systemui.statusbar.phone.StatusBarIconController;
90import com.android.systemui.statusbar.phone.StatusBarWindowController;
91import com.android.systemui.statusbar.phone.StatusBarWindowViewController;
92import com.android.systemui.statusbar.policy.BatteryController;
93import com.android.systemui.statusbar.policy.ConfigurationController;
94import com.android.systemui.statusbar.policy.DeviceProvisionedController;
95import com.android.systemui.statusbar.policy.KeyguardStateController;
96import com.android.systemui.statusbar.policy.NetworkController;
97import com.android.systemui.statusbar.policy.RemoteInputQuickSettingsDisabler;
98import com.android.systemui.statusbar.policy.UserSwitcherController;
99import com.android.systemui.statusbar.policy.ZenModeController;
Dave Mankoffbcaca8a2019-10-31 18:04:08 -0400100import com.android.systemui.statusbar.tv.TvStatusBar;
Dave Mankoffa7ca1572019-10-23 17:09:17 -0400101import com.android.systemui.util.InjectionInflationController;
Robert Snoeberger81d76152019-09-30 15:43:34 -0400102import com.android.systemui.util.leak.GarbageMonitor;
Dave Mankoff33174bc2019-10-10 14:57:02 -0400103import com.android.systemui.volume.VolumeUI;
Dave Mankoffaa8b7ae2019-09-04 18:03:21 -0400104
Dave Mankoffa7ca1572019-10-23 17:09:17 -0400105import javax.inject.Named;
106import javax.inject.Singleton;
107
Dave Mankoffaa8b7ae2019-09-04 18:03:21 -0400108import dagger.Binds;
Dave Mankoffa7ca1572019-10-23 17:09:17 -0400109import dagger.Lazy;
Dave Mankoffaa8b7ae2019-09-04 18:03:21 -0400110import dagger.Module;
Dave Mankoffa7ca1572019-10-23 17:09:17 -0400111import dagger.Provides;
Dave Mankoffaa8b7ae2019-09-04 18:03:21 -0400112import dagger.multibindings.ClassKey;
113import dagger.multibindings.IntoMap;
114
115/**
Dave Mankoffeb593ae2019-09-04 11:31:55 -0400116 * SystemUI objects that are injectable should go here.
Dave Mankoffaa8b7ae2019-09-04 18:03:21 -0400117 */
Dave Mankoff898e1bb2019-09-25 17:54:19 -0400118@Module(includes = {RecentsModule.class})
Dave Mankoffaa8b7ae2019-09-04 18:03:21 -0400119public abstract class SystemUIBinder {
Dave Mankoffbcaca8a2019-10-31 18:04:08 -0400120 /** Inject into AuthController. */
121 @Binds
122 @IntoMap
123 @ClassKey(AuthController.class)
124 public abstract SystemUI bindAuthController(AuthController service);
Dave Mankoffa5d8a392019-10-10 12:21:09 -0400125
126 /** Inject into GarbageMonitor.Service. */
127 @Binds
128 @IntoMap
129 @ClassKey(GarbageMonitor.Service.class)
130 public abstract SystemUI bindGarbageMonitorService(GarbageMonitor.Service service);
131
Dave Mankoffbcaca8a2019-10-31 18:04:08 -0400132 /** Inject into GlobalActionsComponent. */
133 @Binds
134 @IntoMap
135 @ClassKey(GlobalActionsComponent.class)
136 public abstract SystemUI bindGlobalActionsComponent(GlobalActionsComponent sysui);
137
138 /** Inject into InstantAppNotifier. */
139 @Binds
140 @IntoMap
141 @ClassKey(InstantAppNotifier.class)
142 public abstract SystemUI bindInstantAppNotifier(InstantAppNotifier sysui);
143
Dave Mankoffaa8b7ae2019-09-04 18:03:21 -0400144 /** Inject into KeyguardViewMediator. */
145 @Binds
146 @IntoMap
147 @ClassKey(KeyguardViewMediator.class)
148 public abstract SystemUI bindKeyguardViewMediator(KeyguardViewMediator sysui);
Fabian Kozynskiff5e91f2019-09-24 15:38:08 -0400149
Dave Mankoff7abd1022019-10-23 15:18:49 -0400150 /** Inject into LatencyTests. */
151 @Binds
152 @IntoMap
153 @ClassKey(LatencyTester.class)
154 public abstract SystemUI bindLatencyTester(LatencyTester sysui);
155
Dave Mankoff33174bc2019-10-10 14:57:02 -0400156 /** Inject into PipUI. */
157 @Binds
158 @IntoMap
159 @ClassKey(PipUI.class)
160 public abstract SystemUI bindPipUI(PipUI sysui);
161
Fabian Kozynskiff5e91f2019-09-24 15:38:08 -0400162 /** Inject into PowerUI. */
163 @Binds
164 @IntoMap
165 @ClassKey(PowerUI.class)
166 public abstract SystemUI bindPowerUI(PowerUI sysui);
Dave Mankoff898e1bb2019-09-25 17:54:19 -0400167
Dave Mankoffbb9575f2019-10-02 12:23:49 -0400168 /** Inject into Recents. */
Dave Mankoff898e1bb2019-09-25 17:54:19 -0400169 @Binds
170 @IntoMap
171 @ClassKey(Recents.class)
172 public abstract SystemUI bindRecents(Recents sysui);
Robert Snoeberger81d76152019-09-30 15:43:34 -0400173
Dave Mankoff4ddc25b2019-10-23 15:46:08 -0400174 /** Inject into ScreenDecorations. */
175 @Binds
176 @IntoMap
177 @ClassKey(ScreenDecorations.class)
178 public abstract SystemUI bindScreenDecorations(ScreenDecorations sysui);
Dave Mankoff7abd1022019-10-23 15:18:49 -0400179
Dave Mankoffbcaca8a2019-10-31 18:04:08 -0400180 /** Inject into SizeCompatModeActivityController. */
181 @Binds
182 @IntoMap
183 @ClassKey(SizeCompatModeActivityController.class)
184 public abstract SystemUI bindsSizeCompatModeActivityController(
185 SizeCompatModeActivityController sysui);
186
Dave Mankoffae8ec452019-10-29 15:50:02 -0400187 /** Inject into StatusBar. */
188 @Binds
189 @IntoMap
190 @ClassKey(StatusBar.class)
191 public abstract SystemUI bindsStatusBar(StatusBar sysui);
192
Dave Mankoffbcaca8a2019-10-31 18:04:08 -0400193 /** Inject into TvStatusBar. */
194 @Binds
195 @IntoMap
196 @ClassKey(TvStatusBar.class)
197 public abstract SystemUI bindsTvStatusBar(TvStatusBar sysui);
198
Dave Mankoff33174bc2019-10-10 14:57:02 -0400199 /** Inject into VolumeUI. */
200 @Binds
201 @IntoMap
202 @ClassKey(VolumeUI.class)
203 public abstract SystemUI bindVolumeUI(VolumeUI sysui);
204
Dave Mankoffa7ca1572019-10-23 17:09:17 -0400205 /**
206 * Provides our instance of StatusBar which is considered optional.
207 */
208 @Provides
209 @Singleton
210 static StatusBar provideStatusBar(
211 Context context,
212 FeatureFlags featureFlags,
213 LightBarController lightBarController,
214 AutoHideController autoHideController,
215 KeyguardUpdateMonitor keyguardUpdateMonitor,
216 StatusBarIconController statusBarIconController,
217 DozeLog dozeLog,
218 InjectionInflationController injectionInflationController,
219 PulseExpansionHandler pulseExpansionHandler,
220 NotificationWakeUpCoordinator notificationWakeUpCoordinator,
221 KeyguardBypassController keyguardBypassController,
222 KeyguardStateController keyguardStateController,
223 HeadsUpManagerPhone headsUpManagerPhone,
224 DynamicPrivacyController dynamicPrivacyController,
225 BypassHeadsUpNotifier bypassHeadsUpNotifier,
226 @Named(ALLOW_NOTIFICATION_LONG_PRESS_NAME) boolean allowNotificationLongPress,
227 Lazy<NewNotifPipeline> newNotifPipeline,
228 FalsingManager falsingManager,
229 BroadcastDispatcher broadcastDispatcher,
230 RemoteInputQuickSettingsDisabler remoteInputQuickSettingsDisabler,
231 NotificationGutsManager notificationGutsManager,
232 NotificationLogger notificationLogger,
233 NotificationEntryManager notificationEntryManager,
234 NotificationInterruptionStateProvider notificationInterruptionStateProvider,
235 NotificationViewHierarchyManager notificationViewHierarchyManager,
236 ForegroundServiceController foregroundServiceController,
237 AppOpsController appOpsController,
238 KeyguardViewMediator keyguardViewMediator,
239 ZenModeController zenModeController,
240 NotificationAlertingManager notificationAlertingManager,
241 DisplayMetrics displayMetrics,
242 MetricsLogger metricsLogger,
243 UiOffloadThread uiOffloadThread,
244 NotificationMediaManager notificationMediaManager,
245 NotificationLockscreenUserManager lockScreenUserManager,
246 NotificationRemoteInputManager remoteInputManager,
247 UserSwitcherController userSwitcherController,
248 NetworkController networkController,
249 BatteryController batteryController,
250 SysuiColorExtractor colorExtractor,
251 ScreenLifecycle screenLifecycle,
252 WakefulnessLifecycle wakefulnessLifecycle,
253 SysuiStatusBarStateController statusBarStateController,
254 VibratorHelper vibratorHelper,
255 BubbleController bubbleController,
256 NotificationGroupManager groupManager,
257 NotificationGroupAlertTransferHelper groupAlertTransferHelper,
258 VisualStabilityManager visualStabilityManager,
259 DeviceProvisionedController deviceProvisionedController,
260 NavigationBarController navigationBarController,
261 AssistManager assistManager,
262 NotificationListener notificationListener,
263 ConfigurationController configurationController,
264 StatusBarWindowController statusBarWindowController,
265 StatusBarWindowViewController.Builder statusBarWindowViewControllerBuilder,
266 NotifLog notifLog,
267 DozeParameters dozeParameters,
268 ScrimController scrimController,
Lucas Dupin64171fe2019-10-30 14:28:29 -0700269 @Nullable KeyguardLiftController keyguardLiftController,
Dave Mankoffa7ca1572019-10-23 17:09:17 -0400270 Lazy<LockscreenWallpaper> lockscreenWallpaperLazy,
271 Lazy<BiometricUnlockController> biometricUnlockControllerLazy,
272 DozeServiceHost dozeServiceHost,
273 PowerManager powerManager,
Dave Mankoffbcaca8a2019-10-31 18:04:08 -0400274 DozeScrimController dozeScrimController,
Dave Mankoff2e484922019-10-31 12:25:08 -0400275 CommandQueue commandQueue,
276 PluginManager pluginManager) {
Dave Mankoffa7ca1572019-10-23 17:09:17 -0400277 return new StatusBar(
278 context,
279 featureFlags,
280 lightBarController,
281 autoHideController,
282 keyguardUpdateMonitor,
283 statusBarIconController,
284 dozeLog,
285 injectionInflationController,
286 pulseExpansionHandler,
287 notificationWakeUpCoordinator,
288 keyguardBypassController,
289 keyguardStateController,
290 headsUpManagerPhone,
291 dynamicPrivacyController,
292 bypassHeadsUpNotifier,
293 allowNotificationLongPress,
294 newNotifPipeline,
295 falsingManager,
296 broadcastDispatcher,
297 remoteInputQuickSettingsDisabler,
298 notificationGutsManager,
299 notificationLogger,
300 notificationEntryManager,
301 notificationInterruptionStateProvider,
302 notificationViewHierarchyManager,
303 foregroundServiceController,
304 appOpsController,
305 keyguardViewMediator,
306 zenModeController,
307 notificationAlertingManager,
308 displayMetrics,
309 metricsLogger,
310 uiOffloadThread,
311 notificationMediaManager,
312 lockScreenUserManager,
313 remoteInputManager,
314 userSwitcherController,
315 networkController,
316 batteryController,
317 colorExtractor,
318 screenLifecycle,
319 wakefulnessLifecycle,
320 statusBarStateController,
321 vibratorHelper,
322 bubbleController,
323 groupManager,
324 groupAlertTransferHelper,
325 visualStabilityManager,
326 deviceProvisionedController,
327 navigationBarController,
328 assistManager,
329 notificationListener,
330 configurationController,
331 statusBarWindowController,
332 statusBarWindowViewControllerBuilder,
333 notifLog,
334 dozeParameters,
335 scrimController,
Lucas Dupin64171fe2019-10-30 14:28:29 -0700336 keyguardLiftController,
Dave Mankoffa7ca1572019-10-23 17:09:17 -0400337 lockscreenWallpaperLazy,
338 biometricUnlockControllerLazy,
339 dozeServiceHost,
340 powerManager,
Dave Mankoffbcaca8a2019-10-31 18:04:08 -0400341 dozeScrimController,
Dave Mankoff2e484922019-10-31 12:25:08 -0400342 commandQueue,
343 pluginManager);
Dave Mankoffa7ca1572019-10-23 17:09:17 -0400344 }
345
Dave Mankoffaa8b7ae2019-09-04 18:03:21 -0400346}