• 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.os.Handler;
24 import android.os.PowerManager;
25 
26 import com.android.keyguard.KeyguardViewController;
27 import com.android.systemui.broadcast.BroadcastDispatcher;
28 import com.android.systemui.car.CarDeviceProvisionedController;
29 import com.android.systemui.car.CarDeviceProvisionedControllerImpl;
30 import com.android.systemui.car.keyguard.CarKeyguardViewController;
31 import com.android.systemui.car.statusbar.DozeServiceHost;
32 import com.android.systemui.car.statusbar.DummyNotificationShadeWindowController;
33 import com.android.systemui.car.statusbar.UnusedStatusBar;
34 import com.android.systemui.car.volume.CarVolumeDialogComponent;
35 import com.android.systemui.dagger.SystemUIRootComponent;
36 import com.android.systemui.dagger.qualifiers.Background;
37 import com.android.systemui.dagger.qualifiers.Main;
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.plugins.qs.QSFactory;
42 import com.android.systemui.plugins.statusbar.StatusBarStateController;
43 import com.android.systemui.power.EnhancedEstimates;
44 import com.android.systemui.power.EnhancedEstimatesImpl;
45 import com.android.systemui.qs.dagger.QSModule;
46 import com.android.systemui.qs.tileimpl.QSFactoryImpl;
47 import com.android.systemui.recents.Recents;
48 import com.android.systemui.recents.RecentsImplementation;
49 import com.android.systemui.stackdivider.DividerModule;
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.notification.NotificationEntryManager;
54 import com.android.systemui.statusbar.phone.HeadsUpManagerPhone;
55 import com.android.systemui.statusbar.phone.KeyguardBypassController;
56 import com.android.systemui.statusbar.phone.KeyguardEnvironmentImpl;
57 import com.android.systemui.statusbar.phone.NotificationGroupManager;
58 import com.android.systemui.statusbar.phone.NotificationShadeWindowController;
59 import com.android.systemui.statusbar.phone.ShadeController;
60 import com.android.systemui.statusbar.phone.ShadeControllerImpl;
61 import com.android.systemui.statusbar.phone.StatusBar;
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.HeadsUpManager;
67 import com.android.systemui.volume.VolumeDialogComponent;
68 import com.android.systemui.wm.DisplayImeController;
69 import com.android.systemui.wm.DisplaySystemBarsController;
70 
71 import javax.inject.Named;
72 import javax.inject.Singleton;
73 
74 import dagger.Binds;
75 import dagger.Module;
76 import dagger.Provides;
77 
78 @Module(includes = {DividerModule.class, QSModule.class})
79 public abstract class CarSystemUIModule {
80 
81     @Singleton
82     @Provides
83     @Named(ALLOW_NOTIFICATION_LONG_PRESS_NAME)
provideAllowNotificationLongPress()84     static boolean provideAllowNotificationLongPress() {
85         return false;
86     }
87 
88     @Singleton
89     @Provides
provideHeadsUpManagerPhone( Context context, StatusBarStateController statusBarStateController, KeyguardBypassController bypassController, NotificationGroupManager groupManager, ConfigurationController configurationController)90     static HeadsUpManagerPhone provideHeadsUpManagerPhone(
91             Context context,
92             StatusBarStateController statusBarStateController,
93             KeyguardBypassController bypassController,
94             NotificationGroupManager groupManager,
95             ConfigurationController configurationController) {
96         return new HeadsUpManagerPhone(context, statusBarStateController, bypassController,
97                 groupManager, configurationController);
98     }
99 
100     @Binds
bindDisplayImeController( DisplaySystemBarsController displaySystemBarsController)101     abstract DisplayImeController bindDisplayImeController(
102             DisplaySystemBarsController displaySystemBarsController);
103 
104     @Singleton
105     @Provides
106     @Named(LEAK_REPORT_EMAIL_NAME)
provideLeakReportEmail()107     static String provideLeakReportEmail() {
108         return "buganizer-system+181579@google.com";
109     }
110 
111     @Provides
112     @Singleton
provideRecents(Context context, RecentsImplementation recentsImplementation, CommandQueue commandQueue)113     static Recents provideRecents(Context context, RecentsImplementation recentsImplementation,
114             CommandQueue commandQueue) {
115         return new Recents(context, recentsImplementation, commandQueue);
116     }
117 
118     @Binds
bindHeadsUpManagerPhone(HeadsUpManagerPhone headsUpManagerPhone)119     abstract HeadsUpManager bindHeadsUpManagerPhone(HeadsUpManagerPhone headsUpManagerPhone);
120 
121     @Binds
bindEnhancedEstimates(EnhancedEstimatesImpl enhancedEstimates)122     abstract EnhancedEstimates bindEnhancedEstimates(EnhancedEstimatesImpl enhancedEstimates);
123 
124     @Binds
bindNotificationLockscreenUserManager( NotificationLockscreenUserManagerImpl notificationLockscreenUserManager)125     abstract NotificationLockscreenUserManager bindNotificationLockscreenUserManager(
126             NotificationLockscreenUserManagerImpl notificationLockscreenUserManager);
127 
128     @Provides
129     @Singleton
provideBatteryController(Context context, EnhancedEstimates enhancedEstimates, PowerManager powerManager, BroadcastDispatcher broadcastDispatcher, @Main Handler mainHandler, @Background Handler bgHandler)130     static BatteryController provideBatteryController(Context context,
131             EnhancedEstimates enhancedEstimates, PowerManager powerManager,
132             BroadcastDispatcher broadcastDispatcher, @Main Handler mainHandler,
133             @Background Handler bgHandler) {
134         BatteryController bC = new BatteryControllerImpl(context, enhancedEstimates, powerManager,
135                 broadcastDispatcher, mainHandler, bgHandler);
136         bC.init();
137         return bC;
138     }
139 
140     @Binds
141     @Singleton
bindQSFactory(QSFactoryImpl qsFactoryImpl)142     public abstract QSFactory bindQSFactory(QSFactoryImpl qsFactoryImpl);
143 
144     @Binds
bindDockManager(DockManagerImpl dockManager)145     abstract DockManager bindDockManager(DockManagerImpl dockManager);
146 
147     @Binds
bindKeyguardEnvironment( KeyguardEnvironmentImpl keyguardEnvironment)148     abstract NotificationEntryManager.KeyguardEnvironment bindKeyguardEnvironment(
149             KeyguardEnvironmentImpl keyguardEnvironment);
150 
151     @Binds
provideShadeController(ShadeControllerImpl shadeController)152     abstract ShadeController provideShadeController(ShadeControllerImpl shadeController);
153 
154     @Binds
bindSystemUIRootComponent( CarSystemUIRootComponent systemUIRootComponent)155     abstract SystemUIRootComponent bindSystemUIRootComponent(
156             CarSystemUIRootComponent systemUIRootComponent);
157 
158     @Binds
bindVolumeDialogComponent( CarVolumeDialogComponent carVolumeDialogComponent)159     abstract VolumeDialogComponent bindVolumeDialogComponent(
160             CarVolumeDialogComponent carVolumeDialogComponent);
161 
162     @Binds
bindKeyguardViewController( CarKeyguardViewController carKeyguardViewController)163     abstract KeyguardViewController bindKeyguardViewController(
164             CarKeyguardViewController carKeyguardViewController);
165 
166     @Binds
bindDeviceProvisionedController( CarDeviceProvisionedControllerImpl deviceProvisionedController)167     abstract DeviceProvisionedController bindDeviceProvisionedController(
168             CarDeviceProvisionedControllerImpl deviceProvisionedController);
169 
170     @Binds
bindCarDeviceProvisionedController( CarDeviceProvisionedControllerImpl deviceProvisionedController)171     abstract CarDeviceProvisionedController bindCarDeviceProvisionedController(
172             CarDeviceProvisionedControllerImpl deviceProvisionedController);
173 
174     @Binds
bindNotificationShadeWindowController( DummyNotificationShadeWindowController notificationShadeWindowController)175     abstract NotificationShadeWindowController bindNotificationShadeWindowController(
176             DummyNotificationShadeWindowController notificationShadeWindowController);
177 
178     @Binds
bindDozeHost(DozeServiceHost dozeServiceHost)179     abstract DozeHost bindDozeHost(DozeServiceHost dozeServiceHost);
180 
181     @Binds
bindStatusBar(UnusedStatusBar statusBar)182     abstract StatusBar bindStatusBar(UnusedStatusBar statusBar);
183 }
184