1 /* 2 * Copyright (C) 2019 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; 18 19 import com.android.systemui.accessibility.SystemActions; 20 import com.android.systemui.biometrics.AuthController; 21 import com.android.systemui.car.cluster.ClusterDisplayController; 22 import com.android.systemui.car.notification.CarNotificationModule; 23 import com.android.systemui.car.sideloaded.SideLoadedAppController; 24 import com.android.systemui.car.statusicon.ui.QuickControlsEntryPointsModule; 25 import com.android.systemui.car.systembar.CarSystemBar; 26 import com.android.systemui.car.toast.CarToastUI; 27 import com.android.systemui.car.voicerecognition.ConnectedDeviceVoiceRecognitionNotifier; 28 import com.android.systemui.car.volume.VolumeUI; 29 import com.android.systemui.car.window.OverlayWindowModule; 30 import com.android.systemui.car.window.SystemUIOverlayWindowManager; 31 import com.android.systemui.globalactions.GlobalActionsComponent; 32 import com.android.systemui.keyguard.KeyguardViewMediator; 33 import com.android.systemui.keyguard.dagger.KeyguardModule; 34 import com.android.systemui.power.PowerUI; 35 import com.android.systemui.recents.Recents; 36 import com.android.systemui.recents.RecentsModule; 37 import com.android.systemui.shortcut.ShortcutKeyDispatcher; 38 import com.android.systemui.statusbar.dagger.StatusBarModule; 39 import com.android.systemui.statusbar.notification.InstantAppNotifier; 40 import com.android.systemui.statusbar.notification.dagger.NotificationsModule; 41 import com.android.systemui.statusbar.phone.StatusBar; 42 import com.android.systemui.theme.ThemeOverlayController; 43 import com.android.systemui.util.leak.GarbageMonitor; 44 import com.android.systemui.wmshell.WMShell; 45 46 import dagger.Binds; 47 import dagger.Module; 48 import dagger.multibindings.ClassKey; 49 import dagger.multibindings.IntoMap; 50 51 /** Binder for car specific {@link SystemUI} modules. */ 52 @Module(includes = {RecentsModule.class, StatusBarModule.class, NotificationsModule.class, 53 KeyguardModule.class, OverlayWindowModule.class, CarNotificationModule.class, 54 QuickControlsEntryPointsModule.class}) 55 public abstract class CarSystemUIBinder { 56 /** Inject into AuthController. */ 57 @Binds 58 @IntoMap 59 @ClassKey(AuthController.class) bindAuthController(AuthController sysui)60 public abstract SystemUI bindAuthController(AuthController sysui); 61 62 /** Inject Car Navigation Bar. */ 63 @Binds 64 @IntoMap 65 @ClassKey(CarSystemBar.class) bindCarSystemBar(CarSystemBar sysui)66 public abstract SystemUI bindCarSystemBar(CarSystemBar sysui); 67 68 /** Inject into GarbageMonitor.Service. */ 69 @Binds 70 @IntoMap 71 @ClassKey(GarbageMonitor.Service.class) bindGarbageMonitorService(GarbageMonitor.Service sysui)72 public abstract SystemUI bindGarbageMonitorService(GarbageMonitor.Service sysui); 73 74 /** Inject into GlobalActionsComponent. */ 75 @Binds 76 @IntoMap 77 @ClassKey(GlobalActionsComponent.class) bindGlobalActionsComponent(GlobalActionsComponent sysui)78 public abstract SystemUI bindGlobalActionsComponent(GlobalActionsComponent sysui); 79 80 /** Inject into InstantAppNotifier. */ 81 @Binds 82 @IntoMap 83 @ClassKey(InstantAppNotifier.class) bindInstantAppNotifier(InstantAppNotifier sysui)84 public abstract SystemUI bindInstantAppNotifier(InstantAppNotifier sysui); 85 86 /** Inject into KeyguardViewMediator. */ 87 @Binds 88 @IntoMap 89 @ClassKey(KeyguardViewMediator.class) bindKeyguardViewMediator(KeyguardViewMediator sysui)90 public abstract SystemUI bindKeyguardViewMediator(KeyguardViewMediator sysui); 91 92 /** Inject into LatencyTests. */ 93 @Binds 94 @IntoMap 95 @ClassKey(LatencyTester.class) bindLatencyTester(LatencyTester sysui)96 public abstract SystemUI bindLatencyTester(LatencyTester sysui); 97 98 /** Inject into PowerUI. */ 99 @Binds 100 @IntoMap 101 @ClassKey(PowerUI.class) bindPowerUI(PowerUI sysui)102 public abstract SystemUI bindPowerUI(PowerUI sysui); 103 104 /** Inject into Recents. */ 105 @Binds 106 @IntoMap 107 @ClassKey(Recents.class) bindRecents(Recents sysui)108 public abstract SystemUI bindRecents(Recents sysui); 109 110 /** Inject into ScreenDecorations. */ 111 @Binds 112 @IntoMap 113 @ClassKey(ScreenDecorations.class) bindScreenDecorations(ScreenDecorations sysui)114 public abstract SystemUI bindScreenDecorations(ScreenDecorations sysui); 115 116 /** Inject into ShortcutKeyDispatcher. */ 117 @Binds 118 @IntoMap 119 @ClassKey(ShortcutKeyDispatcher.class) bindsShortcutKeyDispatcher(ShortcutKeyDispatcher sysui)120 public abstract SystemUI bindsShortcutKeyDispatcher(ShortcutKeyDispatcher sysui); 121 122 /** Inject into SliceBroadcastRelayHandler. */ 123 @Binds 124 @IntoMap 125 @ClassKey(SliceBroadcastRelayHandler.class) bindSliceBroadcastRelayHandler(SliceBroadcastRelayHandler sysui)126 public abstract SystemUI bindSliceBroadcastRelayHandler(SliceBroadcastRelayHandler sysui); 127 128 /** Inject into ThemeOverlayController. */ 129 @Binds 130 @IntoMap 131 @ClassKey(ThemeOverlayController.class) bindThemeOverlayController(ThemeOverlayController sysui)132 public abstract SystemUI bindThemeOverlayController(ThemeOverlayController sysui); 133 134 /** Inject into StatusBar. */ 135 @Binds 136 @IntoMap 137 @ClassKey(StatusBar.class) bindsStatusBar(StatusBar sysui)138 public abstract SystemUI bindsStatusBar(StatusBar sysui); 139 140 /** Inject into SystemActions. */ 141 @Binds 142 @IntoMap 143 @ClassKey(SystemActions.class) bindSystemActions(SystemActions sysui)144 public abstract SystemUI bindSystemActions(SystemActions sysui); 145 146 /** Inject into VolumeUI. */ 147 @Binds 148 @IntoMap 149 @ClassKey(VolumeUI.class) bindVolumeUI(VolumeUI sysui)150 public abstract SystemUI bindVolumeUI(VolumeUI sysui); 151 152 /** Inject into CarToastUI. */ 153 @Binds 154 @IntoMap 155 @ClassKey(CarToastUI.class) bindCarToastUI(CarToastUI service)156 public abstract SystemUI bindCarToastUI(CarToastUI service); 157 158 /** Inject into ConnectedDeviceVoiceRecognitionNotifier. */ 159 @Binds 160 @IntoMap 161 @ClassKey(ConnectedDeviceVoiceRecognitionNotifier.class) bindConnectedDeviceVoiceRecognitionNotifier( ConnectedDeviceVoiceRecognitionNotifier sysui)162 public abstract SystemUI bindConnectedDeviceVoiceRecognitionNotifier( 163 ConnectedDeviceVoiceRecognitionNotifier sysui); 164 165 /** Inject into SystemUIOverlayWindowManager. */ 166 @Binds 167 @IntoMap 168 @ClassKey(SystemUIOverlayWindowManager.class) bindSystemUIPrimaryWindowManager(SystemUIOverlayWindowManager sysui)169 public abstract SystemUI bindSystemUIPrimaryWindowManager(SystemUIOverlayWindowManager sysui); 170 171 /** Inject into SideLoadedAppController. */ 172 @Binds 173 @IntoMap 174 @ClassKey(SideLoadedAppController.class) bindSideLoadedAppController(SideLoadedAppController sysui)175 public abstract SystemUI bindSideLoadedAppController(SideLoadedAppController sysui); 176 177 /** Inject into WMShell. */ 178 @Binds 179 @IntoMap 180 @ClassKey(WMShell.class) bindWMShell(WMShell sysui)181 public abstract SystemUI bindWMShell(WMShell sysui); 182 183 /** Inject into ClusterDisplayController. */ 184 @Binds 185 @IntoMap 186 @ClassKey(ClusterDisplayController.class) bindClusterDisplayController(ClusterDisplayController sysui)187 public abstract SystemUI bindClusterDisplayController(ClusterDisplayController sysui); 188 } 189