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.biometrics.AuthController; 20 import com.android.systemui.bubbles.dagger.BubbleModule; 21 import com.android.systemui.car.navigationbar.CarNavigationBar; 22 import com.android.systemui.car.notification.CarNotificationModule; 23 import com.android.systemui.car.sideloaded.SideLoadedAppController; 24 import com.android.systemui.car.statusbar.UnusedStatusBar; 25 import com.android.systemui.car.statusbar.UnusedStatusBarModule; 26 import com.android.systemui.car.voicerecognition.ConnectedDeviceVoiceRecognitionNotifier; 27 import com.android.systemui.car.volume.VolumeUI; 28 import com.android.systemui.car.window.OverlayWindowModule; 29 import com.android.systemui.car.window.SystemUIOverlayWindowManager; 30 import com.android.systemui.globalactions.GlobalActionsComponent; 31 import com.android.systemui.keyguard.KeyguardViewMediator; 32 import com.android.systemui.keyguard.dagger.KeyguardModule; 33 import com.android.systemui.pip.PipUI; 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.stackdivider.Divider; 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.toast.ToastUI; 44 import com.android.systemui.util.leak.GarbageMonitor; 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, NotificationsModule.class, 53 BubbleModule.class, KeyguardModule.class, OverlayWindowModule.class, 54 CarNotificationModule.class, UnusedStatusBarModule.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 into Divider. */ 63 @Binds 64 @IntoMap 65 @ClassKey(Divider.class) bindDivider(Divider sysui)66 public abstract SystemUI bindDivider(Divider sysui); 67 68 /** Inject Car Navigation Bar. */ 69 @Binds 70 @IntoMap 71 @ClassKey(CarNavigationBar.class) bindCarNavigationBar(CarNavigationBar sysui)72 public abstract SystemUI bindCarNavigationBar(CarNavigationBar sysui); 73 74 /** Inject into GarbageMonitor.Service. */ 75 @Binds 76 @IntoMap 77 @ClassKey(GarbageMonitor.Service.class) bindGarbageMonitorService(GarbageMonitor.Service sysui)78 public abstract SystemUI bindGarbageMonitorService(GarbageMonitor.Service sysui); 79 80 /** Inject into GlobalActionsComponent. */ 81 @Binds 82 @IntoMap 83 @ClassKey(GlobalActionsComponent.class) bindGlobalActionsComponent(GlobalActionsComponent sysui)84 public abstract SystemUI bindGlobalActionsComponent(GlobalActionsComponent sysui); 85 86 /** Inject into InstantAppNotifier. */ 87 @Binds 88 @IntoMap 89 @ClassKey(InstantAppNotifier.class) bindInstantAppNotifier(InstantAppNotifier sysui)90 public abstract SystemUI bindInstantAppNotifier(InstantAppNotifier sysui); 91 92 /** Inject into KeyguardViewMediator. */ 93 @Binds 94 @IntoMap 95 @ClassKey(KeyguardViewMediator.class) bindKeyguardViewMediator(KeyguardViewMediator sysui)96 public abstract SystemUI bindKeyguardViewMediator(KeyguardViewMediator sysui); 97 98 /** Inject into LatencyTests. */ 99 @Binds 100 @IntoMap 101 @ClassKey(LatencyTester.class) bindLatencyTester(LatencyTester sysui)102 public abstract SystemUI bindLatencyTester(LatencyTester sysui); 103 104 /** Inject into PipUI. */ 105 @Binds 106 @IntoMap 107 @ClassKey(PipUI.class) bindPipUI(PipUI sysui)108 public abstract SystemUI bindPipUI(PipUI sysui); 109 110 /** Inject into PowerUI. */ 111 @Binds 112 @IntoMap 113 @ClassKey(PowerUI.class) bindPowerUI(PowerUI sysui)114 public abstract SystemUI bindPowerUI(PowerUI sysui); 115 116 /** Inject into Recents. */ 117 @Binds 118 @IntoMap 119 @ClassKey(Recents.class) bindRecents(Recents sysui)120 public abstract SystemUI bindRecents(Recents sysui); 121 122 /** Inject into ScreenDecorations. */ 123 @Binds 124 @IntoMap 125 @ClassKey(ScreenDecorations.class) bindScreenDecorations(ScreenDecorations sysui)126 public abstract SystemUI bindScreenDecorations(ScreenDecorations sysui); 127 128 /** Inject into ShortcutKeyDispatcher. */ 129 @Binds 130 @IntoMap 131 @ClassKey(ShortcutKeyDispatcher.class) bindsShortcutKeyDispatcher(ShortcutKeyDispatcher sysui)132 public abstract SystemUI bindsShortcutKeyDispatcher(ShortcutKeyDispatcher sysui); 133 134 /** Inject into SizeCompatModeActivityController. */ 135 @Binds 136 @IntoMap 137 @ClassKey(SizeCompatModeActivityController.class) bindsSizeCompatModeActivityController( SizeCompatModeActivityController sysui)138 public abstract SystemUI bindsSizeCompatModeActivityController( 139 SizeCompatModeActivityController sysui); 140 141 /** Inject into SliceBroadcastRelayHandler. */ 142 @Binds 143 @IntoMap 144 @ClassKey(SliceBroadcastRelayHandler.class) bindSliceBroadcastRelayHandler(SliceBroadcastRelayHandler sysui)145 public abstract SystemUI bindSliceBroadcastRelayHandler(SliceBroadcastRelayHandler sysui); 146 147 /** Inject into ThemeOverlayController. */ 148 @Binds 149 @IntoMap 150 @ClassKey(ThemeOverlayController.class) bindThemeOverlayController(ThemeOverlayController sysui)151 public abstract SystemUI bindThemeOverlayController(ThemeOverlayController sysui); 152 153 /** Inject into StatusBar. */ 154 @Binds 155 @IntoMap 156 @ClassKey(StatusBar.class) bindsStatusBar(UnusedStatusBar sysui)157 public abstract SystemUI bindsStatusBar(UnusedStatusBar sysui); 158 159 /** Inject into VolumeUI. */ 160 @Binds 161 @IntoMap 162 @ClassKey(VolumeUI.class) bindVolumeUI(VolumeUI sysui)163 public abstract SystemUI bindVolumeUI(VolumeUI sysui); 164 165 /** Inject into ToastUI. */ 166 @Binds 167 @IntoMap 168 @ClassKey(ToastUI.class) bindToastUI(ToastUI service)169 public abstract SystemUI bindToastUI(ToastUI service); 170 171 /** Inject into ConnectedDeviceVoiceRecognitionNotifier. */ 172 @Binds 173 @IntoMap 174 @ClassKey(ConnectedDeviceVoiceRecognitionNotifier.class) bindConnectedDeviceVoiceRecognitionNotifier( ConnectedDeviceVoiceRecognitionNotifier sysui)175 public abstract SystemUI bindConnectedDeviceVoiceRecognitionNotifier( 176 ConnectedDeviceVoiceRecognitionNotifier sysui); 177 178 /** Inject into SystemUIOverlayWindowManager. */ 179 @Binds 180 @IntoMap 181 @ClassKey(SystemUIOverlayWindowManager.class) bindSystemUIPrimaryWindowManager(SystemUIOverlayWindowManager sysui)182 public abstract SystemUI bindSystemUIPrimaryWindowManager(SystemUIOverlayWindowManager sysui); 183 184 /** Inject into SideLoadedAppController. */ 185 @Binds 186 @IntoMap 187 @ClassKey(SideLoadedAppController.class) bindSideLoadedAppController(SideLoadedAppController sysui)188 public abstract SystemUI bindSideLoadedAppController(SideLoadedAppController sysui); 189 } 190