1 /* 2 * Copyright (C) 2020 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.statusbar.policy.dagger; 18 19 import android.content.Context; 20 import android.content.res.Resources; 21 import android.os.UserManager; 22 23 import com.android.internal.R; 24 import com.android.settingslib.devicestate.DeviceStateRotationLockSettingsManager; 25 import com.android.systemui.dagger.SysUISingleton; 26 import com.android.systemui.dagger.qualifiers.Main; 27 import com.android.systemui.settings.UserTracker; 28 import com.android.systemui.statusbar.connectivity.AccessPointController; 29 import com.android.systemui.statusbar.connectivity.AccessPointControllerImpl; 30 import com.android.systemui.statusbar.connectivity.NetworkController; 31 import com.android.systemui.statusbar.connectivity.NetworkControllerImpl; 32 import com.android.systemui.statusbar.connectivity.WifiPickerTrackerFactory; 33 import com.android.systemui.statusbar.phone.ConfigurationControllerImpl; 34 import com.android.systemui.statusbar.policy.BluetoothController; 35 import com.android.systemui.statusbar.policy.BluetoothControllerImpl; 36 import com.android.systemui.statusbar.policy.CastController; 37 import com.android.systemui.statusbar.policy.CastControllerImpl; 38 import com.android.systemui.statusbar.policy.ConfigurationController; 39 import com.android.systemui.statusbar.policy.DataSaverController; 40 import com.android.systemui.statusbar.policy.DeviceControlsController; 41 import com.android.systemui.statusbar.policy.DeviceControlsControllerImpl; 42 import com.android.systemui.statusbar.policy.DevicePostureController; 43 import com.android.systemui.statusbar.policy.DevicePostureControllerImpl; 44 import com.android.systemui.statusbar.policy.ExtensionController; 45 import com.android.systemui.statusbar.policy.ExtensionControllerImpl; 46 import com.android.systemui.statusbar.policy.FlashlightController; 47 import com.android.systemui.statusbar.policy.FlashlightControllerImpl; 48 import com.android.systemui.statusbar.policy.HotspotController; 49 import com.android.systemui.statusbar.policy.HotspotControllerImpl; 50 import com.android.systemui.statusbar.policy.KeyguardStateController; 51 import com.android.systemui.statusbar.policy.KeyguardStateControllerImpl; 52 import com.android.systemui.statusbar.policy.LocationController; 53 import com.android.systemui.statusbar.policy.LocationControllerImpl; 54 import com.android.systemui.statusbar.policy.NextAlarmController; 55 import com.android.systemui.statusbar.policy.NextAlarmControllerImpl; 56 import com.android.systemui.statusbar.policy.RotationLockController; 57 import com.android.systemui.statusbar.policy.RotationLockControllerImpl; 58 import com.android.systemui.statusbar.policy.SecurityController; 59 import com.android.systemui.statusbar.policy.SecurityControllerImpl; 60 import com.android.systemui.statusbar.policy.UserInfoController; 61 import com.android.systemui.statusbar.policy.UserInfoControllerImpl; 62 import com.android.systemui.statusbar.policy.WalletController; 63 import com.android.systemui.statusbar.policy.WalletControllerImpl; 64 import com.android.systemui.statusbar.policy.ZenModeController; 65 import com.android.systemui.statusbar.policy.ZenModeControllerImpl; 66 import com.android.systemui.statusbar.policy.bluetooth.BluetoothRepository; 67 import com.android.systemui.statusbar.policy.bluetooth.BluetoothRepositoryImpl; 68 69 import dagger.Binds; 70 import dagger.Module; 71 import dagger.Provides; 72 73 import java.util.concurrent.Executor; 74 75 import javax.inject.Named; 76 77 /** Dagger Module for code in the statusbar.policy package. */ 78 @Module 79 public interface StatusBarPolicyModule { 80 81 String DEVICE_STATE_ROTATION_LOCK_DEFAULTS = "DEVICE_STATE_ROTATION_LOCK_DEFAULTS"; 82 83 /** */ 84 @Binds provideBluetoothController(BluetoothControllerImpl controllerImpl)85 BluetoothController provideBluetoothController(BluetoothControllerImpl controllerImpl); 86 87 /** */ 88 @Binds provideBluetoothRepository(BluetoothRepositoryImpl impl)89 BluetoothRepository provideBluetoothRepository(BluetoothRepositoryImpl impl); 90 91 /** */ 92 @Binds provideCastController(CastControllerImpl controllerImpl)93 CastController provideCastController(CastControllerImpl controllerImpl); 94 95 /** */ 96 @Binds bindConfigurationController(ConfigurationControllerImpl impl)97 ConfigurationController bindConfigurationController(ConfigurationControllerImpl impl); 98 99 /** */ 100 @Binds provideExtensionController(ExtensionControllerImpl controllerImpl)101 ExtensionController provideExtensionController(ExtensionControllerImpl controllerImpl); 102 103 /** */ 104 @Binds provideFlashlightController(FlashlightControllerImpl controllerImpl)105 FlashlightController provideFlashlightController(FlashlightControllerImpl controllerImpl); 106 107 /** */ 108 @Binds provideKeyguardMonitor(KeyguardStateControllerImpl controllerImpl)109 KeyguardStateController provideKeyguardMonitor(KeyguardStateControllerImpl controllerImpl); 110 111 /** */ 112 @Binds provideHotspotController(HotspotControllerImpl controllerImpl)113 HotspotController provideHotspotController(HotspotControllerImpl controllerImpl); 114 115 /** */ 116 @Binds provideLocationController(LocationControllerImpl controllerImpl)117 LocationController provideLocationController(LocationControllerImpl controllerImpl); 118 119 /** */ 120 @Binds provideNetworkController(NetworkControllerImpl controllerImpl)121 NetworkController provideNetworkController(NetworkControllerImpl controllerImpl); 122 123 /** */ 124 @Binds provideNextAlarmController(NextAlarmControllerImpl controllerImpl)125 NextAlarmController provideNextAlarmController(NextAlarmControllerImpl controllerImpl); 126 127 /** */ 128 @Binds provideRotationLockController(RotationLockControllerImpl controllerImpl)129 RotationLockController provideRotationLockController(RotationLockControllerImpl controllerImpl); 130 131 /** */ 132 @Binds provideSecurityController(SecurityControllerImpl controllerImpl)133 SecurityController provideSecurityController(SecurityControllerImpl controllerImpl); 134 135 /** */ 136 @Binds provideUserInfoContrller(UserInfoControllerImpl controllerImpl)137 UserInfoController provideUserInfoContrller(UserInfoControllerImpl controllerImpl); 138 139 /** */ 140 @Binds provideZenModeController(ZenModeControllerImpl controllerImpl)141 ZenModeController provideZenModeController(ZenModeControllerImpl controllerImpl); 142 143 /** */ 144 @Binds provideDeviceControlsController( DeviceControlsControllerImpl controllerImpl)145 DeviceControlsController provideDeviceControlsController( 146 DeviceControlsControllerImpl controllerImpl); 147 148 /** */ 149 @Binds provideWalletController(WalletControllerImpl controllerImpl)150 WalletController provideWalletController(WalletControllerImpl controllerImpl); 151 152 /** */ 153 @Binds provideAccessPointController( AccessPointControllerImpl accessPointControllerImpl)154 AccessPointController provideAccessPointController( 155 AccessPointControllerImpl accessPointControllerImpl); 156 157 /** */ 158 @Binds provideDevicePostureController( DevicePostureControllerImpl devicePostureControllerImpl)159 DevicePostureController provideDevicePostureController( 160 DevicePostureControllerImpl devicePostureControllerImpl); 161 162 /** */ 163 @SysUISingleton 164 @Provides provideAccessPointControllerImpl( UserManager userManager, UserTracker userTracker, @Main Executor mainExecutor, WifiPickerTrackerFactory wifiPickerTrackerFactory )165 static AccessPointControllerImpl provideAccessPointControllerImpl( 166 UserManager userManager, 167 UserTracker userTracker, 168 @Main Executor mainExecutor, 169 WifiPickerTrackerFactory wifiPickerTrackerFactory 170 ) { 171 AccessPointControllerImpl controller = new AccessPointControllerImpl( 172 userManager, 173 userTracker, 174 mainExecutor, 175 wifiPickerTrackerFactory 176 ); 177 controller.init(); 178 return controller; 179 } 180 181 /** Returns a singleton instance of DeviceStateRotationLockSettingsManager */ 182 @SysUISingleton 183 @Provides provideAutoRotateSettingsManager( Context context)184 static DeviceStateRotationLockSettingsManager provideAutoRotateSettingsManager( 185 Context context) { 186 return DeviceStateRotationLockSettingsManager.getInstance(context); 187 } 188 189 /** 190 * Default values for per-device state rotation lock settings. 191 */ 192 @Provides 193 @Named(DEVICE_STATE_ROTATION_LOCK_DEFAULTS) providesDeviceStateRotationLockDefaults(@ain Resources resources)194 static String[] providesDeviceStateRotationLockDefaults(@Main Resources resources) { 195 return resources.getStringArray( 196 R.array.config_perDeviceStateRotationLockDefaults); 197 } 198 199 /** */ 200 @Provides 201 @SysUISingleton provideDataSaverController(NetworkController networkController)202 static DataSaverController provideDataSaverController(NetworkController networkController) { 203 return networkController.getDataSaverController(); 204 } 205 } 206