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