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.dagger; 18 19 import android.annotation.Nullable; 20 import android.annotation.SuppressLint; 21 import android.app.ActivityManager; 22 import android.app.ActivityTaskManager; 23 import android.app.AlarmManager; 24 import android.app.IActivityManager; 25 import android.app.IActivityTaskManager; 26 import android.app.IWallpaperManager; 27 import android.app.KeyguardManager; 28 import android.app.NotificationManager; 29 import android.app.WallpaperManager; 30 import android.app.admin.DevicePolicyManager; 31 import android.app.role.RoleManager; 32 import android.app.trust.TrustManager; 33 import android.content.ContentResolver; 34 import android.content.Context; 35 import android.content.pm.IPackageManager; 36 import android.content.pm.LauncherApps; 37 import android.content.pm.PackageManager; 38 import android.content.pm.ShortcutManager; 39 import android.content.res.Resources; 40 import android.hardware.SensorPrivacyManager; 41 import android.hardware.display.DisplayManager; 42 import android.media.AudioManager; 43 import android.media.MediaRouter2Manager; 44 import android.net.ConnectivityManager; 45 import android.net.NetworkScoreManager; 46 import android.net.wifi.WifiManager; 47 import android.os.BatteryStats; 48 import android.os.Handler; 49 import android.os.PowerManager; 50 import android.os.ServiceManager; 51 import android.os.UserHandle; 52 import android.os.UserManager; 53 import android.os.Vibrator; 54 import android.service.dreams.DreamService; 55 import android.service.dreams.IDreamManager; 56 import android.telecom.TelecomManager; 57 import android.telephony.TelephonyManager; 58 import android.view.IWindowManager; 59 import android.view.WindowManager; 60 import android.view.WindowManagerGlobal; 61 import android.view.accessibility.AccessibilityManager; 62 63 import com.android.internal.app.IBatteryStats; 64 import com.android.internal.statusbar.IStatusBarService; 65 import com.android.internal.util.LatencyTracker; 66 import com.android.settingslib.bluetooth.LocalBluetoothManager; 67 import com.android.systemui.dagger.qualifiers.Background; 68 import com.android.systemui.dagger.qualifiers.DisplayId; 69 import com.android.systemui.dagger.qualifiers.Main; 70 import com.android.systemui.shared.system.PackageManagerWrapper; 71 72 import javax.inject.Singleton; 73 74 import dagger.Module; 75 import dagger.Provides; 76 77 /** 78 * Provides Non-SystemUI, Framework-Owned instances to the dependency graph. 79 */ 80 @Module 81 public class SystemServicesModule { 82 @Provides 83 @Singleton provideAccessibilityManager(Context context)84 static AccessibilityManager provideAccessibilityManager(Context context) { 85 return context.getSystemService(AccessibilityManager.class); 86 } 87 88 @Provides 89 @Singleton provideActivityManager(Context context)90 static ActivityManager provideActivityManager(Context context) { 91 return context.getSystemService(ActivityManager.class); 92 } 93 94 @Singleton 95 @Provides provideAlarmManager(Context context)96 static AlarmManager provideAlarmManager(Context context) { 97 return context.getSystemService(AlarmManager.class); 98 } 99 100 @Provides 101 @Singleton provideAudioManager(Context context)102 static AudioManager provideAudioManager(Context context) { 103 return context.getSystemService(AudioManager.class); 104 } 105 106 @Provides 107 @Singleton provideConnectivityManagager(Context context)108 static ConnectivityManager provideConnectivityManagager(Context context) { 109 return context.getSystemService(ConnectivityManager.class); 110 } 111 112 @Provides 113 @Singleton provideContentResolver(Context context)114 static ContentResolver provideContentResolver(Context context) { 115 return context.getContentResolver(); 116 } 117 118 @Provides 119 @Singleton provideDevicePolicyManager(Context context)120 static DevicePolicyManager provideDevicePolicyManager(Context context) { 121 return context.getSystemService(DevicePolicyManager.class); 122 } 123 124 @Provides 125 @DisplayId provideDisplayId(Context context)126 static int provideDisplayId(Context context) { 127 return context.getDisplayId(); 128 } 129 130 @Provides 131 @Singleton provideDisplayManager(Context context)132 static DisplayManager provideDisplayManager(Context context) { 133 return context.getSystemService(DisplayManager.class); 134 } 135 136 @Singleton 137 @Provides provideIActivityManager()138 static IActivityManager provideIActivityManager() { 139 return ActivityManager.getService(); 140 } 141 142 @Singleton 143 @Provides provideIActivityTaskManager()144 static IActivityTaskManager provideIActivityTaskManager() { 145 return ActivityTaskManager.getService(); 146 } 147 148 @Provides 149 @Singleton provideIBatteryStats()150 static IBatteryStats provideIBatteryStats() { 151 return IBatteryStats.Stub.asInterface( 152 ServiceManager.getService(BatteryStats.SERVICE_NAME)); 153 } 154 155 @Provides 156 @Singleton provideIDreamManager()157 static IDreamManager provideIDreamManager() { 158 return IDreamManager.Stub.asInterface( 159 ServiceManager.checkService(DreamService.DREAM_SERVICE)); 160 } 161 162 @Provides 163 @Singleton provideIPackageManager()164 static IPackageManager provideIPackageManager() { 165 return IPackageManager.Stub.asInterface(ServiceManager.getService("package")); 166 } 167 168 @Singleton 169 @Provides provideIStatusBarService()170 static IStatusBarService provideIStatusBarService() { 171 return IStatusBarService.Stub.asInterface( 172 ServiceManager.getService(Context.STATUS_BAR_SERVICE)); 173 } 174 175 @Provides 176 @Nullable provideIWallPaperManager()177 static IWallpaperManager provideIWallPaperManager() { 178 return IWallpaperManager.Stub.asInterface( 179 ServiceManager.getService(Context.WALLPAPER_SERVICE)); 180 } 181 182 @Singleton 183 @Provides provideIWindowManager()184 static IWindowManager provideIWindowManager() { 185 return WindowManagerGlobal.getWindowManagerService(); 186 } 187 188 @Singleton 189 @Provides provideKeyguardManager(Context context)190 static KeyguardManager provideKeyguardManager(Context context) { 191 return context.getSystemService(KeyguardManager.class); 192 } 193 194 @Singleton 195 @Provides provideLatencyTracker(Context context)196 static LatencyTracker provideLatencyTracker(Context context) { 197 return LatencyTracker.getInstance(context); 198 } 199 200 @Singleton 201 @Provides provideLauncherApps(Context context)202 static LauncherApps provideLauncherApps(Context context) { 203 return context.getSystemService(LauncherApps.class); 204 } 205 206 @SuppressLint("MissingPermission") 207 @Singleton 208 @Provides 209 @Nullable provideLocalBluetoothController(Context context, @Background Handler bgHandler)210 static LocalBluetoothManager provideLocalBluetoothController(Context context, 211 @Background Handler bgHandler) { 212 return LocalBluetoothManager.create(context, bgHandler, UserHandle.ALL); 213 } 214 215 @Provides provideMediaRouter2Manager(Context context)216 static MediaRouter2Manager provideMediaRouter2Manager(Context context) { 217 return MediaRouter2Manager.getInstance(context); 218 } 219 220 @Provides 221 @Singleton provideNetworkScoreManager(Context context)222 static NetworkScoreManager provideNetworkScoreManager(Context context) { 223 return context.getSystemService(NetworkScoreManager.class); 224 } 225 226 @Singleton 227 @Provides provideNotificationManager(Context context)228 static NotificationManager provideNotificationManager(Context context) { 229 return context.getSystemService(NotificationManager.class); 230 } 231 232 @Singleton 233 @Provides providePackageManager(Context context)234 static PackageManager providePackageManager(Context context) { 235 return context.getPackageManager(); 236 } 237 238 @Singleton 239 @Provides providePackageManagerWrapper()240 static PackageManagerWrapper providePackageManagerWrapper() { 241 return PackageManagerWrapper.getInstance(); 242 } 243 244 /** */ 245 @Singleton 246 @Provides providePowerManager(Context context)247 static PowerManager providePowerManager(Context context) { 248 return context.getSystemService(PowerManager.class); 249 } 250 251 @Provides 252 @Main provideResources(Context context)253 static Resources provideResources(Context context) { 254 return context.getResources(); 255 } 256 257 @Singleton 258 @Provides provideSensorPrivacyManager(Context context)259 static SensorPrivacyManager provideSensorPrivacyManager(Context context) { 260 return context.getSystemService(SensorPrivacyManager.class); 261 } 262 263 @Singleton 264 @Provides provideShortcutManager(Context context)265 static ShortcutManager provideShortcutManager(Context context) { 266 return context.getSystemService(ShortcutManager.class); 267 } 268 269 @Provides 270 @Singleton 271 @Nullable provideTelecomManager(Context context)272 static TelecomManager provideTelecomManager(Context context) { 273 return context.getSystemService(TelecomManager.class); 274 } 275 276 @Provides 277 @Singleton provideTelephonyManager(Context context)278 static TelephonyManager provideTelephonyManager(Context context) { 279 return context.getSystemService(TelephonyManager.class); 280 } 281 282 @Provides 283 @Singleton provideTrustManager(Context context)284 static TrustManager provideTrustManager(Context context) { 285 return context.getSystemService(TrustManager.class); 286 } 287 288 @Provides 289 @Singleton 290 @Nullable provideVibrator(Context context)291 static Vibrator provideVibrator(Context context) { 292 return context.getSystemService(Vibrator.class); 293 } 294 295 @Provides 296 @Singleton provideUserManager(Context context)297 static UserManager provideUserManager(Context context) { 298 return context.getSystemService(UserManager.class); 299 } 300 301 @Provides provideWallpaperManager(Context context)302 static WallpaperManager provideWallpaperManager(Context context) { 303 return (WallpaperManager) context.getSystemService(Context.WALLPAPER_SERVICE); 304 } 305 306 @Provides 307 @Singleton provideWifiManager(Context context)308 static WifiManager provideWifiManager(Context context) { 309 return context.getSystemService(WifiManager.class); 310 } 311 312 @Singleton 313 @Provides provideWindowManager(Context context)314 static WindowManager provideWindowManager(Context context) { 315 return context.getSystemService(WindowManager.class); 316 } 317 318 @Provides 319 @Singleton provideRoleManager(Context context)320 static RoleManager provideRoleManager(Context context) { 321 return context.getSystemService(RoleManager.class); 322 } 323 } 324