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