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