blob: 88f96a8b19fece2c54d7e35c7f1372205a507c97 [file] [log] [blame]
Govinda Wasserman2e86fb62019-08-13 11:35:44 -04001/*
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
Dave Mankofff4736812019-10-18 17:25:50 -040017package com.android.systemui.dagger;
Govinda Wasserman2e86fb62019-08-13 11:35:44 -040018
19import static com.android.systemui.Dependency.ALLOW_NOTIFICATION_LONG_PRESS_NAME;
20import static com.android.systemui.Dependency.LEAK_REPORT_EMAIL_NAME;
21
Dave Mankoff613c7c62019-11-04 11:46:36 -050022import android.content.Context;
23
Govinda Wasserman2e86fb62019-08-13 11:35:44 -040024import androidx.annotation.Nullable;
25
kwaky198b5dc2020-02-28 11:14:37 -080026import com.android.keyguard.KeyguardViewController;
Evan Laird31ca5472020-04-08 17:45:24 -040027import com.android.systemui.broadcast.BroadcastDispatcher;
Govinda Wasserman2e86fb62019-08-13 11:35:44 -040028import com.android.systemui.dock.DockManager;
29import com.android.systemui.dock.DockManagerImpl;
John Li4e3dddc2020-03-04 21:35:43 +080030import com.android.systemui.plugins.qs.QSFactory;
Dave Mankoffff637802019-11-11 17:13:51 -050031import com.android.systemui.plugins.statusbar.StatusBarStateController;
Govinda Wasserman2e86fb62019-08-13 11:35:44 -040032import com.android.systemui.power.EnhancedEstimates;
33import com.android.systemui.power.EnhancedEstimatesImpl;
John Li4e3dddc2020-03-04 21:35:43 +080034import com.android.systemui.qs.tileimpl.QSFactoryImpl;
Dave Mankoffae3b4322019-11-05 19:48:24 -050035import com.android.systemui.recents.Recents;
36import com.android.systemui.recents.RecentsImplementation;
Evan Laird31ca5472020-04-08 17:45:24 -040037import com.android.systemui.settings.CurrentUserContextTracker;
Evan Roskycf05fd92019-12-20 13:55:56 -080038import com.android.systemui.stackdivider.DividerModule;
Dave Mankoffae3b4322019-11-05 19:48:24 -050039import com.android.systemui.statusbar.CommandQueue;
Govinda Wasserman2e86fb62019-08-13 11:35:44 -040040import com.android.systemui.statusbar.NotificationLockscreenUserManager;
41import com.android.systemui.statusbar.NotificationLockscreenUserManagerImpl;
Evan Laird181de622019-10-24 09:53:02 -040042import com.android.systemui.statusbar.notification.NotificationEntryManager;
Dave Mankoffff637802019-11-11 17:13:51 -050043import com.android.systemui.statusbar.phone.HeadsUpManagerPhone;
44import com.android.systemui.statusbar.phone.KeyguardBypassController;
Govinda Wasserman2e86fb62019-08-13 11:35:44 -040045import com.android.systemui.statusbar.phone.KeyguardEnvironmentImpl;
Beverly95a0802ac2020-02-10 15:27:40 -050046import com.android.systemui.statusbar.phone.NotificationGroupManager;
Govinda Wasserman2e86fb62019-08-13 11:35:44 -040047import com.android.systemui.statusbar.phone.ShadeController;
Heemin Seogba6337f2019-12-10 15:34:37 -080048import com.android.systemui.statusbar.phone.ShadeControllerImpl;
kwaky198b5dc2020-02-28 11:14:37 -080049import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
John Li8360e4e2020-02-20 19:21:47 +080050import com.android.systemui.statusbar.policy.BatteryController;
51import com.android.systemui.statusbar.policy.BatteryControllerImpl;
Beverly95a0802ac2020-02-10 15:27:40 -050052import com.android.systemui.statusbar.policy.ConfigurationController;
Abhijoy Sahaee513692019-12-10 13:52:26 -080053import com.android.systemui.statusbar.policy.DeviceProvisionedController;
54import com.android.systemui.statusbar.policy.DeviceProvisionedControllerImpl;
Dave Mankoffff637802019-11-11 17:13:51 -050055import com.android.systemui.statusbar.policy.HeadsUpManager;
Govinda Wasserman2e86fb62019-08-13 11:35:44 -040056
57import javax.inject.Named;
58import javax.inject.Singleton;
59
60import dagger.Binds;
61import dagger.Module;
62import dagger.Provides;
63
64/**
65 * A dagger module for injecting default implementations of components of System UI that may be
66 * overridden by the System UI implementation.
67 */
Evan Roskycf05fd92019-12-20 13:55:56 -080068@Module(includes = {DividerModule.class})
Sergey Nikolaienkov7842bac2019-12-19 16:34:11 +010069public abstract class SystemUIDefaultModule {
Govinda Wasserman2e86fb62019-08-13 11:35:44 -040070
71 @Singleton
72 @Provides
73 @Named(LEAK_REPORT_EMAIL_NAME)
74 @Nullable
75 static String provideLeakReportEmail() {
76 return null;
77 }
78
79 @Binds
80 abstract EnhancedEstimates bindEnhancedEstimates(EnhancedEstimatesImpl enhancedEstimates);
81
82 @Binds
83 abstract NotificationLockscreenUserManager bindNotificationLockscreenUserManager(
84 NotificationLockscreenUserManagerImpl notificationLockscreenUserManager);
85
86 @Binds
John Li8360e4e2020-02-20 19:21:47 +080087 @Singleton
88 public abstract BatteryController provideBatteryController(
89 BatteryControllerImpl controllerImpl);
90
91 @Binds
John Li4e3dddc2020-03-04 21:35:43 +080092 @Singleton
93 public abstract QSFactory provideQSFactory(QSFactoryImpl qsFactoryImpl);
94
95 @Binds
Govinda Wasserman2e86fb62019-08-13 11:35:44 -040096 abstract DockManager bindDockManager(DockManagerImpl dockManager);
97
98 @Binds
Evan Laird181de622019-10-24 09:53:02 -040099 abstract NotificationEntryManager.KeyguardEnvironment bindKeyguardEnvironment(
Govinda Wasserman2e86fb62019-08-13 11:35:44 -0400100 KeyguardEnvironmentImpl keyguardEnvironment);
101
Dave Mankoff0cf8dfc2019-09-27 12:46:41 -0400102 @Binds
Heemin Seogba6337f2019-12-10 15:34:37 -0800103 abstract ShadeController provideShadeController(ShadeControllerImpl shadeController);
Govinda Wasserman2e86fb62019-08-13 11:35:44 -0400104
Govinda Wasserman2e86fb62019-08-13 11:35:44 -0400105 @Singleton
106 @Provides
107 @Named(ALLOW_NOTIFICATION_LONG_PRESS_NAME)
108 static boolean provideAllowNotificationLongPress() {
109 return true;
110 }
Dave Mankoff613c7c62019-11-04 11:46:36 -0500111
112 @Singleton
113 @Provides
Beverly95a0802ac2020-02-10 15:27:40 -0500114 static HeadsUpManagerPhone provideHeadsUpManagerPhone(
115 Context context,
Dave Mankoffff637802019-11-11 17:13:51 -0500116 StatusBarStateController statusBarStateController,
Beverly95a0802ac2020-02-10 15:27:40 -0500117 KeyguardBypassController bypassController,
118 NotificationGroupManager groupManager,
119 ConfigurationController configurationController) {
120 return new HeadsUpManagerPhone(context, statusBarStateController, bypassController,
121 groupManager, configurationController);
Dave Mankoffff637802019-11-11 17:13:51 -0500122 }
123
124 @Binds
125 abstract HeadsUpManager bindHeadsUpManagerPhone(HeadsUpManagerPhone headsUpManagerPhone);
126
Dave Mankoffae3b4322019-11-05 19:48:24 -0500127 @Provides
128 @Singleton
129 static Recents provideRecents(Context context, RecentsImplementation recentsImplementation,
130 CommandQueue commandQueue) {
131 return new Recents(context, recentsImplementation, commandQueue);
132 }
Abhijoy Sahaee513692019-12-10 13:52:26 -0800133
134 @Binds
135 abstract DeviceProvisionedController bindDeviceProvisionedController(
136 DeviceProvisionedControllerImpl deviceProvisionedController);
kwaky198b5dc2020-02-28 11:14:37 -0800137
138 @Binds
139 abstract KeyguardViewController bindKeyguardViewController(
140 StatusBarKeyguardViewManager statusBarKeyguardViewManager);
Evan Laird31ca5472020-04-08 17:45:24 -0400141
142 @Singleton
143 @Provides
144 static CurrentUserContextTracker provideCurrentUserContextTracker(
145 Context context,
146 BroadcastDispatcher broadcastDispatcher) {
147 CurrentUserContextTracker tracker =
148 new CurrentUserContextTracker(context, broadcastDispatcher);
149 tracker.initialize();
150 return tracker;
151 }
Govinda Wasserman2e86fb62019-08-13 11:35:44 -0400152}