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