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