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