• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2021 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.dagger
18 
19 import com.android.keyguard.KeyguardBiometricLockoutLogger
20 import com.android.systemui.CoreStartable
21 import com.android.systemui.Flags.unfoldLatencyTrackingFix
22 import com.android.systemui.LatencyTester
23 import com.android.systemui.SliceBroadcastRelayHandler
24 import com.android.systemui.accessibility.Magnification
25 import com.android.systemui.back.domain.interactor.BackActionInteractor
26 import com.android.systemui.biometrics.BiometricNotificationService
27 import com.android.systemui.bouncer.domain.startable.BouncerStartable
28 import com.android.systemui.clipboardoverlay.ClipboardListener
29 import com.android.systemui.complication.ComplicationTypesUpdater
30 import com.android.systemui.complication.DreamClockTimeComplication
31 import com.android.systemui.controls.dagger.StartControlsStartableModule
32 import com.android.systemui.dagger.qualifiers.PerUser
33 import com.android.systemui.dreams.AssistantAttentionMonitor
34 import com.android.systemui.dreams.DreamMonitor
35 import com.android.systemui.dreams.DreamOverlayRegistrant
36 import com.android.systemui.dreams.homecontrols.system.HomeControlsDreamStartable
37 import com.android.systemui.globalactions.GlobalActionsComponent
38 import com.android.systemui.haptics.msdl.MSDLCoreStartable
39 import com.android.systemui.keyboard.KeyboardUI
40 import com.android.systemui.keyboard.PhysicalKeyboardCoreStartable
41 import com.android.systemui.keyguard.KeyguardViewConfigurator
42 import com.android.systemui.keyguard.KeyguardViewMediator
43 import com.android.systemui.keyguard.data.quickaffordance.MuteQuickAffordanceCoreStartable
44 import com.android.systemui.keyguard.ui.binder.KeyguardDismissActionBinder
45 import com.android.systemui.keyguard.ui.binder.KeyguardDismissBinder
46 import com.android.systemui.log.SessionTracker
47 import com.android.systemui.media.RingtonePlayer
48 import com.android.systemui.media.dialog.MediaOutputSwitcherDialogUI
49 import com.android.systemui.media.taptotransfer.MediaTttCommandLineHelper
50 import com.android.systemui.media.taptotransfer.receiver.MediaTttChipControllerReceiver
51 import com.android.systemui.media.taptotransfer.sender.MediaTttSenderCoordinator
52 import com.android.systemui.mediaprojection.taskswitcher.MediaProjectionTaskSwitcherCoreStartable
53 import com.android.systemui.settings.MultiUserUtilsModule
54 import com.android.systemui.shortcut.ShortcutKeyDispatcher
55 import com.android.systemui.statusbar.ImmersiveModeConfirmation
56 import com.android.systemui.statusbar.gesture.GesturePointerEventListener
57 import com.android.systemui.statusbar.notification.InstantAppNotifier
58 import com.android.systemui.statusbar.notification.headsup.StatusBarHeadsUpChangeListener
59 import com.android.systemui.statusbar.policy.BatteryControllerStartable
60 import com.android.systemui.stylus.StylusUsiPowerStartable
61 import com.android.systemui.temporarydisplay.chipbar.ChipbarCoordinator
62 import com.android.systemui.theme.ThemeOverlayController
63 import com.android.systemui.unfold.DisplaySwitchLatencyTracker
64 import com.android.systemui.unfold.NoCooldownDisplaySwitchLatencyTracker
65 import com.android.systemui.usb.StorageNotification
66 import com.android.systemui.util.NotificationChannels
67 import com.android.systemui.util.StartBinderLoggerModule
68 import com.android.systemui.wallpapers.dagger.WallpaperModule
69 import com.android.systemui.wmshell.WMShell
70 import dagger.Binds
71 import dagger.Module
72 import dagger.Provides
73 import dagger.multibindings.ClassKey
74 import dagger.multibindings.IntoMap
75 import javax.inject.Provider
76 
77 /**
78  * DEPRECATED: DO NOT ADD THINGS TO THIS FILE.
79  *
80  * Add a feature specific daggger module for what you are working on. Bind your CoreStartable there.
81  * Include that module where it is needed.
82  *
83  * @deprecated
84  */
85 @Module(
86     includes =
87         [
88             MultiUserUtilsModule::class,
89             StartControlsStartableModule::class,
90             StartBinderLoggerModule::class,
91             WallpaperModule::class,
92         ]
93 )
94 abstract class SystemUICoreStartableModule {
95     /** Inject into BiometricNotificationService */
96     @Binds
97     @IntoMap
98     @ClassKey(BiometricNotificationService::class)
bindBiometricNotificationServicenull99     abstract fun bindBiometricNotificationService(
100         service: BiometricNotificationService
101     ): CoreStartable
102 
103     /** Inject into ClipboardListener. */
104     @Binds
105     @IntoMap
106     @ClassKey(ClipboardListener::class)
107     abstract fun bindClipboardListener(sysui: ClipboardListener): CoreStartable
108 
109     /** Inject into GlobalActionsComponent. */
110     @Binds
111     @IntoMap
112     @ClassKey(GlobalActionsComponent::class)
113     abstract fun bindGlobalActionsComponent(sysui: GlobalActionsComponent): CoreStartable
114 
115     /** Inject into InstantAppNotifier. */
116     @Binds
117     @IntoMap
118     @ClassKey(InstantAppNotifier::class)
119     abstract fun bindInstantAppNotifier(sysui: InstantAppNotifier): CoreStartable
120 
121     /** Inject into KeyboardUI. */
122     @Binds
123     @IntoMap
124     @ClassKey(KeyboardUI::class)
125     abstract fun bindKeyboardUI(sysui: KeyboardUI): CoreStartable
126 
127     /** Inject into MediaProjectionTaskSwitcherCoreStartable. */
128     @Binds
129     @IntoMap
130     @ClassKey(MediaProjectionTaskSwitcherCoreStartable::class)
131     abstract fun bindProjectedTaskListener(
132         sysui: MediaProjectionTaskSwitcherCoreStartable
133     ): CoreStartable
134 
135     /** Inject into KeyguardBiometricLockoutLogger */
136     @Binds
137     @IntoMap
138     @ClassKey(KeyguardBiometricLockoutLogger::class)
139     abstract fun bindKeyguardBiometricLockoutLogger(
140         sysui: KeyguardBiometricLockoutLogger
141     ): CoreStartable
142 
143     /** Inject into KeyguardViewMediator. */
144     @Binds
145     @IntoMap
146     @ClassKey(KeyguardViewMediator::class)
147     abstract fun bindKeyguardViewMediator(sysui: KeyguardViewMediator): CoreStartable
148 
149     /** Inject into LatencyTests. */
150     @Binds
151     @IntoMap
152     @ClassKey(LatencyTester::class)
153     abstract fun bindLatencyTester(sysui: LatencyTester): CoreStartable
154 
155     /** Inject into NotificationChannels. */
156     @Binds
157     @IntoMap
158     @ClassKey(NotificationChannels::class)
159     @PerUser
160     abstract fun bindNotificationChannels(sysui: NotificationChannels): CoreStartable
161 
162     /** Inject into ImmersiveModeConfirmation. */
163     @Binds
164     @IntoMap
165     @ClassKey(ImmersiveModeConfirmation::class)
166     abstract fun bindImmersiveModeConfirmation(sysui: ImmersiveModeConfirmation): CoreStartable
167 
168     /** Inject into RingtonePlayer. */
169     @Binds
170     @IntoMap
171     @ClassKey(RingtonePlayer::class)
172     abstract fun bind(sysui: RingtonePlayer): CoreStartable
173 
174     /** Inject into GesturePointerEventHandler. */
175     @Binds
176     @IntoMap
177     @ClassKey(GesturePointerEventListener::class)
178     abstract fun bindGesturePointerEventListener(sysui: GesturePointerEventListener): CoreStartable
179 
180     /** Inject into SessionTracker. */
181     @Binds
182     @IntoMap
183     @ClassKey(SessionTracker::class)
184     abstract fun bindSessionTracker(service: SessionTracker): CoreStartable
185 
186     /** Inject into ShortcutKeyDispatcher. */
187     @Binds
188     @IntoMap
189     @ClassKey(ShortcutKeyDispatcher::class)
190     abstract fun bindShortcutKeyDispatcher(sysui: ShortcutKeyDispatcher): CoreStartable
191 
192     /** Inject into SliceBroadcastRelayHandler. */
193     @Binds
194     @IntoMap
195     @ClassKey(SliceBroadcastRelayHandler::class)
196     abstract fun bindSliceBroadcastRelayHandler(sysui: SliceBroadcastRelayHandler): CoreStartable
197 
198     /** Inject into StorageNotification. */
199     @Binds
200     @IntoMap
201     @ClassKey(StorageNotification::class)
202     abstract fun bindStorageNotification(sysui: StorageNotification): CoreStartable
203 
204     /** Inject into ThemeOverlayController. */
205     @Binds
206     @IntoMap
207     @ClassKey(ThemeOverlayController::class)
208     abstract fun bindThemeOverlayController(sysui: ThemeOverlayController): CoreStartable
209 
210     /** Inject into MediaOutputSwitcherDialogUI. */
211     @Binds
212     @IntoMap
213     @ClassKey(MediaOutputSwitcherDialogUI::class)
214     abstract fun MediaOutputSwitcherDialogUI(sysui: MediaOutputSwitcherDialogUI): CoreStartable
215 
216     /** Inject into Magnification. */
217     @Binds
218     @IntoMap
219     @ClassKey(Magnification::class)
220     abstract fun bindMagnification(sysui: Magnification): CoreStartable
221 
222     /** Inject into WMShell. */
223     @Binds
224     @IntoMap
225     @ClassKey(WMShell::class)
226     abstract fun bindWMShell(sysui: WMShell): CoreStartable
227 
228     /** Inject into MediaTttSenderCoordinator. */
229     @Binds
230     @IntoMap
231     @ClassKey(MediaTttSenderCoordinator::class)
232     abstract fun bindMediaTttSenderCoordinator(sysui: MediaTttSenderCoordinator): CoreStartable
233 
234     /** Inject into MediaTttChipControllerReceiver. */
235     @Binds
236     @IntoMap
237     @ClassKey(MediaTttChipControllerReceiver::class)
238     abstract fun bindMediaTttChipControllerReceiver(
239         sysui: MediaTttChipControllerReceiver
240     ): CoreStartable
241 
242     /** Inject into MediaTttCommandLineHelper. */
243     @Binds
244     @IntoMap
245     @ClassKey(MediaTttCommandLineHelper::class)
246     abstract fun bindMediaTttCommandLineHelper(sysui: MediaTttCommandLineHelper): CoreStartable
247 
248     /** Inject into ChipbarCoordinator. */
249     @Binds
250     @IntoMap
251     @ClassKey(ChipbarCoordinator::class)
252     abstract fun bindChipbarController(sysui: ChipbarCoordinator): CoreStartable
253 
254     /** Inject into StylusUsiPowerStartable) */
255     @Binds
256     @IntoMap
257     @ClassKey(StylusUsiPowerStartable::class)
258     abstract fun bindStylusUsiPowerStartable(sysui: StylusUsiPowerStartable): CoreStartable
259 
260     @Binds
261     @IntoMap
262     @ClassKey(PhysicalKeyboardCoreStartable::class)
263     abstract fun bindKeyboardCoreStartable(listener: PhysicalKeyboardCoreStartable): CoreStartable
264 
265     /** Inject into MuteQuickAffordanceCoreStartable */
266     @Binds
267     @IntoMap
268     @ClassKey(MuteQuickAffordanceCoreStartable::class)
269     abstract fun bindMuteQuickAffordanceCoreStartable(
270         sysui: MuteQuickAffordanceCoreStartable
271     ): CoreStartable
272 
273     /** Inject into DreamMonitor */
274     @Binds
275     @IntoMap
276     @ClassKey(DreamMonitor::class)
277     abstract fun bindDreamMonitor(sysui: DreamMonitor): CoreStartable
278 
279     /** Inject into AssistantAttentionMonitor */
280     @Binds
281     @IntoMap
282     @ClassKey(AssistantAttentionMonitor::class)
283     abstract fun bindAssistantAttentionMonitor(sysui: AssistantAttentionMonitor): CoreStartable
284 
285     @Binds
286     @IntoMap
287     @ClassKey(KeyguardViewConfigurator::class)
288     abstract fun bindKeyguardViewConfigurator(impl: KeyguardViewConfigurator): CoreStartable
289 
290     @Binds
291     @IntoMap
292     @ClassKey(StatusBarHeadsUpChangeListener::class)
293     abstract fun bindStatusBarHeadsUpChangeListener(
294         impl: StatusBarHeadsUpChangeListener
295     ): CoreStartable
296 
297     @Binds
298     @IntoMap
299     @ClassKey(BackActionInteractor::class)
300     abstract fun bindBackActionInteractor(impl: BackActionInteractor): CoreStartable
301 
302     @Binds
303     @IntoMap
304     @ClassKey(KeyguardDismissActionBinder::class)
305     abstract fun bindKeyguardDismissActionBinder(impl: KeyguardDismissActionBinder): CoreStartable
306 
307     @Binds
308     @IntoMap
309     @ClassKey(BouncerStartable::class)
310     abstract fun bindBouncerStartable(impl: BouncerStartable): CoreStartable
311 
312     @Binds
313     @IntoMap
314     @ClassKey(KeyguardDismissBinder::class)
315     abstract fun bindKeyguardDismissBinder(impl: KeyguardDismissBinder): CoreStartable
316 
317     @Binds
318     @IntoMap
319     @ClassKey(HomeControlsDreamStartable::class)
320     abstract fun bindHomeControlsDreamStartable(impl: HomeControlsDreamStartable): CoreStartable
321 
322     /** Binds {@link BatteryControllerStartable} as a {@link CoreStartable}. */
323     @Binds
324     @IntoMap
325     @ClassKey(BatteryControllerStartable::class)
326     abstract fun bindsBatteryControllerStartable(impl: BatteryControllerStartable): CoreStartable
327 
328     @Binds
329     @IntoMap
330     @ClassKey(MSDLCoreStartable::class)
331     abstract fun bindMSDLCoreStartable(impl: MSDLCoreStartable): CoreStartable
332 
333     /** Inject into DreamOverlay. */
334     @Binds
335     @IntoMap
336     @ClassKey(DreamOverlayRegistrant::class)
337     abstract fun bindDreamOverlayRegistrant(
338         dreamOverlayRegistrant: DreamOverlayRegistrant
339     ): CoreStartable
340 
341     /** Inject into DreamClockTimeComplication.Registrant */
342     @Binds
343     @IntoMap
344     @ClassKey(DreamClockTimeComplication.Registrant::class)
345     abstract fun bindDreamClockTimeComplicationRegistrant(
346         registrant: DreamClockTimeComplication.Registrant
347     ): CoreStartable
348 
349     /** Inject into ComplicationTypesUpdater. */
350     @Binds
351     @IntoMap
352     @ClassKey(ComplicationTypesUpdater::class)
353     abstract fun bindComplicationTypesUpdater(updater: ComplicationTypesUpdater): CoreStartable
354 
355     companion object {
356         @Provides
357         @IntoMap
358         @ClassKey(DisplaySwitchLatencyTracker::class)
359         fun provideDisplaySwitchLatencyTracker(
360             noCoolDownVariant: Provider<NoCooldownDisplaySwitchLatencyTracker>,
361             coolDownVariant: Provider<DisplaySwitchLatencyTracker>,
362         ): CoreStartable =
363             if (unfoldLatencyTrackingFix()) coolDownVariant.get() else noCoolDownVariant.get()
364     }
365 }
366