1 /* 2 * Copyright (C) 2022 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.go; 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.clipboardoverlay.ClipboardListener; 28 import com.android.systemui.dagger.qualifiers.PerUser; 29 import com.android.systemui.globalactions.GlobalActionsComponent; 30 import com.android.systemui.keyboard.KeyboardUI; 31 import com.android.systemui.keyguard.KeyguardViewMediator; 32 import com.android.systemui.log.SessionTracker; 33 import com.android.systemui.media.RingtonePlayer; 34 import com.android.systemui.power.PowerUI; 35 import com.android.systemui.recents.Recents; 36 import com.android.systemui.shortcut.ShortcutKeyDispatcher; 37 import com.android.systemui.statusbar.notification.InstantAppNotifier; 38 import com.android.systemui.theme.ThemeOverlayController; 39 import com.android.systemui.toast.ToastUI; 40 import com.android.systemui.usb.StorageNotification; 41 import com.android.systemui.util.NotificationChannels; 42 import com.android.systemui.volume.VolumeUI; 43 import com.android.systemui.wmshell.WMShell; 44 45 import dagger.Binds; 46 import dagger.Module; 47 import dagger.multibindings.ClassKey; 48 import dagger.multibindings.IntoMap; 49 50 /** 51 * Collection of {@link CoreStartable}s that should be run on Android Go. This is forked from 52 * {@link com.android.systemui.dagger.SystemUICoreStartableModule}. 53 */ 54 @Module 55 abstract class SystemUIGoCoreStartableModule { 56 /** Inject into AuthController. */ 57 @Binds 58 @IntoMap 59 @ClassKey(AuthController.class) bindAuthController(AuthController authController)60 abstract CoreStartable bindAuthController(AuthController authController); 61 62 /** Inject into ClipboardListener. */ 63 @Binds 64 @IntoMap 65 @ClassKey(ClipboardListener.class) bindClipboardListener(ClipboardListener clipboardListener)66 abstract CoreStartable bindClipboardListener(ClipboardListener clipboardListener); 67 68 /** Inject into GlobalActionsComponent. */ 69 @Binds 70 @IntoMap 71 @ClassKey(GlobalActionsComponent.class) bindGlobalActionsComponent( GlobalActionsComponent globalActionsComponent)72 abstract CoreStartable bindGlobalActionsComponent( 73 GlobalActionsComponent globalActionsComponent); 74 75 /** Inject into InstantAppNotifier. */ 76 @Binds 77 @IntoMap 78 @ClassKey(InstantAppNotifier.class) bindInstantAppNotifier(InstantAppNotifier instantAppNotifier)79 abstract CoreStartable bindInstantAppNotifier(InstantAppNotifier instantAppNotifier); 80 81 /** Inject into KeyboardUI. */ 82 @Binds 83 @IntoMap 84 @ClassKey(KeyboardUI.class) bindKeyboardUI(KeyboardUI keyboardUI)85 abstract CoreStartable bindKeyboardUI(KeyboardUI keyboardUI); 86 87 /** Inject into KeyguardBiometricLockoutLogger */ 88 @Binds 89 @IntoMap 90 @ClassKey(KeyguardBiometricLockoutLogger.class) bindKeyguardBiometricLockoutLogger( KeyguardBiometricLockoutLogger keyguardBiometricLockoutLogger)91 abstract CoreStartable bindKeyguardBiometricLockoutLogger( 92 KeyguardBiometricLockoutLogger keyguardBiometricLockoutLogger); 93 94 /** Inject into KeyguardViewMediator. */ 95 @Binds 96 @IntoMap 97 @ClassKey(KeyguardViewMediator.class) bindKeyguardViewMediator(KeyguardViewMediator keyguardViewMediator)98 abstract CoreStartable bindKeyguardViewMediator(KeyguardViewMediator keyguardViewMediator); 99 100 /** Inject into LatencyTests. */ 101 @Binds 102 @IntoMap 103 @ClassKey(LatencyTester.class) bindLatencyTester(LatencyTester latencyTester)104 abstract CoreStartable bindLatencyTester(LatencyTester latencyTester); 105 106 /** Inject into NotificationChannels. */ 107 @Binds 108 @IntoMap 109 @ClassKey(NotificationChannels.class) 110 @PerUser bindNotificationChannels(NotificationChannels notificationChannels)111 abstract CoreStartable bindNotificationChannels(NotificationChannels notificationChannels); 112 113 /** Inject into PowerUI. */ 114 @Binds 115 @IntoMap 116 @ClassKey(PowerUI.class) bindPowerUI(PowerUI powerUI)117 abstract CoreStartable bindPowerUI(PowerUI powerUI); 118 119 /** Inject into Recents. */ 120 @Binds 121 @IntoMap 122 @ClassKey(Recents.class) bindRecents(Recents recents)123 abstract CoreStartable bindRecents(Recents recents); 124 125 /** Inject into RingtonePlayer. */ 126 @Binds 127 @IntoMap 128 @ClassKey(RingtonePlayer.class) bind(RingtonePlayer ringtonePlayer)129 abstract CoreStartable bind(RingtonePlayer ringtonePlayer); 130 131 /** Inject into ScreenDecorations. */ 132 @Binds 133 @IntoMap 134 @ClassKey(ScreenDecorations.class) bindScreenDecorations(ScreenDecorations screenDecorations)135 abstract CoreStartable bindScreenDecorations(ScreenDecorations screenDecorations); 136 137 /** Inject into SessionTracker. */ 138 @Binds 139 @IntoMap 140 @ClassKey(SessionTracker.class) bindSessionTracker(SessionTracker service)141 abstract CoreStartable bindSessionTracker(SessionTracker service); 142 143 /** Inject into ShortcutKeyDispatcher. */ 144 @Binds 145 @IntoMap 146 @ClassKey(ShortcutKeyDispatcher.class) bindShortcutKeyDispatcher(ShortcutKeyDispatcher shortcutKeyDispatcher)147 abstract CoreStartable bindShortcutKeyDispatcher(ShortcutKeyDispatcher shortcutKeyDispatcher); 148 149 /** Inject into SliceBroadcastRelayHandler. */ 150 @Binds 151 @IntoMap 152 @ClassKey(SliceBroadcastRelayHandler.class) bindSliceBroadcastRelayHandler( SliceBroadcastRelayHandler sliceBroadcastRelayHandler)153 abstract CoreStartable bindSliceBroadcastRelayHandler( 154 SliceBroadcastRelayHandler sliceBroadcastRelayHandler); 155 156 /** Inject into StorageNotification. */ 157 @Binds 158 @IntoMap 159 @ClassKey(StorageNotification.class) bindStorageNotification(StorageNotification storageNotification)160 abstract CoreStartable bindStorageNotification(StorageNotification storageNotification); 161 162 /** Inject into SystemActions. */ 163 @Binds 164 @IntoMap 165 @ClassKey(SystemActions.class) bindSystemActions(SystemActions systemActions)166 abstract CoreStartable bindSystemActions(SystemActions systemActions); 167 168 /** Inject into ThemeOverlayController. */ 169 @Binds 170 @IntoMap 171 @ClassKey(ThemeOverlayController.class) bindThemeOverlayController( ThemeOverlayController themeOverlayController)172 abstract CoreStartable bindThemeOverlayController( 173 ThemeOverlayController themeOverlayController); 174 175 /** Inject into ToastUI. */ 176 @Binds 177 @IntoMap 178 @ClassKey(ToastUI.class) bindToastUI(ToastUI toastUi)179 abstract CoreStartable bindToastUI(ToastUI toastUi); 180 181 /** Inject into VolumeUI. */ 182 @Binds 183 @IntoMap 184 @ClassKey(VolumeUI.class) bindVolumeUI(VolumeUI volumeUi)185 abstract CoreStartable bindVolumeUI(VolumeUI volumeUi); 186 187 /** Inject into WindowMagnification. */ 188 @Binds 189 @IntoMap 190 @ClassKey(WindowMagnification.class) bindWindowMagnification(WindowMagnification windowMagnification)191 abstract CoreStartable bindWindowMagnification(WindowMagnification windowMagnification); 192 193 /** Inject into WMShell. */ 194 @Binds 195 @IntoMap 196 @ClassKey(WMShell.class) bindWMShell(WMShell wmShell)197 abstract CoreStartable bindWMShell(WMShell wmShell); 198 } 199