• 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 static com.android.systemui.Dependency.ALLOW_NOTIFICATION_LONG_PRESS_NAME;
20 import static com.android.systemui.Dependency.LEAK_REPORT_EMAIL_NAME;
21 
22 import android.content.Context;
23 import android.hardware.SensorPrivacyManager;
24 
25 import com.android.keyguard.KeyguardViewController;
26 import com.android.systemui.ScreenDecorationsModule;
27 import com.android.systemui.accessibility.AccessibilityModule;
28 import com.android.systemui.accessibility.SystemActionsModule;
29 import com.android.systemui.accessibility.data.repository.AccessibilityRepositoryModule;
30 import com.android.systemui.battery.BatterySaverModule;
31 import com.android.systemui.biometrics.dagger.BiometricsModule;
32 import com.android.systemui.clipboardoverlay.dagger.ClipboardOverlayOverrideModule;
33 import com.android.systemui.communal.posturing.dagger.NoopPosturingModule;
34 import com.android.systemui.dagger.GlobalRootComponent;
35 import com.android.systemui.dagger.ReferenceSystemUIModule;
36 import com.android.systemui.dagger.SysUISingleton;
37 import com.android.systemui.display.ui.viewmodel.ConnectingDisplayViewModel;
38 import com.android.systemui.dock.DockManager;
39 import com.android.systemui.dock.DockManagerImpl;
40 import com.android.systemui.doze.DozeHost;
41 import com.android.systemui.emergency.EmergencyGestureModule;
42 import com.android.systemui.keyguard.ui.view.layout.blueprints.KeyguardBlueprintModule;
43 import com.android.systemui.keyguard.ui.view.layout.sections.KeyguardSectionsModule;
44 import com.android.systemui.media.dagger.MediaModule;
45 import com.android.systemui.media.muteawait.MediaMuteAwaitConnectionCli;
46 import com.android.systemui.media.nearby.NearbyMediaDevicesManager;
47 import com.android.systemui.navigationbar.NavigationBarControllerModule;
48 import com.android.systemui.navigationbar.gestural.GestureModule;
49 import com.android.systemui.plugins.qs.QSFactory;
50 import com.android.systemui.power.dagger.PowerModule;
51 import com.android.systemui.qs.dagger.QSModule;
52 import com.android.systemui.qs.tileimpl.QSFactoryImpl;
53 import com.android.systemui.recents.Recents;
54 import com.android.systemui.recents.RecentsImplementation;
55 import com.android.systemui.recents.RecentsModule;
56 import com.android.systemui.rotationlock.RotationLockModule;
57 import com.android.systemui.screenshot.ReferenceScreenshotModule;
58 import com.android.systemui.settings.MultiUserUtilsModule;
59 import com.android.systemui.settings.UserTracker;
60 import com.android.systemui.settings.brightness.dagger.BrightnessSliderModule;
61 import com.android.systemui.shade.NotificationShadeWindowControllerImpl;
62 import com.android.systemui.shade.ShadeModule;
63 import com.android.systemui.statusbar.CommandQueue;
64 import com.android.systemui.statusbar.NotificationLockscreenUserManager;
65 import com.android.systemui.statusbar.NotificationLockscreenUserManagerImpl;
66 import com.android.systemui.statusbar.NotificationShadeWindowController;
67 import com.android.systemui.statusbar.dagger.StartCentralSurfacesModule;
68 import com.android.systemui.statusbar.notification.dagger.ReferenceNotificationsModule;
69 import com.android.systemui.statusbar.notification.headsup.HeadsUpModule;
70 import com.android.systemui.statusbar.phone.DozeServiceHost;
71 import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
72 import com.android.systemui.statusbar.phone.dagger.StatusBarPhoneModule;
73 import com.android.systemui.statusbar.phone.fragment.CollapsedStatusBarFragmentStartableModule;
74 import com.android.systemui.statusbar.policy.AospPolicyModule;
75 import com.android.systemui.statusbar.policy.DeviceProvisionedController;
76 import com.android.systemui.statusbar.policy.DeviceProvisionedControllerImpl;
77 import com.android.systemui.statusbar.policy.IndividualSensorPrivacyController;
78 import com.android.systemui.statusbar.policy.IndividualSensorPrivacyControllerImpl;
79 import com.android.systemui.statusbar.policy.SensorPrivacyController;
80 import com.android.systemui.statusbar.policy.SensorPrivacyControllerImpl;
81 import com.android.systemui.toast.ToastModule;
82 import com.android.systemui.unfold.SysUIUnfoldStartableModule;
83 import com.android.systemui.volume.dagger.VolumeModule;
84 import com.android.systemui.wallpapers.dagger.WallpaperModule;
85 
86 import dagger.Binds;
87 import dagger.Module;
88 import dagger.Provides;
89 
90 import javax.inject.Named;
91 
92 /**
93  * A dagger module for overriding the default implementations of injected System UI components on
94  * Android Go. This is forked from {@link ReferenceSystemUIModule}
95  */
96 @Module(includes = {
97         AccessibilityModule.class,
98         AccessibilityRepositoryModule.class,
99         AospPolicyModule.class,
100         BatterySaverModule.class,
101         BiometricsModule.class,
102         BrightnessSliderModule.class,
103         ClipboardOverlayOverrideModule.class,
104         CollapsedStatusBarFragmentStartableModule.class,
105         ConnectingDisplayViewModel.StartableModule.class,
106         EmergencyGestureModule.class,
107         GestureModule.class,
108         HeadsUpModule.class,
109         KeyguardBlueprintModule.class,
110         KeyguardSectionsModule.class,
111         MediaModule.class,
112         MediaMuteAwaitConnectionCli.StartableModule.class,
113         MultiUserUtilsModule.class,
114         NavigationBarControllerModule.class,
115         NearbyMediaDevicesManager.StartableModule.class,
116         NoopPosturingModule.class,
117         PowerModule.class,
118         QSModule.class,
119         RecentsModule.class,
120         ReferenceNotificationsModule.class,
121         ReferenceScreenshotModule.class,
122         RotationLockModule.class,
123         ScreenDecorationsModule.class,
124         ShadeModule.class,
125         StatusBarPhoneModule.class,
126         StartCentralSurfacesModule.class,
127         SystemActionsModule.class,
128         SysUIUnfoldStartableModule.class,
129         ToastModule.class,
130         WallpaperModule.class,
131         VolumeModule.class,
132 })
133 public abstract class SystemUIGoModule {
134 
135     @Binds
bindGlobalRootComponent( SystemUIGoGlobalRootComponent globalRootComponent)136     abstract GlobalRootComponent bindGlobalRootComponent(
137             SystemUIGoGlobalRootComponent globalRootComponent);
138 
139     @SysUISingleton
140     @Provides
141     @Named(LEAK_REPORT_EMAIL_NAME)
provideLeakReportEmail()142     static String provideLeakReportEmail() {
143         return "buganizer-system+700073@google.com";
144     }
145 
146     @Binds
bindNotificationLockscreenUserManager( NotificationLockscreenUserManagerImpl notificationLockscreenUserManager)147     abstract NotificationLockscreenUserManager bindNotificationLockscreenUserManager(
148             NotificationLockscreenUserManagerImpl notificationLockscreenUserManager);
149 
150     @Provides
151     @SysUISingleton
provideSensorPrivacyController( SensorPrivacyManager sensorPrivacyManager)152     static SensorPrivacyController provideSensorPrivacyController(
153             SensorPrivacyManager sensorPrivacyManager) {
154         SensorPrivacyController spC = new SensorPrivacyControllerImpl(sensorPrivacyManager);
155         spC.init();
156         return spC;
157     }
158 
159     @Provides
160     @SysUISingleton
provideIndividualSensorPrivacyController( SensorPrivacyManager sensorPrivacyManager, UserTracker userTracker)161     static IndividualSensorPrivacyController provideIndividualSensorPrivacyController(
162             SensorPrivacyManager sensorPrivacyManager, UserTracker userTracker) {
163         IndividualSensorPrivacyController ispC = new IndividualSensorPrivacyControllerImpl(
164                 sensorPrivacyManager, userTracker);
165         ispC.init();
166         return ispC;
167     }
168 
169     @Binds
170     @SysUISingleton
bindQSFactory(QSFactoryImpl qsFactoryImpl)171     public abstract QSFactory bindQSFactory(QSFactoryImpl qsFactoryImpl);
172 
173     @Binds
bindDockManager(DockManagerImpl dockManager)174     abstract DockManager bindDockManager(DockManagerImpl dockManager);
175 
176     @SysUISingleton
177     @Provides
178     @Named(ALLOW_NOTIFICATION_LONG_PRESS_NAME)
provideAllowNotificationLongPress()179     static boolean provideAllowNotificationLongPress() {
180         return true;
181     }
182 
183     @Provides
184     @SysUISingleton
provideRecents(Context context, RecentsImplementation recentsImplementation, CommandQueue commandQueue)185     static Recents provideRecents(Context context, RecentsImplementation recentsImplementation,
186             CommandQueue commandQueue) {
187         return new Recents(context, recentsImplementation, commandQueue);
188     }
189 
190     @SysUISingleton
191     @Provides
bindDeviceProvisionedController( DeviceProvisionedControllerImpl deviceProvisionedController)192     static DeviceProvisionedController bindDeviceProvisionedController(
193             DeviceProvisionedControllerImpl deviceProvisionedController) {
194         deviceProvisionedController.init();
195         return deviceProvisionedController;
196     }
197 
198     @Binds
bindKeyguardViewController( StatusBarKeyguardViewManager statusBarKeyguardViewManager)199     abstract KeyguardViewController bindKeyguardViewController(
200             StatusBarKeyguardViewManager statusBarKeyguardViewManager);
201 
202     @Binds
bindNotificationShadeController( NotificationShadeWindowControllerImpl notificationShadeWindowController)203     abstract NotificationShadeWindowController bindNotificationShadeController(
204             NotificationShadeWindowControllerImpl notificationShadeWindowController);
205 
206     @Binds
provideDozeHost(DozeServiceHost dozeServiceHost)207     abstract DozeHost provideDozeHost(DozeServiceHost dozeServiceHost);
208 }
209