blob: 8c572fe8f842602f3ece95a747c299d8bbaa3c5c [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;
Govinda Wasserman2e86fb62019-08-13 11:35:44 -040027import com.android.systemui.dock.DockManager;
28import com.android.systemui.dock.DockManagerImpl;
John Li4e3dddc2020-03-04 21:35:43 +080029import com.android.systemui.plugins.qs.QSFactory;
Dave Mankoffff637802019-11-11 17:13:51 -050030import com.android.systemui.plugins.statusbar.StatusBarStateController;
Govinda Wasserman2e86fb62019-08-13 11:35:44 -040031import com.android.systemui.power.EnhancedEstimates;
32import com.android.systemui.power.EnhancedEstimatesImpl;
John Li4e3dddc2020-03-04 21:35:43 +080033import com.android.systemui.qs.tileimpl.QSFactoryImpl;
Dave Mankoffae3b4322019-11-05 19:48:24 -050034import com.android.systemui.recents.Recents;
35import com.android.systemui.recents.RecentsImplementation;
Evan Roskycf05fd92019-12-20 13:55:56 -080036import com.android.systemui.stackdivider.DividerModule;
Dave Mankoffae3b4322019-11-05 19:48:24 -050037import com.android.systemui.statusbar.CommandQueue;
Govinda Wasserman2e86fb62019-08-13 11:35:44 -040038import com.android.systemui.statusbar.NotificationLockscreenUserManager;
39import com.android.systemui.statusbar.NotificationLockscreenUserManagerImpl;
Evan Laird181de622019-10-24 09:53:02 -040040import com.android.systemui.statusbar.notification.NotificationEntryManager;
Dave Mankoffff637802019-11-11 17:13:51 -050041import com.android.systemui.statusbar.phone.HeadsUpManagerPhone;
42import com.android.systemui.statusbar.phone.KeyguardBypassController;
Govinda Wasserman2e86fb62019-08-13 11:35:44 -040043import com.android.systemui.statusbar.phone.KeyguardEnvironmentImpl;
Beverly95a0802ac2020-02-10 15:27:40 -050044import com.android.systemui.statusbar.phone.NotificationGroupManager;
Govinda Wasserman2e86fb62019-08-13 11:35:44 -040045import com.android.systemui.statusbar.phone.ShadeController;
Heemin Seogba6337f2019-12-10 15:34:37 -080046import com.android.systemui.statusbar.phone.ShadeControllerImpl;
kwaky198b5dc2020-02-28 11:14:37 -080047import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
John Li8360e4e2020-02-20 19:21:47 +080048import com.android.systemui.statusbar.policy.BatteryController;
49import com.android.systemui.statusbar.policy.BatteryControllerImpl;
Beverly95a0802ac2020-02-10 15:27:40 -050050import com.android.systemui.statusbar.policy.ConfigurationController;
Abhijoy Sahaee513692019-12-10 13:52:26 -080051import com.android.systemui.statusbar.policy.DeviceProvisionedController;
52import com.android.systemui.statusbar.policy.DeviceProvisionedControllerImpl;
Dave Mankoffff637802019-11-11 17:13:51 -050053import com.android.systemui.statusbar.policy.HeadsUpManager;
Govinda Wasserman2e86fb62019-08-13 11:35:44 -040054
55import javax.inject.Named;
56import javax.inject.Singleton;
57
58import dagger.Binds;
59import dagger.Module;
60import dagger.Provides;
61
62/**
63 * A dagger module for injecting default implementations of components of System UI that may be
64 * overridden by the System UI implementation.
65 */
Evan Roskycf05fd92019-12-20 13:55:56 -080066@Module(includes = {DividerModule.class})
Sergey Nikolaienkov7842bac2019-12-19 16:34:11 +010067public abstract class SystemUIDefaultModule {
Govinda Wasserman2e86fb62019-08-13 11:35:44 -040068
69 @Singleton
70 @Provides
71 @Named(LEAK_REPORT_EMAIL_NAME)
72 @Nullable
73 static String provideLeakReportEmail() {
74 return null;
75 }
76
77 @Binds
78 abstract EnhancedEstimates bindEnhancedEstimates(EnhancedEstimatesImpl enhancedEstimates);
79
80 @Binds
81 abstract NotificationLockscreenUserManager bindNotificationLockscreenUserManager(
82 NotificationLockscreenUserManagerImpl notificationLockscreenUserManager);
83
84 @Binds
John Li8360e4e2020-02-20 19:21:47 +080085 @Singleton
86 public abstract BatteryController provideBatteryController(
87 BatteryControllerImpl controllerImpl);
88
89 @Binds
John Li4e3dddc2020-03-04 21:35:43 +080090 @Singleton
91 public abstract QSFactory provideQSFactory(QSFactoryImpl qsFactoryImpl);
92
93 @Binds
Govinda Wasserman2e86fb62019-08-13 11:35:44 -040094 abstract DockManager bindDockManager(DockManagerImpl dockManager);
95
96 @Binds
Evan Laird181de622019-10-24 09:53:02 -040097 abstract NotificationEntryManager.KeyguardEnvironment bindKeyguardEnvironment(
Govinda Wasserman2e86fb62019-08-13 11:35:44 -040098 KeyguardEnvironmentImpl keyguardEnvironment);
99
Dave Mankoff0cf8dfc2019-09-27 12:46:41 -0400100 @Binds
Heemin Seogba6337f2019-12-10 15:34:37 -0800101 abstract ShadeController provideShadeController(ShadeControllerImpl shadeController);
Govinda Wasserman2e86fb62019-08-13 11:35:44 -0400102
Govinda Wasserman2e86fb62019-08-13 11:35:44 -0400103 @Singleton
104 @Provides
105 @Named(ALLOW_NOTIFICATION_LONG_PRESS_NAME)
106 static boolean provideAllowNotificationLongPress() {
107 return true;
108 }
Dave Mankoff613c7c62019-11-04 11:46:36 -0500109
110 @Singleton
111 @Provides
Beverly95a0802ac2020-02-10 15:27:40 -0500112 static HeadsUpManagerPhone provideHeadsUpManagerPhone(
113 Context context,
Dave Mankoffff637802019-11-11 17:13:51 -0500114 StatusBarStateController statusBarStateController,
Beverly95a0802ac2020-02-10 15:27:40 -0500115 KeyguardBypassController bypassController,
116 NotificationGroupManager groupManager,
117 ConfigurationController configurationController) {
118 return new HeadsUpManagerPhone(context, statusBarStateController, bypassController,
119 groupManager, configurationController);
Dave Mankoffff637802019-11-11 17:13:51 -0500120 }
121
122 @Binds
123 abstract HeadsUpManager bindHeadsUpManagerPhone(HeadsUpManagerPhone headsUpManagerPhone);
124
Dave Mankoffae3b4322019-11-05 19:48:24 -0500125 @Provides
126 @Singleton
127 static Recents provideRecents(Context context, RecentsImplementation recentsImplementation,
128 CommandQueue commandQueue) {
129 return new Recents(context, recentsImplementation, commandQueue);
130 }
Abhijoy Sahaee513692019-12-10 13:52:26 -0800131
132 @Binds
133 abstract DeviceProvisionedController bindDeviceProvisionedController(
134 DeviceProvisionedControllerImpl deviceProvisionedController);
kwaky198b5dc2020-02-28 11:14:37 -0800135
136 @Binds
137 abstract KeyguardViewController bindKeyguardViewController(
138 StatusBarKeyguardViewManager statusBarKeyguardViewManager);
Govinda Wasserman2e86fb62019-08-13 11:35:44 -0400139}