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