• 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 import android.os.Handler;
25 
26 import com.android.internal.logging.UiEventLogger;
27 import com.android.keyguard.KeyguardViewController;
28 import com.android.systemui.dagger.GlobalRootComponent;
29 import com.android.systemui.dagger.ReferenceSystemUIModule;
30 import com.android.systemui.dagger.SysUISingleton;
31 import com.android.systemui.dagger.qualifiers.Main;
32 import com.android.systemui.dock.DockManager;
33 import com.android.systemui.dock.DockManagerImpl;
34 import com.android.systemui.doze.DozeHost;
35 import com.android.systemui.globalactions.ShutdownUiModule;
36 import com.android.systemui.media.dagger.MediaModule;
37 import com.android.systemui.navigationbar.gestural.GestureModule;
38 import com.android.systemui.plugins.qs.QSFactory;
39 import com.android.systemui.plugins.statusbar.StatusBarStateController;
40 import com.android.systemui.power.dagger.PowerModule;
41 import com.android.systemui.qs.dagger.QSModule;
42 import com.android.systemui.qs.tileimpl.QSFactoryImpl;
43 import com.android.systemui.recents.Recents;
44 import com.android.systemui.recents.RecentsImplementation;
45 import com.android.systemui.screenshot.ReferenceScreenshotModule;
46 import com.android.systemui.settings.dagger.MultiUserUtilsModule;
47 import com.android.systemui.shade.NotificationShadeWindowControllerImpl;
48 import com.android.systemui.shade.ShadeExpansionStateManager;
49 import com.android.systemui.shade.ShadeModule;
50 import com.android.systemui.statusbar.CommandQueue;
51 import com.android.systemui.statusbar.NotificationLockscreenUserManager;
52 import com.android.systemui.statusbar.NotificationLockscreenUserManagerImpl;
53 import com.android.systemui.statusbar.NotificationShadeWindowController;
54 import com.android.systemui.statusbar.dagger.StartCentralSurfacesModule;
55 import com.android.systemui.statusbar.events.StatusBarEventsModule;
56 import com.android.systemui.statusbar.notification.collection.provider.VisualStabilityProvider;
57 import com.android.systemui.statusbar.notification.collection.render.GroupMembershipManager;
58 import com.android.systemui.statusbar.phone.DozeServiceHost;
59 import com.android.systemui.statusbar.phone.HeadsUpManagerPhone;
60 import com.android.systemui.statusbar.phone.KeyguardBypassController;
61 import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
62 import com.android.systemui.statusbar.policy.AccessibilityManagerWrapper;
63 import com.android.systemui.statusbar.policy.AospPolicyModule;
64 import com.android.systemui.statusbar.policy.ConfigurationController;
65 import com.android.systemui.statusbar.policy.DeviceProvisionedController;
66 import com.android.systemui.statusbar.policy.DeviceProvisionedControllerImpl;
67 import com.android.systemui.statusbar.policy.HeadsUpManager;
68 import com.android.systemui.statusbar.policy.HeadsUpManagerLogger;
69 import com.android.systemui.statusbar.policy.IndividualSensorPrivacyController;
70 import com.android.systemui.statusbar.policy.IndividualSensorPrivacyControllerImpl;
71 import com.android.systemui.statusbar.policy.SensorPrivacyController;
72 import com.android.systemui.statusbar.policy.SensorPrivacyControllerImpl;
73 import com.android.systemui.volume.dagger.VolumeModule;
74 import com.android.systemui.wallpapers.dagger.WallpaperModule;
75 
76 import javax.inject.Named;
77 
78 import dagger.Binds;
79 import dagger.Module;
80 import dagger.Provides;
81 
82 /**
83  * A dagger module for overriding the default implementations of injected System UI components on
84  * Android Go. This is forked from {@link ReferenceSystemUIModule}
85  */
86 @Module(includes = {
87         AospPolicyModule.class,
88         GestureModule.class,
89         MediaModule.class,
90         MultiUserUtilsModule.class,
91         PowerModule.class,
92         QSModule.class,
93         ReferenceScreenshotModule.class,
94         ShadeModule.class,
95         ShutdownUiModule.class,
96         StartCentralSurfacesModule.class,
97         StatusBarEventsModule.class,
98         WallpaperModule.class,
99         VolumeModule.class
100 })
101 public abstract class SystemUIGoModule {
102 
103     @Binds
bindGlobalRootComponent( SystemUIGoGlobalRootComponent globalRootComponent)104     abstract GlobalRootComponent bindGlobalRootComponent(
105             SystemUIGoGlobalRootComponent globalRootComponent);
106 
107     @SysUISingleton
108     @Provides
109     @Named(LEAK_REPORT_EMAIL_NAME)
provideLeakReportEmail()110     static String provideLeakReportEmail() {
111         return "buganizer-system+700073@google.com";
112     }
113 
114     @Binds
bindNotificationLockscreenUserManager( NotificationLockscreenUserManagerImpl notificationLockscreenUserManager)115     abstract NotificationLockscreenUserManager bindNotificationLockscreenUserManager(
116             NotificationLockscreenUserManagerImpl notificationLockscreenUserManager);
117 
118     @Provides
119     @SysUISingleton
provideSensorPrivacyController( SensorPrivacyManager sensorPrivacyManager)120     static SensorPrivacyController provideSensorPrivacyController(
121             SensorPrivacyManager sensorPrivacyManager) {
122         SensorPrivacyController spC = new SensorPrivacyControllerImpl(sensorPrivacyManager);
123         spC.init();
124         return spC;
125     }
126 
127     @Provides
128     @SysUISingleton
provideIndividualSensorPrivacyController( SensorPrivacyManager sensorPrivacyManager)129     static IndividualSensorPrivacyController provideIndividualSensorPrivacyController(
130             SensorPrivacyManager sensorPrivacyManager) {
131         IndividualSensorPrivacyController ispC = new IndividualSensorPrivacyControllerImpl(
132                 sensorPrivacyManager);
133         ispC.init();
134         return ispC;
135     }
136 
137     @Binds
138     @SysUISingleton
bindQSFactory(QSFactoryImpl qsFactoryImpl)139     public abstract QSFactory bindQSFactory(QSFactoryImpl qsFactoryImpl);
140 
141     @Binds
bindDockManager(DockManagerImpl dockManager)142     abstract DockManager bindDockManager(DockManagerImpl dockManager);
143 
144     @SysUISingleton
145     @Provides
146     @Named(ALLOW_NOTIFICATION_LONG_PRESS_NAME)
provideAllowNotificationLongPress()147     static boolean provideAllowNotificationLongPress() {
148         return true;
149     }
150 
151     @SysUISingleton
152     @Provides
provideHeadsUpManagerPhone( Context context, HeadsUpManagerLogger headsUpManagerLogger, StatusBarStateController statusBarStateController, KeyguardBypassController bypassController, GroupMembershipManager groupManager, VisualStabilityProvider visualStabilityProvider, ConfigurationController configurationController, @Main Handler handler, AccessibilityManagerWrapper accessibilityManagerWrapper, UiEventLogger uiEventLogger, ShadeExpansionStateManager shadeExpansionStateManager)153     static HeadsUpManagerPhone provideHeadsUpManagerPhone(
154             Context context,
155             HeadsUpManagerLogger headsUpManagerLogger,
156             StatusBarStateController statusBarStateController,
157             KeyguardBypassController bypassController,
158             GroupMembershipManager groupManager,
159             VisualStabilityProvider visualStabilityProvider,
160             ConfigurationController configurationController,
161             @Main Handler handler,
162             AccessibilityManagerWrapper accessibilityManagerWrapper,
163             UiEventLogger uiEventLogger,
164             ShadeExpansionStateManager shadeExpansionStateManager) {
165         return new HeadsUpManagerPhone(
166                 context,
167                 headsUpManagerLogger,
168                 statusBarStateController,
169                 bypassController,
170                 groupManager,
171                 visualStabilityProvider,
172                 configurationController,
173                 handler,
174                 accessibilityManagerWrapper,
175                 uiEventLogger,
176                 shadeExpansionStateManager
177         );
178     }
179 
180     @Binds
bindHeadsUpManagerPhone(HeadsUpManagerPhone headsUpManagerPhone)181     abstract HeadsUpManager bindHeadsUpManagerPhone(HeadsUpManagerPhone headsUpManagerPhone);
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