• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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