• 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.tv;
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 import android.os.PowerManager;
26 
27 import androidx.annotation.Nullable;
28 
29 import com.android.keyguard.KeyguardViewController;
30 import com.android.systemui.broadcast.BroadcastDispatcher;
31 import com.android.systemui.dagger.SysUISingleton;
32 import com.android.systemui.dagger.qualifiers.Background;
33 import com.android.systemui.dagger.qualifiers.Main;
34 import com.android.systemui.demomode.DemoModeController;
35 import com.android.systemui.dock.DockManager;
36 import com.android.systemui.dock.DockManagerImpl;
37 import com.android.systemui.doze.DozeHost;
38 import com.android.systemui.plugins.qs.QSFactory;
39 import com.android.systemui.plugins.statusbar.StatusBarStateController;
40 import com.android.systemui.power.EnhancedEstimates;
41 import com.android.systemui.power.EnhancedEstimatesImpl;
42 import com.android.systemui.power.dagger.PowerModule;
43 import com.android.systemui.qs.dagger.QSModule;
44 import com.android.systemui.qs.tileimpl.QSFactoryImpl;
45 import com.android.systemui.recents.Recents;
46 import com.android.systemui.recents.RecentsImplementation;
47 import com.android.systemui.statusbar.CommandQueue;
48 import com.android.systemui.statusbar.NotificationListener;
49 import com.android.systemui.statusbar.NotificationLockscreenUserManager;
50 import com.android.systemui.statusbar.NotificationLockscreenUserManagerImpl;
51 import com.android.systemui.statusbar.NotificationShadeWindowController;
52 import com.android.systemui.statusbar.notification.NotificationEntryManager;
53 import com.android.systemui.statusbar.notification.collection.legacy.NotificationGroupManagerLegacy;
54 import com.android.systemui.statusbar.phone.DozeServiceHost;
55 import com.android.systemui.statusbar.phone.HeadsUpManagerPhone;
56 import com.android.systemui.statusbar.phone.KeyguardBypassController;
57 import com.android.systemui.statusbar.phone.KeyguardEnvironmentImpl;
58 import com.android.systemui.statusbar.phone.NotificationShadeWindowControllerImpl;
59 import com.android.systemui.statusbar.phone.ShadeController;
60 import com.android.systemui.statusbar.phone.ShadeControllerImpl;
61 import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
62 import com.android.systemui.statusbar.policy.BatteryController;
63 import com.android.systemui.statusbar.policy.BatteryControllerImpl;
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.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.statusbar.tv.notifications.TvNotificationHandler;
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 injecting default implementations of components of System UI that may be
82  * overridden by the System UI implementation.
83  */
84 @Module(includes = {
85             PowerModule.class,
86             QSModule.class
87         },
88         subcomponents = {
89         })
90 public abstract class TvSystemUIModule {
91 
92     @SysUISingleton
93     @Provides
94     @Named(LEAK_REPORT_EMAIL_NAME)
95     @Nullable
provideLeakReportEmail()96     static String provideLeakReportEmail() {
97         return null;
98     }
99 
100     @Binds
bindEnhancedEstimates(EnhancedEstimatesImpl enhancedEstimates)101     abstract EnhancedEstimates bindEnhancedEstimates(EnhancedEstimatesImpl enhancedEstimates);
102 
103     @Binds
bindNotificationLockscreenUserManager( NotificationLockscreenUserManagerImpl notificationLockscreenUserManager)104     abstract NotificationLockscreenUserManager bindNotificationLockscreenUserManager(
105             NotificationLockscreenUserManagerImpl notificationLockscreenUserManager);
106 
107     @Provides
108     @SysUISingleton
provideBatteryController(Context context, EnhancedEstimates enhancedEstimates, PowerManager powerManager, BroadcastDispatcher broadcastDispatcher, DemoModeController demoModeController, @Main Handler mainHandler, @Background Handler bgHandler)109     static BatteryController provideBatteryController(Context context,
110             EnhancedEstimates enhancedEstimates, PowerManager powerManager,
111             BroadcastDispatcher broadcastDispatcher, DemoModeController demoModeController,
112             @Main Handler mainHandler, @Background Handler bgHandler) {
113         BatteryController bC = new BatteryControllerImpl(context, enhancedEstimates, powerManager,
114                 broadcastDispatcher, demoModeController, mainHandler, bgHandler);
115         bC.init();
116         return bC;
117     }
118 
119     @Provides
120     @SysUISingleton
provideSensorPrivacyController( SensorPrivacyManager sensorPrivacyManager)121     static SensorPrivacyController provideSensorPrivacyController(
122             SensorPrivacyManager sensorPrivacyManager) {
123         SensorPrivacyController spC = new SensorPrivacyControllerImpl(sensorPrivacyManager);
124         spC.init();
125         return spC;
126     }
127 
128     @Provides
129     @SysUISingleton
provideIndividualSensorPrivacyController( SensorPrivacyManager sensorPrivacyManager)130     static IndividualSensorPrivacyController provideIndividualSensorPrivacyController(
131             SensorPrivacyManager sensorPrivacyManager) {
132         IndividualSensorPrivacyController spC = new IndividualSensorPrivacyControllerImpl(
133                 sensorPrivacyManager);
134         spC.init();
135         return spC;
136     }
137 
138     @Binds
139     @SysUISingleton
bindQSFactory(QSFactoryImpl qsFactoryImpl)140     abstract QSFactory bindQSFactory(QSFactoryImpl qsFactoryImpl);
141 
142     @Binds
bindDockManager(DockManagerImpl dockManager)143     abstract DockManager bindDockManager(DockManagerImpl dockManager);
144 
145     @Binds
bindKeyguardEnvironment( KeyguardEnvironmentImpl keyguardEnvironment)146     abstract NotificationEntryManager.KeyguardEnvironment bindKeyguardEnvironment(
147             KeyguardEnvironmentImpl keyguardEnvironment);
148 
149     @Binds
provideShadeController(ShadeControllerImpl shadeController)150     abstract ShadeController provideShadeController(ShadeControllerImpl shadeController);
151 
152     @SysUISingleton
153     @Provides
154     @Named(ALLOW_NOTIFICATION_LONG_PRESS_NAME)
provideAllowNotificationLongPress()155     static boolean provideAllowNotificationLongPress() {
156         return true;
157     }
158 
159     @SysUISingleton
160     @Provides
provideHeadsUpManagerPhone( Context context, StatusBarStateController statusBarStateController, KeyguardBypassController bypassController, NotificationGroupManagerLegacy groupManager, ConfigurationController configurationController)161     static HeadsUpManagerPhone provideHeadsUpManagerPhone(
162             Context context,
163             StatusBarStateController statusBarStateController,
164             KeyguardBypassController bypassController,
165             NotificationGroupManagerLegacy groupManager,
166             ConfigurationController configurationController) {
167         return new HeadsUpManagerPhone(context, statusBarStateController, bypassController,
168                 groupManager, configurationController);
169     }
170 
171     @Binds
bindHeadsUpManagerPhone(HeadsUpManagerPhone headsUpManagerPhone)172     abstract HeadsUpManager bindHeadsUpManagerPhone(HeadsUpManagerPhone headsUpManagerPhone);
173 
174     @Provides
175     @SysUISingleton
provideRecents(Context context, RecentsImplementation recentsImplementation, CommandQueue commandQueue)176     static Recents provideRecents(Context context, RecentsImplementation recentsImplementation,
177             CommandQueue commandQueue) {
178         return new Recents(context, recentsImplementation, commandQueue);
179     }
180 
181     @Binds
bindDeviceProvisionedController( DeviceProvisionedControllerImpl deviceProvisionedController)182     abstract DeviceProvisionedController bindDeviceProvisionedController(
183             DeviceProvisionedControllerImpl deviceProvisionedController);
184 
185     @Binds
bindKeyguardViewController( StatusBarKeyguardViewManager statusBarKeyguardViewManager)186     abstract KeyguardViewController bindKeyguardViewController(
187             StatusBarKeyguardViewManager statusBarKeyguardViewManager);
188 
189     @Binds
bindNotificationShadeController( NotificationShadeWindowControllerImpl notificationShadeWindowController)190     abstract NotificationShadeWindowController bindNotificationShadeController(
191             NotificationShadeWindowControllerImpl notificationShadeWindowController);
192 
193     @Binds
provideDozeHost(DozeServiceHost dozeServiceHost)194     abstract DozeHost provideDozeHost(DozeServiceHost dozeServiceHost);
195 
196     @Provides
197     @SysUISingleton
provideTvNotificationHandler(Context context, NotificationListener notificationListener)198     static TvNotificationHandler provideTvNotificationHandler(Context context,
199             NotificationListener notificationListener) {
200         return new TvNotificationHandler(context, notificationListener);
201     }
202 }
203