• 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.ChooserSelector
21 import com.android.systemui.CoreStartable
22 import com.android.systemui.LatencyTester
23 import com.android.systemui.ScreenDecorations
24 import com.android.systemui.SliceBroadcastRelayHandler
25 import com.android.systemui.accessibility.SystemActions
26 import com.android.systemui.accessibility.WindowMagnification
27 import com.android.systemui.biometrics.AuthController
28 import com.android.systemui.clipboardoverlay.ClipboardListener
29 import com.android.systemui.controls.dagger.StartControlsStartableModule
30 import com.android.systemui.dagger.qualifiers.PerUser
31 import com.android.systemui.dreams.DreamMonitor
32 import com.android.systemui.globalactions.GlobalActionsComponent
33 import com.android.systemui.keyboard.PhysicalKeyboardCoreStartable
34 import com.android.systemui.keyboard.KeyboardUI
35 import com.android.systemui.keyguard.KeyguardViewMediator
36 import com.android.systemui.keyguard.data.quickaffordance.MuteQuickAffordanceCoreStartable
37 import com.android.systemui.log.SessionTracker
38 import com.android.systemui.media.dialog.MediaOutputSwitcherDialogUI
39 import com.android.systemui.media.RingtonePlayer
40 import com.android.systemui.media.taptotransfer.MediaTttCommandLineHelper
41 import com.android.systemui.media.taptotransfer.receiver.MediaTttChipControllerReceiver
42 import com.android.systemui.media.taptotransfer.sender.MediaTttSenderCoordinator
43 import com.android.systemui.power.PowerUI
44 import com.android.systemui.reardisplay.RearDisplayDialogController
45 import com.android.systemui.recents.Recents
46 import com.android.systemui.settings.dagger.MultiUserUtilsModule
47 import com.android.systemui.shortcut.ShortcutKeyDispatcher
48 import com.android.systemui.statusbar.notification.fsi.FsiChromeRepo
49 import com.android.systemui.statusbar.notification.InstantAppNotifier
50 import com.android.systemui.statusbar.notification.fsi.FsiChromeViewModelFactory
51 import com.android.systemui.statusbar.notification.fsi.FsiChromeViewBinder
52 import com.android.systemui.statusbar.phone.KeyguardLiftController
53 import com.android.systemui.stylus.StylusUsiPowerStartable
54 import com.android.systemui.temporarydisplay.chipbar.ChipbarCoordinator
55 import com.android.systemui.theme.ThemeOverlayController
56 import com.android.systemui.toast.ToastUI
57 import com.android.systemui.usb.StorageNotification
58 import com.android.systemui.util.NotificationChannels
59 import com.android.systemui.volume.VolumeUI
60 import com.android.systemui.wmshell.WMShell
61 import dagger.Binds
62 import dagger.Module
63 import dagger.multibindings.ClassKey
64 import dagger.multibindings.IntoMap
65 
66 /**
67  * Collection of {@link CoreStartable}s that should be run on AOSP.
68  */
69 @Module(includes = [
70     MultiUserUtilsModule::class,
71     StartControlsStartableModule::class
72 ])
73 abstract class SystemUICoreStartableModule {
74     /** Inject into AuthController.  */
75     @Binds
76     @IntoMap
77     @ClassKey(AuthController::class)
bindAuthControllernull78     abstract fun bindAuthController(service: AuthController): CoreStartable
79 
80     /** Inject into ChooserCoreStartable. */
81     @Binds
82     @IntoMap
83     @ClassKey(ChooserSelector::class)
84     abstract fun bindChooserSelector(sysui: ChooserSelector): CoreStartable
85 
86     /** Inject into ClipboardListener.  */
87     @Binds
88     @IntoMap
89     @ClassKey(ClipboardListener::class)
90     abstract fun bindClipboardListener(sysui: ClipboardListener): CoreStartable
91 
92     /** Inject into FsiChromeRepo.  */
93     @Binds
94     @IntoMap
95     @ClassKey(FsiChromeRepo::class)
96     abstract fun bindFSIChromeRepo(sysui: FsiChromeRepo): CoreStartable
97 
98     /** Inject into FsiChromeWindowViewModel.  */
99     @Binds
100     @IntoMap
101     @ClassKey(FsiChromeViewModelFactory::class)
102     abstract fun bindFSIChromeWindowViewModel(sysui: FsiChromeViewModelFactory): CoreStartable
103 
104     /** Inject into FsiChromeWindowBinder.  */
105     @Binds
106     @IntoMap
107     @ClassKey(FsiChromeViewBinder::class)
108     abstract fun bindFsiChromeWindowBinder(sysui: FsiChromeViewBinder): CoreStartable
109 
110     /** Inject into GlobalActionsComponent.  */
111     @Binds
112     @IntoMap
113     @ClassKey(GlobalActionsComponent::class)
114     abstract fun bindGlobalActionsComponent(sysui: GlobalActionsComponent): CoreStartable
115 
116     /** Inject into InstantAppNotifier.  */
117     @Binds
118     @IntoMap
119     @ClassKey(InstantAppNotifier::class)
120     abstract fun bindInstantAppNotifier(sysui: InstantAppNotifier): CoreStartable
121 
122     /** Inject into KeyboardUI.  */
123     @Binds
124     @IntoMap
125     @ClassKey(KeyboardUI::class)
126     abstract fun bindKeyboardUI(sysui: KeyboardUI): CoreStartable
127 
128     /** Inject into KeyguardBiometricLockoutLogger */
129     @Binds
130     @IntoMap
131     @ClassKey(KeyguardBiometricLockoutLogger::class)
132     abstract fun bindKeyguardBiometricLockoutLogger(
133         sysui: KeyguardBiometricLockoutLogger
134     ): CoreStartable
135 
136     /** Inject into KeyguardViewMediator.  */
137     @Binds
138     @IntoMap
139     @ClassKey(KeyguardViewMediator::class)
140     abstract fun bindKeyguardViewMediator(sysui: KeyguardViewMediator): CoreStartable
141 
142     /** Inject into LatencyTests.  */
143     @Binds
144     @IntoMap
145     @ClassKey(LatencyTester::class)
146     abstract fun bindLatencyTester(sysui: LatencyTester): CoreStartable
147 
148     /** Inject into NotificationChannels.  */
149     @Binds
150     @IntoMap
151     @ClassKey(NotificationChannels::class)
152     @PerUser
153     abstract fun bindNotificationChannels(sysui: NotificationChannels): CoreStartable
154 
155     /** Inject into PowerUI.  */
156     @Binds
157     @IntoMap
158     @ClassKey(PowerUI::class)
159     abstract fun bindPowerUI(sysui: PowerUI): CoreStartable
160 
161     /** Inject into Recents.  */
162     @Binds
163     @IntoMap
164     @ClassKey(Recents::class)
165     abstract fun bindRecents(sysui: Recents): CoreStartable
166 
167     /** Inject into RingtonePlayer.  */
168     @Binds
169     @IntoMap
170     @ClassKey(RingtonePlayer::class)
171     abstract fun bind(sysui: RingtonePlayer): CoreStartable
172 
173     /** Inject into ScreenDecorations.  */
174     @Binds
175     @IntoMap
176     @ClassKey(ScreenDecorations::class)
177     abstract fun bindScreenDecorations(sysui: ScreenDecorations): CoreStartable
178 
179     /** Inject into SessionTracker.  */
180     @Binds
181     @IntoMap
182     @ClassKey(SessionTracker::class)
183     abstract fun bindSessionTracker(service: SessionTracker): CoreStartable
184 
185     /** Inject into ShortcutKeyDispatcher.  */
186     @Binds
187     @IntoMap
188     @ClassKey(ShortcutKeyDispatcher::class)
189     abstract fun bindShortcutKeyDispatcher(sysui: ShortcutKeyDispatcher): CoreStartable
190 
191     /** Inject into SliceBroadcastRelayHandler.  */
192     @Binds
193     @IntoMap
194     @ClassKey(SliceBroadcastRelayHandler::class)
195     abstract fun bindSliceBroadcastRelayHandler(sysui: SliceBroadcastRelayHandler): CoreStartable
196 
197     /** Inject into StorageNotification.  */
198     @Binds
199     @IntoMap
200     @ClassKey(StorageNotification::class)
201     abstract fun bindStorageNotification(sysui: StorageNotification): CoreStartable
202 
203     /** Inject into SystemActions.  */
204     @Binds
205     @IntoMap
206     @ClassKey(SystemActions::class)
207     abstract fun bindSystemActions(sysui: SystemActions): CoreStartable
208 
209     /** Inject into ThemeOverlayController.  */
210     @Binds
211     @IntoMap
212     @ClassKey(ThemeOverlayController::class)
213     abstract fun bindThemeOverlayController(sysui: ThemeOverlayController): CoreStartable
214 
215     /** Inject into ToastUI.  */
216     @Binds
217     @IntoMap
218     @ClassKey(ToastUI::class)
219     abstract fun bindToastUI(service: ToastUI): CoreStartable
220 
221     /** Inject into MediaOutputSwitcherDialogUI.  */
222     @Binds
223     @IntoMap
224     @ClassKey(MediaOutputSwitcherDialogUI::class)
225     abstract fun MediaOutputSwitcherDialogUI(sysui: MediaOutputSwitcherDialogUI): CoreStartable
226 
227     /** Inject into VolumeUI.  */
228     @Binds
229     @IntoMap
230     @ClassKey(VolumeUI::class)
231     abstract fun bindVolumeUI(sysui: VolumeUI): CoreStartable
232 
233     /** Inject into WindowMagnification.  */
234     @Binds
235     @IntoMap
236     @ClassKey(WindowMagnification::class)
237     abstract fun bindWindowMagnification(sysui: WindowMagnification): CoreStartable
238 
239     /** Inject into WMShell.  */
240     @Binds
241     @IntoMap
242     @ClassKey(WMShell::class)
243     abstract fun bindWMShell(sysui: WMShell): CoreStartable
244 
245     /** Inject into KeyguardLiftController.  */
246     @Binds
247     @IntoMap
248     @ClassKey(KeyguardLiftController::class)
249     abstract fun bindKeyguardLiftController(sysui: KeyguardLiftController): CoreStartable
250 
251     /** Inject into MediaTttSenderCoordinator. */
252     @Binds
253     @IntoMap
254     @ClassKey(MediaTttSenderCoordinator::class)
255     abstract fun bindMediaTttSenderCoordinator(sysui: MediaTttSenderCoordinator): CoreStartable
256 
257     /** Inject into MediaTttChipControllerReceiver. */
258     @Binds
259     @IntoMap
260     @ClassKey(MediaTttChipControllerReceiver::class)
261     abstract fun bindMediaTttChipControllerReceiver(
262             sysui: MediaTttChipControllerReceiver
263     ): CoreStartable
264 
265     /** Inject into MediaTttCommandLineHelper. */
266     @Binds
267     @IntoMap
268     @ClassKey(MediaTttCommandLineHelper::class)
269     abstract fun bindMediaTttCommandLineHelper(sysui: MediaTttCommandLineHelper): CoreStartable
270 
271     /** Inject into ChipbarCoordinator. */
272     @Binds
273     @IntoMap
274     @ClassKey(ChipbarCoordinator::class)
275     abstract fun bindChipbarController(sysui: ChipbarCoordinator): CoreStartable
276 
277 
278     /** Inject into RearDisplayDialogController) */
279     @Binds
280     @IntoMap
281     @ClassKey(RearDisplayDialogController::class)
282     abstract fun bindRearDisplayDialogController(sysui: RearDisplayDialogController): CoreStartable
283 
284     /** Inject into StylusUsiPowerStartable) */
285     @Binds
286     @IntoMap
287     @ClassKey(StylusUsiPowerStartable::class)
288     abstract fun bindStylusUsiPowerStartable(sysui: StylusUsiPowerStartable): CoreStartable
289 
290     @Binds
291     @IntoMap
292     @ClassKey(PhysicalKeyboardCoreStartable::class)
293     abstract fun bindKeyboardCoreStartable(listener: PhysicalKeyboardCoreStartable): CoreStartable
294 
295     /** Inject into MuteQuickAffordanceCoreStartable*/
296     @Binds
297     @IntoMap
298     @ClassKey(MuteQuickAffordanceCoreStartable::class)
299     abstract fun bindMuteQuickAffordanceCoreStartable(
300             sysui: MuteQuickAffordanceCoreStartable
301     ): CoreStartable
302 
303     /**Inject into DreamMonitor */
304     @Binds
305     @IntoMap
306     @ClassKey(DreamMonitor::class)
307     abstract fun bindDreamMonitor(sysui: DreamMonitor): CoreStartable
308 }
309