• 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;
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.window.DisplayAreaOrganizer;
25 
26 import com.android.keyguard.KeyguardViewController;
27 import com.android.keyguard.dagger.KeyguardDisplayModule;
28 import com.android.systemui.accessibility.AccessibilityModule;
29 import com.android.systemui.accessibility.data.repository.AccessibilityRepositoryModule;
30 import com.android.systemui.biometrics.dagger.BiometricsModule;
31 import com.android.systemui.car.CarDeviceProvisionedController;
32 import com.android.systemui.car.CarDeviceProvisionedControllerImpl;
33 import com.android.systemui.car.decor.CarPrivacyChipDecorProviderFactory;
34 import com.android.systemui.car.decor.CarPrivacyChipViewController;
35 import com.android.systemui.car.displayconfig.ExternalDisplayController;
36 import com.android.systemui.car.drivemode.DriveModeModule;
37 import com.android.systemui.car.keyguard.CarKeyguardViewController;
38 import com.android.systemui.car.notification.NotificationShadeWindowControllerImpl;
39 import com.android.systemui.car.statusbar.DozeServiceHost;
40 import com.android.systemui.car.users.CarMultiUserUtilsModule;
41 import com.android.systemui.car.volume.CarVolumeModule;
42 import com.android.systemui.car.wm.activity.window.ActivityWindowModule;
43 import com.android.systemui.communal.posturing.dagger.NoopPosturingModule;
44 import com.android.systemui.dagger.GlobalRootComponent;
45 import com.android.systemui.dagger.SysUISingleton;
46 import com.android.systemui.dagger.qualifiers.Main;
47 import com.android.systemui.decor.PrivacyDotDecorProviderFactory;
48 import com.android.systemui.dock.DockManager;
49 import com.android.systemui.dock.DockManagerImpl;
50 import com.android.systemui.doze.DozeHost;
51 import com.android.systemui.media.muteawait.MediaMuteAwaitConnectionCli;
52 import com.android.systemui.media.nearby.NearbyMediaDevicesManager;
53 import com.android.systemui.navigationbar.NoopNavigationBarControllerModule;
54 import com.android.systemui.navigationbar.gestural.GestureModule;
55 import com.android.systemui.plugins.qs.QSFactory;
56 import com.android.systemui.power.dagger.PowerModule;
57 import com.android.systemui.qs.dagger.QSModule;
58 import com.android.systemui.qs.tileimpl.QSFactoryImpl;
59 import com.android.systemui.recents.Recents;
60 import com.android.systemui.recents.RecentsImplementation;
61 import com.android.systemui.recents.RecentsModule;
62 import com.android.systemui.screenshot.ReferenceScreenshotModule;
63 import com.android.systemui.settings.UserTracker;
64 import com.android.systemui.settings.brightness.dagger.BrightnessSliderModule;
65 import com.android.systemui.shade.ShadeEmptyImplModule;
66 import com.android.systemui.statusbar.CommandQueue;
67 import com.android.systemui.statusbar.NotificationLockscreenUserManager;
68 import com.android.systemui.statusbar.NotificationLockscreenUserManagerImpl;
69 import com.android.systemui.statusbar.NotificationShadeWindowController;
70 import com.android.systemui.statusbar.events.PrivacyDotViewController;
71 import com.android.systemui.statusbar.notification.headsup.HeadsUpEmptyImplModule;
72 import com.android.systemui.statusbar.policy.AospPolicyModule;
73 import com.android.systemui.statusbar.policy.DeviceProvisionedController;
74 import com.android.systemui.statusbar.policy.IndividualSensorPrivacyController;
75 import com.android.systemui.statusbar.policy.IndividualSensorPrivacyControllerImpl;
76 import com.android.systemui.statusbar.policy.SensorPrivacyController;
77 import com.android.systemui.statusbar.policy.SensorPrivacyControllerImpl;
78 import com.android.systemui.unfold.SysUIUnfoldStartableModule;
79 import com.android.systemui.wallpapers.dagger.NoopWallpaperModule;
80 import com.android.systemui.window.dagger.WindowRootViewBlurNotSupportedModule;
81 
82 import dagger.Binds;
83 import dagger.Module;
84 import dagger.Provides;
85 
86 import java.util.concurrent.Executor;
87 
88 import javax.inject.Named;
89 
90 @Module(
91         includes = {
92                 AccessibilityModule.class,
93                 AccessibilityRepositoryModule.class,
94                 ActivityWindowModule.class,
95                 AospPolicyModule.class,
96                 BiometricsModule.class,
97                 BrightnessSliderModule.class,
98                 CarMultiUserUtilsModule.class,
99                 CarVolumeModule.class,
100                 ExternalDisplayController.StartableModule.class,
101                 DriveModeModule.class,
102                 GestureModule.class,
103                 HeadsUpEmptyImplModule.class,
104                 KeyguardDisplayModule.class,
105                 MediaMuteAwaitConnectionCli.StartableModule.class,
106                 NearbyMediaDevicesManager.StartableModule.class,
107                 NoopNavigationBarControllerModule.class,
108                 NoopPosturingModule.class,
109                 NoopWallpaperModule.class,
110                 PowerModule.class,
111                 QSModule.class,
112                 RecentsModule.class,
113                 ReferenceScreenshotModule.class,
114                 ScreenDecorationsModule.class,
115                 ShadeEmptyImplModule.class,
116                 SysUIUnfoldStartableModule.class,
117                 WindowRootViewBlurNotSupportedModule.class
118         }
119 )
120 abstract class CarSystemUIModule {
121 
122     @SysUISingleton
123     @Provides
124     @Named(ALLOW_NOTIFICATION_LONG_PRESS_NAME)
provideAllowNotificationLongPress()125     static boolean provideAllowNotificationLongPress() {
126         return false;
127     }
128 
129     @SysUISingleton
130     @Provides
131     @Named(LEAK_REPORT_EMAIL_NAME)
provideLeakReportEmail()132     static String provideLeakReportEmail() {
133         return "buganizer-system+181579@google.com";
134     }
135 
136     @Provides
137     @SysUISingleton
provideRecents(Context context, RecentsImplementation recentsImplementation, CommandQueue commandQueue)138     static Recents provideRecents(Context context, RecentsImplementation recentsImplementation,
139             CommandQueue commandQueue) {
140         return new Recents(context, recentsImplementation, commandQueue);
141     }
142 
143     @Provides
144     @SysUISingleton
provideDisplayAreaOrganizer(@ain Executor executor)145     static DisplayAreaOrganizer provideDisplayAreaOrganizer(@Main Executor executor) {
146         return new DisplayAreaOrganizer(executor);
147     }
148 
149     @Binds
bindNotificationLockscreenUserManager( NotificationLockscreenUserManagerImpl notificationLockscreenUserManager)150     abstract NotificationLockscreenUserManager bindNotificationLockscreenUserManager(
151             NotificationLockscreenUserManagerImpl notificationLockscreenUserManager);
152 
153     @Provides
154     @SysUISingleton
provideSensorPrivacyController( SensorPrivacyManager sensorPrivacyManager)155     static SensorPrivacyController provideSensorPrivacyController(
156             SensorPrivacyManager sensorPrivacyManager) {
157         SensorPrivacyController spC = new SensorPrivacyControllerImpl(sensorPrivacyManager);
158         spC.init();
159         return spC;
160     }
161 
162     @Provides
163     @SysUISingleton
provideIndividualSensorPrivacyController( SensorPrivacyManager sensorPrivacyManager, UserTracker userTracker)164     static IndividualSensorPrivacyController provideIndividualSensorPrivacyController(
165             SensorPrivacyManager sensorPrivacyManager, UserTracker userTracker) {
166         IndividualSensorPrivacyController spC = new IndividualSensorPrivacyControllerImpl(
167                 sensorPrivacyManager, userTracker);
168         spC.init();
169         return spC;
170     }
171 
172     @Binds
173     @SysUISingleton
bindQSFactory(QSFactoryImpl qsFactoryImpl)174     public abstract QSFactory bindQSFactory(QSFactoryImpl qsFactoryImpl);
175 
176     @Binds
bindDockManager(DockManagerImpl dockManager)177     abstract DockManager bindDockManager(DockManagerImpl dockManager);
178 
179     @Binds
bindGlobalRootComponent( CarGlobalRootComponent globalRootComponent)180     abstract GlobalRootComponent bindGlobalRootComponent(
181             CarGlobalRootComponent globalRootComponent);
182 
183     @Binds
bindKeyguardViewController( CarKeyguardViewController carKeyguardViewController)184     abstract KeyguardViewController bindKeyguardViewController(
185             CarKeyguardViewController carKeyguardViewController);
186 
187     @Binds
bindNotificationShadeController( NotificationShadeWindowControllerImpl notificationPanelViewController)188     abstract NotificationShadeWindowController bindNotificationShadeController(
189             NotificationShadeWindowControllerImpl notificationPanelViewController);
190 
191     @Provides
bindDeviceProvisionedController( CarDeviceProvisionedControllerImpl deviceProvisionedController)192     static DeviceProvisionedController bindDeviceProvisionedController(
193             CarDeviceProvisionedControllerImpl deviceProvisionedController) {
194         deviceProvisionedController.init();
195         return deviceProvisionedController;
196     }
197 
198     @Binds
bindCarDeviceProvisionedController( CarDeviceProvisionedControllerImpl deviceProvisionedController)199     abstract CarDeviceProvisionedController bindCarDeviceProvisionedController(
200             CarDeviceProvisionedControllerImpl deviceProvisionedController);
201 
202     @Binds
bindDozeHost(DozeServiceHost dozeServiceHost)203     abstract DozeHost bindDozeHost(DozeServiceHost dozeServiceHost);
204 
205     @Binds
providePrivacyDotViewController( CarPrivacyChipViewController carPrivacyChipViewController)206     abstract PrivacyDotViewController providePrivacyDotViewController(
207             CarPrivacyChipViewController carPrivacyChipViewController);
208 
209     @Binds
providePrivacyDotDecorProviderFactory( CarPrivacyChipDecorProviderFactory carPrivacyDotDecorProviderFactory)210     abstract PrivacyDotDecorProviderFactory providePrivacyDotDecorProviderFactory(
211             CarPrivacyChipDecorProviderFactory carPrivacyDotDecorProviderFactory);
212 }
213