• 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.dagger;
18 
19 import com.android.systemui.LatencyTester;
20 import com.android.systemui.ScreenDecorations;
21 import com.android.systemui.SizeCompatModeActivityController;
22 import com.android.systemui.SliceBroadcastRelayHandler;
23 import com.android.systemui.SystemUI;
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.bubbles.dagger.BubbleModule;
28 import com.android.systemui.globalactions.GlobalActionsComponent;
29 import com.android.systemui.keyguard.KeyguardViewMediator;
30 import com.android.systemui.keyguard.dagger.KeyguardModule;
31 import com.android.systemui.pip.PipUI;
32 import com.android.systemui.power.PowerUI;
33 import com.android.systemui.recents.Recents;
34 import com.android.systemui.recents.RecentsModule;
35 import com.android.systemui.shortcut.ShortcutKeyDispatcher;
36 import com.android.systemui.stackdivider.Divider;
37 import com.android.systemui.statusbar.dagger.StatusBarModule;
38 import com.android.systemui.statusbar.notification.InstantAppNotifier;
39 import com.android.systemui.statusbar.phone.StatusBar;
40 import com.android.systemui.statusbar.tv.TvStatusBar;
41 import com.android.systemui.theme.ThemeOverlayController;
42 import com.android.systemui.toast.ToastUI;
43 import com.android.systemui.util.leak.GarbageMonitor;
44 import com.android.systemui.volume.VolumeUI;
45 
46 import dagger.Binds;
47 import dagger.Module;
48 import dagger.multibindings.ClassKey;
49 import dagger.multibindings.IntoMap;
50 
51 /**
52  * SystemUI objects that are injectable should go here.
53  */
54 @Module(includes = {RecentsModule.class, StatusBarModule.class, BubbleModule.class,
55         KeyguardModule.class})
56 public abstract class SystemUIBinder {
57     /** Inject into AuthController. */
58     @Binds
59     @IntoMap
60     @ClassKey(AuthController.class)
bindAuthController(AuthController service)61     public abstract SystemUI bindAuthController(AuthController service);
62 
63     /** Inject into Divider. */
64     @Binds
65     @IntoMap
66     @ClassKey(Divider.class)
bindDivider(Divider sysui)67     public abstract SystemUI bindDivider(Divider sysui);
68 
69     /** Inject into GarbageMonitor.Service. */
70     @Binds
71     @IntoMap
72     @ClassKey(GarbageMonitor.Service.class)
bindGarbageMonitorService(GarbageMonitor.Service sysui)73     public abstract SystemUI bindGarbageMonitorService(GarbageMonitor.Service sysui);
74 
75     /** Inject into GlobalActionsComponent. */
76     @Binds
77     @IntoMap
78     @ClassKey(GlobalActionsComponent.class)
bindGlobalActionsComponent(GlobalActionsComponent sysui)79     public abstract SystemUI bindGlobalActionsComponent(GlobalActionsComponent sysui);
80 
81     /** Inject into InstantAppNotifier. */
82     @Binds
83     @IntoMap
84     @ClassKey(InstantAppNotifier.class)
bindInstantAppNotifier(InstantAppNotifier sysui)85     public abstract SystemUI bindInstantAppNotifier(InstantAppNotifier sysui);
86 
87     /** Inject into KeyguardViewMediator. */
88     @Binds
89     @IntoMap
90     @ClassKey(KeyguardViewMediator.class)
bindKeyguardViewMediator(KeyguardViewMediator sysui)91     public abstract SystemUI bindKeyguardViewMediator(KeyguardViewMediator sysui);
92 
93     /** Inject into LatencyTests. */
94     @Binds
95     @IntoMap
96     @ClassKey(LatencyTester.class)
bindLatencyTester(LatencyTester sysui)97     public abstract SystemUI bindLatencyTester(LatencyTester sysui);
98 
99     /** Inject into PipUI. */
100     @Binds
101     @IntoMap
102     @ClassKey(PipUI.class)
bindPipUI(PipUI sysui)103     public abstract SystemUI bindPipUI(PipUI sysui);
104 
105     /** Inject into PowerUI. */
106     @Binds
107     @IntoMap
108     @ClassKey(PowerUI.class)
bindPowerUI(PowerUI sysui)109     public abstract SystemUI bindPowerUI(PowerUI sysui);
110 
111     /** Inject into Recents. */
112     @Binds
113     @IntoMap
114     @ClassKey(Recents.class)
bindRecents(Recents sysui)115     public abstract SystemUI bindRecents(Recents sysui);
116 
117     /** Inject into ScreenDecorations. */
118     @Binds
119     @IntoMap
120     @ClassKey(ScreenDecorations.class)
bindScreenDecorations(ScreenDecorations sysui)121     public abstract SystemUI bindScreenDecorations(ScreenDecorations sysui);
122 
123     /** Inject into ShortcutKeyDispatcher. */
124     @Binds
125     @IntoMap
126     @ClassKey(ShortcutKeyDispatcher.class)
bindsShortcutKeyDispatcher(ShortcutKeyDispatcher sysui)127     public abstract SystemUI bindsShortcutKeyDispatcher(ShortcutKeyDispatcher sysui);
128 
129     /** Inject into SizeCompatModeActivityController. */
130     @Binds
131     @IntoMap
132     @ClassKey(SizeCompatModeActivityController.class)
bindsSizeCompatModeActivityController( SizeCompatModeActivityController sysui)133     public abstract SystemUI bindsSizeCompatModeActivityController(
134             SizeCompatModeActivityController sysui);
135 
136     /** Inject into SliceBroadcastRelayHandler. */
137     @Binds
138     @IntoMap
139     @ClassKey(SliceBroadcastRelayHandler.class)
bindSliceBroadcastRelayHandler(SliceBroadcastRelayHandler sysui)140     public abstract SystemUI bindSliceBroadcastRelayHandler(SliceBroadcastRelayHandler sysui);
141 
142     /** Inject into StatusBar. */
143     @Binds
144     @IntoMap
145     @ClassKey(StatusBar.class)
bindsStatusBar(StatusBar sysui)146     public abstract SystemUI bindsStatusBar(StatusBar sysui);
147 
148     /** Inject into SystemActions. */
149     @Binds
150     @IntoMap
151     @ClassKey(SystemActions.class)
bindSystemActions(SystemActions sysui)152     public abstract SystemUI bindSystemActions(SystemActions sysui);
153 
154     /** Inject into ThemeOverlayController. */
155     @Binds
156     @IntoMap
157     @ClassKey(ThemeOverlayController.class)
bindThemeOverlayController(ThemeOverlayController sysui)158     public abstract SystemUI bindThemeOverlayController(ThemeOverlayController sysui);
159 
160     /** Inject into ToastUI. */
161     @Binds
162     @IntoMap
163     @ClassKey(ToastUI.class)
bindToastUI(ToastUI service)164     public abstract SystemUI bindToastUI(ToastUI service);
165 
166     /** Inject into TvStatusBar. */
167     @Binds
168     @IntoMap
169     @ClassKey(TvStatusBar.class)
bindsTvStatusBar(TvStatusBar sysui)170     public abstract SystemUI bindsTvStatusBar(TvStatusBar sysui);
171 
172     /** Inject into VolumeUI. */
173     @Binds
174     @IntoMap
175     @ClassKey(VolumeUI.class)
bindVolumeUI(VolumeUI sysui)176     public abstract SystemUI bindVolumeUI(VolumeUI sysui);
177 
178     /** Inject into WindowMagnification. */
179     @Binds
180     @IntoMap
181     @ClassKey(WindowMagnification.class)
bindWindowMagnification(WindowMagnification sysui)182     public abstract SystemUI bindWindowMagnification(WindowMagnification sysui);
183 }
184