1 /* 2 * Copyright (C) 2015 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 android.app; 18 19 import android.accounts.AccountManager; 20 import android.accounts.IAccountManager; 21 import android.adservices.AdServicesFrameworkInitializer; 22 import android.annotation.NonNull; 23 import android.annotation.Nullable; 24 import android.annotation.SystemApi; 25 import android.app.ContextImpl.ServiceInitializationState; 26 import android.app.admin.DevicePolicyManager; 27 import android.app.admin.IDevicePolicyManager; 28 import android.app.ambientcontext.AmbientContextManager; 29 import android.app.ambientcontext.IAmbientContextManager; 30 import android.app.appsearch.AppSearchManagerFrameworkInitializer; 31 import android.app.blob.BlobStoreManagerFrameworkInitializer; 32 import android.app.contentsuggestions.ContentSuggestionsManager; 33 import android.app.contentsuggestions.IContentSuggestionsManager; 34 import android.app.job.JobSchedulerFrameworkInitializer; 35 import android.app.people.PeopleManager; 36 import android.app.prediction.AppPredictionManager; 37 import android.app.role.RoleFrameworkInitializer; 38 import android.app.sdksandbox.SdkSandboxManagerFrameworkInitializer; 39 import android.app.search.SearchUiManager; 40 import android.app.slice.SliceManager; 41 import android.app.smartspace.SmartspaceManager; 42 import android.app.time.TimeManager; 43 import android.app.timedetector.TimeDetector; 44 import android.app.timedetector.TimeDetectorImpl; 45 import android.app.timezone.RulesManager; 46 import android.app.timezonedetector.TimeZoneDetector; 47 import android.app.timezonedetector.TimeZoneDetectorImpl; 48 import android.app.trust.TrustManager; 49 import android.app.usage.IStorageStatsManager; 50 import android.app.usage.IUsageStatsManager; 51 import android.app.usage.StorageStatsManager; 52 import android.app.usage.UsageStatsManager; 53 import android.app.wallpapereffectsgeneration.IWallpaperEffectsGenerationManager; 54 import android.app.wallpapereffectsgeneration.WallpaperEffectsGenerationManager; 55 import android.apphibernation.AppHibernationManager; 56 import android.appwidget.AppWidgetManager; 57 import android.bluetooth.BluetoothFrameworkInitializer; 58 import android.companion.CompanionDeviceManager; 59 import android.companion.ICompanionDeviceManager; 60 import android.companion.virtual.IVirtualDeviceManager; 61 import android.companion.virtual.VirtualDeviceManager; 62 import android.content.ClipboardManager; 63 import android.content.ContentCaptureOptions; 64 import android.content.Context; 65 import android.content.IRestrictionsManager; 66 import android.content.RestrictionsManager; 67 import android.content.integrity.AppIntegrityManager; 68 import android.content.integrity.IAppIntegrityManager; 69 import android.content.om.IOverlayManager; 70 import android.content.om.OverlayManager; 71 import android.content.pm.ApplicationInfo; 72 import android.content.pm.CrossProfileApps; 73 import android.content.pm.DataLoaderManager; 74 import android.content.pm.ICrossProfileApps; 75 import android.content.pm.IDataLoaderManager; 76 import android.content.pm.IShortcutService; 77 import android.content.pm.LauncherApps; 78 import android.content.pm.PackageManager; 79 import android.content.pm.ShortcutManager; 80 import android.content.pm.verify.domain.DomainVerificationManager; 81 import android.content.pm.verify.domain.IDomainVerificationManager; 82 import android.content.res.Resources; 83 import android.content.rollback.RollbackManagerFrameworkInitializer; 84 import android.debug.AdbManager; 85 import android.debug.IAdbManager; 86 import android.graphics.fonts.FontManager; 87 import android.hardware.ConsumerIrManager; 88 import android.hardware.ISerialManager; 89 import android.hardware.SensorManager; 90 import android.hardware.SensorPrivacyManager; 91 import android.hardware.SerialManager; 92 import android.hardware.SystemSensorManager; 93 import android.hardware.biometrics.BiometricManager; 94 import android.hardware.biometrics.IAuthService; 95 import android.hardware.camera2.CameraManager; 96 import android.hardware.devicestate.DeviceStateManager; 97 import android.hardware.display.ColorDisplayManager; 98 import android.hardware.display.DisplayManager; 99 import android.hardware.face.FaceManager; 100 import android.hardware.face.IFaceService; 101 import android.hardware.fingerprint.FingerprintManager; 102 import android.hardware.fingerprint.IFingerprintService; 103 import android.hardware.hdmi.HdmiControlManager; 104 import android.hardware.hdmi.IHdmiControlService; 105 import android.hardware.input.InputManager; 106 import android.hardware.iris.IIrisService; 107 import android.hardware.iris.IrisManager; 108 import android.hardware.lights.LightsManager; 109 import android.hardware.lights.SystemLightsManager; 110 import android.hardware.location.ContextHubManager; 111 import android.hardware.radio.RadioManager; 112 import android.hardware.usb.IUsbManager; 113 import android.hardware.usb.UsbManager; 114 import android.location.CountryDetector; 115 import android.location.ICountryDetector; 116 import android.location.ILocationManager; 117 import android.location.LocationManager; 118 import android.media.AudioDeviceVolumeManager; 119 import android.media.AudioManager; 120 import android.media.MediaFrameworkInitializer; 121 import android.media.MediaFrameworkPlatformInitializer; 122 import android.media.MediaRouter; 123 import android.media.metrics.IMediaMetricsManager; 124 import android.media.metrics.MediaMetricsManager; 125 import android.media.midi.IMidiManager; 126 import android.media.midi.MidiManager; 127 import android.media.musicrecognition.IMusicRecognitionManager; 128 import android.media.musicrecognition.MusicRecognitionManager; 129 import android.media.projection.MediaProjectionManager; 130 import android.media.soundtrigger.SoundTriggerManager; 131 import android.media.tv.ITvInputManager; 132 import android.media.tv.TvInputManager; 133 import android.media.tv.interactive.ITvInteractiveAppManager; 134 import android.media.tv.interactive.TvInteractiveAppManager; 135 import android.media.tv.tunerresourcemanager.ITunerResourceManager; 136 import android.media.tv.tunerresourcemanager.TunerResourceManager; 137 import android.nearby.NearbyFrameworkInitializer; 138 import android.net.ConnectivityFrameworkInitializer; 139 import android.net.ConnectivityFrameworkInitializerTiramisu; 140 import android.net.INetworkPolicyManager; 141 import android.net.IPacProxyManager; 142 import android.net.IVpnManager; 143 import android.net.NetworkPolicyManager; 144 import android.net.NetworkScoreManager; 145 import android.net.NetworkWatchlistManager; 146 import android.net.PacProxyManager; 147 import android.net.TetheringManager; 148 import android.net.VpnManager; 149 import android.net.lowpan.ILowpanManager; 150 import android.net.lowpan.LowpanManager; 151 import android.net.vcn.IVcnManagementService; 152 import android.net.vcn.VcnManager; 153 import android.net.wifi.WifiFrameworkInitializer; 154 import android.net.wifi.nl80211.WifiNl80211Manager; 155 import android.nfc.NfcManager; 156 import android.ondevicepersonalization.OnDevicePersonalizationFrameworkInitializer; 157 import android.os.BatteryManager; 158 import android.os.BatteryStats; 159 import android.os.BatteryStatsManager; 160 import android.os.BugreportManager; 161 import android.os.Build; 162 import android.os.DropBoxManager; 163 import android.os.HardwarePropertiesManager; 164 import android.os.IBatteryPropertiesRegistrar; 165 import android.os.IBinder; 166 import android.os.IDumpstate; 167 import android.os.IHardwarePropertiesManager; 168 import android.os.IPowerManager; 169 import android.os.IRecoverySystem; 170 import android.os.ISystemUpdateManager; 171 import android.os.IThermalService; 172 import android.os.IUserManager; 173 import android.os.IncidentManager; 174 import android.os.PerformanceHintManager; 175 import android.os.PowerManager; 176 import android.os.RecoverySystem; 177 import android.os.ServiceManager; 178 import android.os.ServiceManager.ServiceNotFoundException; 179 import android.os.StatsFrameworkInitializer; 180 import android.os.SystemConfigManager; 181 import android.os.SystemUpdateManager; 182 import android.os.SystemVibrator; 183 import android.os.SystemVibratorManager; 184 import android.os.UserHandle; 185 import android.os.UserManager; 186 import android.os.Vibrator; 187 import android.os.VibratorManager; 188 import android.os.health.SystemHealthManager; 189 import android.os.image.DynamicSystemManager; 190 import android.os.image.IDynamicSystemService; 191 import android.os.incremental.IIncrementalService; 192 import android.os.incremental.IncrementalManager; 193 import android.os.storage.StorageManager; 194 import android.permission.LegacyPermissionManager; 195 import android.permission.PermissionCheckerManager; 196 import android.permission.PermissionControllerManager; 197 import android.permission.PermissionManager; 198 import android.print.IPrintManager; 199 import android.print.PrintManager; 200 import android.safetycenter.SafetyCenterFrameworkInitializer; 201 import android.scheduling.SchedulingFrameworkInitializer; 202 import android.security.FileIntegrityManager; 203 import android.security.IFileIntegrityService; 204 import android.security.attestationverification.AttestationVerificationManager; 205 import android.security.attestationverification.IAttestationVerificationManagerService; 206 import android.service.oemlock.IOemLockService; 207 import android.service.oemlock.OemLockManager; 208 import android.service.persistentdata.IPersistentDataBlockService; 209 import android.service.persistentdata.PersistentDataBlockManager; 210 import android.service.vr.IVrManager; 211 import android.telecom.TelecomManager; 212 import android.telephony.MmsManager; 213 import android.telephony.TelephonyFrameworkInitializer; 214 import android.telephony.TelephonyRegistryManager; 215 import android.transparency.BinaryTransparencyManager; 216 import android.util.ArrayMap; 217 import android.util.Log; 218 import android.util.Slog; 219 import android.uwb.UwbFrameworkInitializer; 220 import android.view.ContextThemeWrapper; 221 import android.view.LayoutInflater; 222 import android.view.WindowManager; 223 import android.view.WindowManagerImpl; 224 import android.view.accessibility.AccessibilityManager; 225 import android.view.accessibility.CaptioningManager; 226 import android.view.autofill.AutofillManager; 227 import android.view.autofill.IAutoFillManager; 228 import android.view.contentcapture.ContentCaptureManager; 229 import android.view.contentcapture.IContentCaptureManager; 230 import android.view.displayhash.DisplayHashManager; 231 import android.view.inputmethod.InputMethodManager; 232 import android.view.textclassifier.TextClassificationManager; 233 import android.view.textservice.TextServicesManager; 234 import android.view.translation.ITranslationManager; 235 import android.view.translation.TranslationManager; 236 import android.view.translation.UiTranslationManager; 237 238 import com.android.internal.app.IAppOpsService; 239 import com.android.internal.app.IBatteryStats; 240 import com.android.internal.app.ISoundTriggerService; 241 import com.android.internal.appwidget.IAppWidgetService; 242 import com.android.internal.graphics.fonts.IFontManager; 243 import com.android.internal.net.INetworkWatchlistManager; 244 import com.android.internal.os.IBinaryTransparencyService; 245 import com.android.internal.os.IDropBoxManagerService; 246 import com.android.internal.policy.PhoneLayoutInflater; 247 import com.android.internal.util.Preconditions; 248 249 import java.util.Map; 250 import java.util.Objects; 251 252 /** 253 * Manages all of the system services that can be returned by {@link Context#getSystemService}. 254 * Used by {@link ContextImpl}. 255 * 256 * @hide 257 */ 258 @SystemApi 259 public final class SystemServiceRegistry { 260 private static final String TAG = "SystemServiceRegistry"; 261 262 /** @hide */ 263 public static boolean sEnableServiceNotFoundWtf = false; 264 265 // Service registry information. 266 // This information is never changed once static initialization has completed. 267 private static final Map<Class<?>, String> SYSTEM_SERVICE_NAMES = 268 new ArrayMap<Class<?>, String>(); 269 private static final Map<String, ServiceFetcher<?>> SYSTEM_SERVICE_FETCHERS = 270 new ArrayMap<String, ServiceFetcher<?>>(); 271 private static final Map<String, String> SYSTEM_SERVICE_CLASS_NAMES = new ArrayMap<>(); 272 273 private static int sServiceCacheSize; 274 275 private static volatile boolean sInitializing; 276 277 // Not instantiable. SystemServiceRegistry()278 private SystemServiceRegistry() { } 279 280 static { 281 //CHECKSTYLE:OFF IndentationCheck registerService(Context.ACCESSIBILITY_SERVICE, AccessibilityManager.class, new CachedServiceFetcher<AccessibilityManager>() { @Override public AccessibilityManager createService(ContextImpl ctx) { return AccessibilityManager.getInstance(ctx); }})282 registerService(Context.ACCESSIBILITY_SERVICE, AccessibilityManager.class, 283 new CachedServiceFetcher<AccessibilityManager>() { 284 @Override 285 public AccessibilityManager createService(ContextImpl ctx) { 286 return AccessibilityManager.getInstance(ctx); 287 }}); 288 registerService(Context.CAPTIONING_SERVICE, CaptioningManager.class, new CachedServiceFetcher<CaptioningManager>() { @Override public CaptioningManager createService(ContextImpl ctx) { return new CaptioningManager(ctx); }})289 registerService(Context.CAPTIONING_SERVICE, CaptioningManager.class, 290 new CachedServiceFetcher<CaptioningManager>() { 291 @Override 292 public CaptioningManager createService(ContextImpl ctx) { 293 return new CaptioningManager(ctx); 294 }}); 295 registerService(Context.ACCOUNT_SERVICE, AccountManager.class, new CachedServiceFetcher<AccountManager>() { @Override public AccountManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getServiceOrThrow(Context.ACCOUNT_SERVICE); IAccountManager service = IAccountManager.Stub.asInterface(b); return new AccountManager(ctx, service); }})296 registerService(Context.ACCOUNT_SERVICE, AccountManager.class, 297 new CachedServiceFetcher<AccountManager>() { 298 @Override 299 public AccountManager createService(ContextImpl ctx) throws ServiceNotFoundException { 300 IBinder b = ServiceManager.getServiceOrThrow(Context.ACCOUNT_SERVICE); 301 IAccountManager service = IAccountManager.Stub.asInterface(b); 302 return new AccountManager(ctx, service); 303 }}); 304 registerService(Context.ACTIVITY_SERVICE, ActivityManager.class, new CachedServiceFetcher<ActivityManager>() { @Override public ActivityManager createService(ContextImpl ctx) { return new ActivityManager(ctx.getOuterContext(), ctx.mMainThread.getHandler()); }})305 registerService(Context.ACTIVITY_SERVICE, ActivityManager.class, 306 new CachedServiceFetcher<ActivityManager>() { 307 @Override 308 public ActivityManager createService(ContextImpl ctx) { 309 return new ActivityManager(ctx.getOuterContext(), ctx.mMainThread.getHandler()); 310 }}); 311 registerService(Context.ACTIVITY_TASK_SERVICE, ActivityTaskManager.class, new CachedServiceFetcher<ActivityTaskManager>() { @Override public ActivityTaskManager createService(ContextImpl ctx) { return ActivityTaskManager.getInstance(); }})312 registerService(Context.ACTIVITY_TASK_SERVICE, ActivityTaskManager.class, 313 new CachedServiceFetcher<ActivityTaskManager>() { 314 @Override 315 public ActivityTaskManager createService(ContextImpl ctx) { 316 return ActivityTaskManager.getInstance(); 317 }}); 318 registerService(Context.URI_GRANTS_SERVICE, UriGrantsManager.class, new CachedServiceFetcher<UriGrantsManager>() { @Override public UriGrantsManager createService(ContextImpl ctx) { return new UriGrantsManager( ctx.getOuterContext(), ctx.mMainThread.getHandler()); }})319 registerService(Context.URI_GRANTS_SERVICE, UriGrantsManager.class, 320 new CachedServiceFetcher<UriGrantsManager>() { 321 @Override 322 public UriGrantsManager createService(ContextImpl ctx) { 323 return new UriGrantsManager( 324 ctx.getOuterContext(), ctx.mMainThread.getHandler()); 325 }}); 326 registerService(Context.ALARM_SERVICE, AlarmManager.class, new CachedServiceFetcher<AlarmManager>() { @Override public AlarmManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getServiceOrThrow(Context.ALARM_SERVICE); IAlarmManager service = IAlarmManager.Stub.asInterface(b); return new AlarmManager(service, ctx); }})327 registerService(Context.ALARM_SERVICE, AlarmManager.class, 328 new CachedServiceFetcher<AlarmManager>() { 329 @Override 330 public AlarmManager createService(ContextImpl ctx) throws ServiceNotFoundException { 331 IBinder b = ServiceManager.getServiceOrThrow(Context.ALARM_SERVICE); 332 IAlarmManager service = IAlarmManager.Stub.asInterface(b); 333 return new AlarmManager(service, ctx); 334 }}); 335 registerService(Context.AUDIO_SERVICE, AudioManager.class, new CachedServiceFetcher<AudioManager>() { @Override public AudioManager createService(ContextImpl ctx) { return new AudioManager(ctx); }})336 registerService(Context.AUDIO_SERVICE, AudioManager.class, 337 new CachedServiceFetcher<AudioManager>() { 338 @Override 339 public AudioManager createService(ContextImpl ctx) { 340 return new AudioManager(ctx); 341 }}); 342 registerService(Context.AUDIO_DEVICE_VOLUME_SERVICE, AudioDeviceVolumeManager.class, new CachedServiceFetcher<AudioDeviceVolumeManager>() { @Override public AudioDeviceVolumeManager createService(ContextImpl ctx) { return new AudioDeviceVolumeManager(ctx); }})343 registerService(Context.AUDIO_DEVICE_VOLUME_SERVICE, AudioDeviceVolumeManager.class, 344 new CachedServiceFetcher<AudioDeviceVolumeManager>() { 345 @Override 346 public AudioDeviceVolumeManager createService(ContextImpl ctx) { 347 return new AudioDeviceVolumeManager(ctx); 348 }}); 349 registerService(Context.MEDIA_ROUTER_SERVICE, MediaRouter.class, new CachedServiceFetcher<MediaRouter>() { @Override public MediaRouter createService(ContextImpl ctx) { return new MediaRouter(ctx); }})350 registerService(Context.MEDIA_ROUTER_SERVICE, MediaRouter.class, 351 new CachedServiceFetcher<MediaRouter>() { 352 @Override 353 public MediaRouter createService(ContextImpl ctx) { 354 return new MediaRouter(ctx); 355 }}); 356 registerService(Context.HDMI_CONTROL_SERVICE, HdmiControlManager.class, new StaticServiceFetcher<HdmiControlManager>() { @Override public HdmiControlManager createService() throws ServiceNotFoundException { IBinder b = ServiceManager.getServiceOrThrow(Context.HDMI_CONTROL_SERVICE); return new HdmiControlManager(IHdmiControlService.Stub.asInterface(b)); }})357 registerService(Context.HDMI_CONTROL_SERVICE, HdmiControlManager.class, 358 new StaticServiceFetcher<HdmiControlManager>() { 359 @Override 360 public HdmiControlManager createService() throws ServiceNotFoundException { 361 IBinder b = ServiceManager.getServiceOrThrow(Context.HDMI_CONTROL_SERVICE); 362 return new HdmiControlManager(IHdmiControlService.Stub.asInterface(b)); 363 }}); 364 registerService(Context.TEXT_CLASSIFICATION_SERVICE, TextClassificationManager.class, new CachedServiceFetcher<TextClassificationManager>() { @Override public TextClassificationManager createService(ContextImpl ctx) { return new TextClassificationManager(ctx); }})365 registerService(Context.TEXT_CLASSIFICATION_SERVICE, TextClassificationManager.class, 366 new CachedServiceFetcher<TextClassificationManager>() { 367 @Override 368 public TextClassificationManager createService(ContextImpl ctx) { 369 return new TextClassificationManager(ctx); 370 }}); 371 registerService(Context.FONT_SERVICE, FontManager.class, new CachedServiceFetcher<FontManager>() { @Override public FontManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getServiceOrThrow(Context.FONT_SERVICE); return FontManager.create(IFontManager.Stub.asInterface(b)); }})372 registerService(Context.FONT_SERVICE, FontManager.class, 373 new CachedServiceFetcher<FontManager>() { 374 @Override 375 public FontManager createService(ContextImpl ctx) throws ServiceNotFoundException { 376 IBinder b = ServiceManager.getServiceOrThrow(Context.FONT_SERVICE); 377 return FontManager.create(IFontManager.Stub.asInterface(b)); 378 }}); 379 registerService(Context.CLIPBOARD_SERVICE, ClipboardManager.class, new CachedServiceFetcher<ClipboardManager>() { @Override public ClipboardManager createService(ContextImpl ctx) throws ServiceNotFoundException { return new ClipboardManager(ctx.getOuterContext(), ctx.mMainThread.getHandler()); }})380 registerService(Context.CLIPBOARD_SERVICE, ClipboardManager.class, 381 new CachedServiceFetcher<ClipboardManager>() { 382 @Override 383 public ClipboardManager createService(ContextImpl ctx) throws ServiceNotFoundException { 384 return new ClipboardManager(ctx.getOuterContext(), 385 ctx.mMainThread.getHandler()); 386 }}); 387 388 // The clipboard service moved to a new package. If someone asks for the old 389 // interface by class then we want to redirect over to the new interface instead 390 // (which extends it). SYSTEM_SERVICE_NAMES.put(android.text.ClipboardManager.class, Context.CLIPBOARD_SERVICE)391 SYSTEM_SERVICE_NAMES.put(android.text.ClipboardManager.class, Context.CLIPBOARD_SERVICE); 392 registerService(Context.PAC_PROXY_SERVICE, PacProxyManager.class, new CachedServiceFetcher<PacProxyManager>() { @Override public PacProxyManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getServiceOrThrow(Context.PAC_PROXY_SERVICE); IPacProxyManager service = IPacProxyManager.Stub.asInterface(b); return new PacProxyManager(ctx.getOuterContext(), service); }})393 registerService(Context.PAC_PROXY_SERVICE, PacProxyManager.class, 394 new CachedServiceFetcher<PacProxyManager>() { 395 @Override 396 public PacProxyManager createService(ContextImpl ctx) throws ServiceNotFoundException { 397 IBinder b = ServiceManager.getServiceOrThrow(Context.PAC_PROXY_SERVICE); 398 IPacProxyManager service = IPacProxyManager.Stub.asInterface(b); 399 return new PacProxyManager(ctx.getOuterContext(), service); 400 }}); 401 registerService(Context.NETD_SERVICE, IBinder.class, new StaticServiceFetcher<IBinder>() { @Override public IBinder createService() throws ServiceNotFoundException { return ServiceManager.getServiceOrThrow(Context.NETD_SERVICE); } })402 registerService(Context.NETD_SERVICE, IBinder.class, new StaticServiceFetcher<IBinder>() { 403 @Override 404 public IBinder createService() throws ServiceNotFoundException { 405 return ServiceManager.getServiceOrThrow(Context.NETD_SERVICE); 406 } 407 }); 408 registerService(Context.TETHERING_SERVICE, TetheringManager.class, new CachedServiceFetcher<TetheringManager>() { @Override public TetheringManager createService(ContextImpl ctx) { return new TetheringManager( ctx, () -> ServiceManager.getService(Context.TETHERING_SERVICE)); }})409 registerService(Context.TETHERING_SERVICE, TetheringManager.class, 410 new CachedServiceFetcher<TetheringManager>() { 411 @Override 412 public TetheringManager createService(ContextImpl ctx) { 413 return new TetheringManager( 414 ctx, () -> ServiceManager.getService(Context.TETHERING_SERVICE)); 415 }}); 416 registerService(Context.VPN_MANAGEMENT_SERVICE, VpnManager.class, new CachedServiceFetcher<VpnManager>() { @Override public VpnManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getService(Context.VPN_MANAGEMENT_SERVICE); IVpnManager service = IVpnManager.Stub.asInterface(b); return new VpnManager(ctx, service); }})417 registerService(Context.VPN_MANAGEMENT_SERVICE, VpnManager.class, 418 new CachedServiceFetcher<VpnManager>() { 419 @Override 420 public VpnManager createService(ContextImpl ctx) throws ServiceNotFoundException { 421 IBinder b = ServiceManager.getService(Context.VPN_MANAGEMENT_SERVICE); 422 IVpnManager service = IVpnManager.Stub.asInterface(b); 423 return new VpnManager(ctx, service); 424 }}); 425 registerService(Context.VCN_MANAGEMENT_SERVICE, VcnManager.class, new CachedServiceFetcher<VcnManager>() { @Override public VcnManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getService(Context.VCN_MANAGEMENT_SERVICE); IVcnManagementService service = IVcnManagementService.Stub.asInterface(b); return new VcnManager(ctx, service); }})426 registerService(Context.VCN_MANAGEMENT_SERVICE, VcnManager.class, 427 new CachedServiceFetcher<VcnManager>() { 428 @Override 429 public VcnManager createService(ContextImpl ctx) throws ServiceNotFoundException { 430 IBinder b = ServiceManager.getService(Context.VCN_MANAGEMENT_SERVICE); 431 IVcnManagementService service = IVcnManagementService.Stub.asInterface(b); 432 return new VcnManager(ctx, service); 433 }}); 434 registerService(Context.COUNTRY_DETECTOR, CountryDetector.class, new StaticServiceFetcher<CountryDetector>() { @Override public CountryDetector createService() throws ServiceNotFoundException { IBinder b = ServiceManager.getServiceOrThrow(Context.COUNTRY_DETECTOR); return new CountryDetector(ICountryDetector.Stub.asInterface(b)); }})435 registerService(Context.COUNTRY_DETECTOR, CountryDetector.class, 436 new StaticServiceFetcher<CountryDetector>() { 437 @Override 438 public CountryDetector createService() throws ServiceNotFoundException { 439 IBinder b = ServiceManager.getServiceOrThrow(Context.COUNTRY_DETECTOR); 440 return new CountryDetector(ICountryDetector.Stub.asInterface(b)); 441 }}); 442 registerService(Context.DEVICE_POLICY_SERVICE, DevicePolicyManager.class, new CachedServiceFetcher<DevicePolicyManager>() { @Override public DevicePolicyManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getServiceOrThrow(Context.DEVICE_POLICY_SERVICE); return new DevicePolicyManager(ctx, IDevicePolicyManager.Stub.asInterface(b)); }})443 registerService(Context.DEVICE_POLICY_SERVICE, DevicePolicyManager.class, 444 new CachedServiceFetcher<DevicePolicyManager>() { 445 @Override 446 public DevicePolicyManager createService(ContextImpl ctx) throws ServiceNotFoundException { 447 IBinder b = ServiceManager.getServiceOrThrow(Context.DEVICE_POLICY_SERVICE); 448 return new DevicePolicyManager(ctx, IDevicePolicyManager.Stub.asInterface(b)); 449 }}); 450 registerService(Context.DOWNLOAD_SERVICE, DownloadManager.class, new CachedServiceFetcher<DownloadManager>() { @Override public DownloadManager createService(ContextImpl ctx) { return new DownloadManager(ctx); }})451 registerService(Context.DOWNLOAD_SERVICE, DownloadManager.class, 452 new CachedServiceFetcher<DownloadManager>() { 453 @Override 454 public DownloadManager createService(ContextImpl ctx) { 455 return new DownloadManager(ctx); 456 }}); 457 registerService(Context.BATTERY_SERVICE, BatteryManager.class, new CachedServiceFetcher<BatteryManager>() { @Override public BatteryManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBatteryStats stats = IBatteryStats.Stub.asInterface( ServiceManager.getServiceOrThrow(BatteryStats.SERVICE_NAME)); IBatteryPropertiesRegistrar registrar = IBatteryPropertiesRegistrar.Stub .asInterface(ServiceManager.getServiceOrThrow("batteryproperties")); return new BatteryManager(ctx, stats, registrar); }})458 registerService(Context.BATTERY_SERVICE, BatteryManager.class, 459 new CachedServiceFetcher<BatteryManager>() { 460 @Override 461 public BatteryManager createService(ContextImpl ctx) throws ServiceNotFoundException { 462 IBatteryStats stats = IBatteryStats.Stub.asInterface( 463 ServiceManager.getServiceOrThrow(BatteryStats.SERVICE_NAME)); 464 IBatteryPropertiesRegistrar registrar = IBatteryPropertiesRegistrar.Stub 465 .asInterface(ServiceManager.getServiceOrThrow("batteryproperties")); 466 return new BatteryManager(ctx, stats, registrar); 467 }}); 468 registerService(Context.NFC_SERVICE, NfcManager.class, new CachedServiceFetcher<NfcManager>() { @Override public NfcManager createService(ContextImpl ctx) { return new NfcManager(ctx); }})469 registerService(Context.NFC_SERVICE, NfcManager.class, 470 new CachedServiceFetcher<NfcManager>() { 471 @Override 472 public NfcManager createService(ContextImpl ctx) { 473 return new NfcManager(ctx); 474 }}); 475 registerService(Context.DROPBOX_SERVICE, DropBoxManager.class, new CachedServiceFetcher<DropBoxManager>() { @Override public DropBoxManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getServiceOrThrow(Context.DROPBOX_SERVICE); IDropBoxManagerService service = IDropBoxManagerService.Stub.asInterface(b); return new DropBoxManager(ctx, service); }})476 registerService(Context.DROPBOX_SERVICE, DropBoxManager.class, 477 new CachedServiceFetcher<DropBoxManager>() { 478 @Override 479 public DropBoxManager createService(ContextImpl ctx) throws ServiceNotFoundException { 480 IBinder b = ServiceManager.getServiceOrThrow(Context.DROPBOX_SERVICE); 481 IDropBoxManagerService service = IDropBoxManagerService.Stub.asInterface(b); 482 return new DropBoxManager(ctx, service); 483 }}); 484 registerService(Context.BINARY_TRANSPARENCY_SERVICE, BinaryTransparencyManager.class, new CachedServiceFetcher<BinaryTransparencyManager>() { @Override public BinaryTransparencyManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getServiceOrThrow( Context.BINARY_TRANSPARENCY_SERVICE); IBinaryTransparencyService service = IBinaryTransparencyService.Stub.asInterface(b); return new BinaryTransparencyManager(ctx, service); }})485 registerService(Context.BINARY_TRANSPARENCY_SERVICE, BinaryTransparencyManager.class, 486 new CachedServiceFetcher<BinaryTransparencyManager>() { 487 @Override 488 public BinaryTransparencyManager createService(ContextImpl ctx) 489 throws ServiceNotFoundException { 490 IBinder b = ServiceManager.getServiceOrThrow( 491 Context.BINARY_TRANSPARENCY_SERVICE); 492 IBinaryTransparencyService service = IBinaryTransparencyService.Stub.asInterface(b); 493 return new BinaryTransparencyManager(ctx, service); 494 }}); 495 registerService(Context.INPUT_SERVICE, InputManager.class, new StaticServiceFetcher<InputManager>() { @Override public InputManager createService() { return InputManager.getInstance(); }})496 registerService(Context.INPUT_SERVICE, InputManager.class, 497 new StaticServiceFetcher<InputManager>() { 498 @Override 499 public InputManager createService() { 500 return InputManager.getInstance(); 501 }}); 502 registerService(Context.DISPLAY_SERVICE, DisplayManager.class, new CachedServiceFetcher<DisplayManager>() { @Override public DisplayManager createService(ContextImpl ctx) { return new DisplayManager(ctx.getOuterContext()); }})503 registerService(Context.DISPLAY_SERVICE, DisplayManager.class, 504 new CachedServiceFetcher<DisplayManager>() { 505 @Override 506 public DisplayManager createService(ContextImpl ctx) { 507 return new DisplayManager(ctx.getOuterContext()); 508 }}); 509 registerService(Context.COLOR_DISPLAY_SERVICE, ColorDisplayManager.class, new CachedServiceFetcher<ColorDisplayManager>() { @Override public ColorDisplayManager createService(ContextImpl ctx) { return new ColorDisplayManager(); } })510 registerService(Context.COLOR_DISPLAY_SERVICE, ColorDisplayManager.class, 511 new CachedServiceFetcher<ColorDisplayManager>() { 512 @Override 513 public ColorDisplayManager createService(ContextImpl ctx) { 514 return new ColorDisplayManager(); 515 } 516 }); 517 518 // InputMethodManager has its own cache strategy based on display id to support apps that 519 // still assume InputMethodManager is a per-process singleton and it's safe to directly 520 // access internal fields via reflection. Hence directly use ServiceFetcher instead of 521 // StaticServiceFetcher/CachedServiceFetcher. registerService(Context.INPUT_METHOD_SERVICE, InputMethodManager.class, new ServiceFetcher<InputMethodManager>() { @Override public InputMethodManager getService(ContextImpl ctx) { return InputMethodManager.forContext(ctx.getOuterContext()); }})522 registerService(Context.INPUT_METHOD_SERVICE, InputMethodManager.class, 523 new ServiceFetcher<InputMethodManager>() { 524 @Override 525 public InputMethodManager getService(ContextImpl ctx) { 526 return InputMethodManager.forContext(ctx.getOuterContext()); 527 }}); 528 registerService(Context.TEXT_SERVICES_MANAGER_SERVICE, TextServicesManager.class, new CachedServiceFetcher<TextServicesManager>() { @Override public TextServicesManager createService(ContextImpl ctx) throws ServiceNotFoundException { return TextServicesManager.createInstance(ctx); }})529 registerService(Context.TEXT_SERVICES_MANAGER_SERVICE, TextServicesManager.class, 530 new CachedServiceFetcher<TextServicesManager>() { 531 @Override 532 public TextServicesManager createService(ContextImpl ctx) 533 throws ServiceNotFoundException { 534 return TextServicesManager.createInstance(ctx); 535 }}); 536 registerService(Context.KEYGUARD_SERVICE, KeyguardManager.class, new CachedServiceFetcher<KeyguardManager>() { @Override public KeyguardManager createService(ContextImpl ctx) throws ServiceNotFoundException { return new KeyguardManager(ctx); }})537 registerService(Context.KEYGUARD_SERVICE, KeyguardManager.class, 538 new CachedServiceFetcher<KeyguardManager>() { 539 @Override 540 public KeyguardManager createService(ContextImpl ctx) throws ServiceNotFoundException { 541 return new KeyguardManager(ctx); 542 }}); 543 registerService(Context.LAYOUT_INFLATER_SERVICE, LayoutInflater.class, new CachedServiceFetcher<LayoutInflater>() { @Override public LayoutInflater createService(ContextImpl ctx) { return new PhoneLayoutInflater(ctx.getOuterContext()); }})544 registerService(Context.LAYOUT_INFLATER_SERVICE, LayoutInflater.class, 545 new CachedServiceFetcher<LayoutInflater>() { 546 @Override 547 public LayoutInflater createService(ContextImpl ctx) { 548 return new PhoneLayoutInflater(ctx.getOuterContext()); 549 }}); 550 registerService(Context.LOCATION_SERVICE, LocationManager.class, new CachedServiceFetcher<LocationManager>() { @Override public LocationManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getServiceOrThrow(Context.LOCATION_SERVICE); return new LocationManager(ctx, ILocationManager.Stub.asInterface(b)); }})551 registerService(Context.LOCATION_SERVICE, LocationManager.class, 552 new CachedServiceFetcher<LocationManager>() { 553 @Override 554 public LocationManager createService(ContextImpl ctx) throws ServiceNotFoundException { 555 IBinder b = ServiceManager.getServiceOrThrow(Context.LOCATION_SERVICE); 556 return new LocationManager(ctx, ILocationManager.Stub.asInterface(b)); 557 }}); 558 registerService(Context.NETWORK_POLICY_SERVICE, NetworkPolicyManager.class, new CachedServiceFetcher<NetworkPolicyManager>() { @Override public NetworkPolicyManager createService(ContextImpl ctx) throws ServiceNotFoundException { return new NetworkPolicyManager(ctx, INetworkPolicyManager.Stub.asInterface( ServiceManager.getServiceOrThrow(Context.NETWORK_POLICY_SERVICE))); }})559 registerService(Context.NETWORK_POLICY_SERVICE, NetworkPolicyManager.class, 560 new CachedServiceFetcher<NetworkPolicyManager>() { 561 @Override 562 public NetworkPolicyManager createService(ContextImpl ctx) throws ServiceNotFoundException { 563 return new NetworkPolicyManager(ctx, INetworkPolicyManager.Stub.asInterface( 564 ServiceManager.getServiceOrThrow(Context.NETWORK_POLICY_SERVICE))); 565 }}); 566 registerService(Context.NOTIFICATION_SERVICE, NotificationManager.class, new CachedServiceFetcher<NotificationManager>() { @Override public NotificationManager createService(ContextImpl ctx) { final Context outerContext = ctx.getOuterContext(); return new NotificationManager( new ContextThemeWrapper(outerContext, Resources.selectSystemTheme(0, outerContext.getApplicationInfo().targetSdkVersion, com.android.internal.R.style.Theme_Dialog, com.android.internal.R.style.Theme_Holo_Dialog, com.android.internal.R.style.Theme_DeviceDefault_Dialog, com.android.internal.R.style.Theme_DeviceDefault_Light_Dialog)), ctx.mMainThread.getHandler()); }})567 registerService(Context.NOTIFICATION_SERVICE, NotificationManager.class, 568 new CachedServiceFetcher<NotificationManager>() { 569 @Override 570 public NotificationManager createService(ContextImpl ctx) { 571 final Context outerContext = ctx.getOuterContext(); 572 return new NotificationManager( 573 new ContextThemeWrapper(outerContext, 574 Resources.selectSystemTheme(0, 575 outerContext.getApplicationInfo().targetSdkVersion, 576 com.android.internal.R.style.Theme_Dialog, 577 com.android.internal.R.style.Theme_Holo_Dialog, 578 com.android.internal.R.style.Theme_DeviceDefault_Dialog, 579 com.android.internal.R.style.Theme_DeviceDefault_Light_Dialog)), 580 ctx.mMainThread.getHandler()); 581 }}); 582 registerService(Context.PEOPLE_SERVICE, PeopleManager.class, new CachedServiceFetcher<PeopleManager>() { @Override public PeopleManager createService(ContextImpl ctx) throws ServiceNotFoundException { return new PeopleManager(ctx); }})583 registerService(Context.PEOPLE_SERVICE, PeopleManager.class, 584 new CachedServiceFetcher<PeopleManager>() { 585 @Override 586 public PeopleManager createService(ContextImpl ctx) throws ServiceNotFoundException { 587 return new PeopleManager(ctx); 588 }}); 589 registerService(Context.POWER_SERVICE, PowerManager.class, new CachedServiceFetcher<PowerManager>() { @Override public PowerManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder powerBinder = ServiceManager.getServiceOrThrow(Context.POWER_SERVICE); IPowerManager powerService = IPowerManager.Stub.asInterface(powerBinder); IBinder thermalBinder = ServiceManager.getServiceOrThrow(Context.THERMAL_SERVICE); IThermalService thermalService = IThermalService.Stub.asInterface(thermalBinder); return new PowerManager(ctx.getOuterContext(), powerService, thermalService, ctx.mMainThread.getHandler()); }})590 registerService(Context.POWER_SERVICE, PowerManager.class, 591 new CachedServiceFetcher<PowerManager>() { 592 @Override 593 public PowerManager createService(ContextImpl ctx) throws ServiceNotFoundException { 594 IBinder powerBinder = ServiceManager.getServiceOrThrow(Context.POWER_SERVICE); 595 IPowerManager powerService = IPowerManager.Stub.asInterface(powerBinder); 596 IBinder thermalBinder = ServiceManager.getServiceOrThrow(Context.THERMAL_SERVICE); 597 IThermalService thermalService = IThermalService.Stub.asInterface(thermalBinder); 598 return new PowerManager(ctx.getOuterContext(), powerService, thermalService, 599 ctx.mMainThread.getHandler()); 600 }}); 601 registerService(Context.PERFORMANCE_HINT_SERVICE, PerformanceHintManager.class, new CachedServiceFetcher<PerformanceHintManager>() { @Override public PerformanceHintManager createService(ContextImpl ctx) throws ServiceNotFoundException { return PerformanceHintManager.create(); }})602 registerService(Context.PERFORMANCE_HINT_SERVICE, PerformanceHintManager.class, 603 new CachedServiceFetcher<PerformanceHintManager>() { 604 @Override 605 public PerformanceHintManager createService(ContextImpl ctx) 606 throws ServiceNotFoundException { 607 return PerformanceHintManager.create(); 608 }}); 609 registerService(Context.RECOVERY_SERVICE, RecoverySystem.class, new CachedServiceFetcher<RecoverySystem>() { @Override public RecoverySystem createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getServiceOrThrow(Context.RECOVERY_SERVICE); IRecoverySystem service = IRecoverySystem.Stub.asInterface(b); return new RecoverySystem(service); }})610 registerService(Context.RECOVERY_SERVICE, RecoverySystem.class, 611 new CachedServiceFetcher<RecoverySystem>() { 612 @Override 613 public RecoverySystem createService(ContextImpl ctx) throws ServiceNotFoundException { 614 IBinder b = ServiceManager.getServiceOrThrow(Context.RECOVERY_SERVICE); 615 IRecoverySystem service = IRecoverySystem.Stub.asInterface(b); 616 return new RecoverySystem(service); 617 }}); 618 registerService(Context.SEARCH_SERVICE, SearchManager.class, new CachedServiceFetcher<SearchManager>() { @Override public SearchManager createService(ContextImpl ctx) throws ServiceNotFoundException { return new SearchManager(ctx.getOuterContext(), ctx.mMainThread.getHandler()); }})619 registerService(Context.SEARCH_SERVICE, SearchManager.class, 620 new CachedServiceFetcher<SearchManager>() { 621 @Override 622 public SearchManager createService(ContextImpl ctx) throws ServiceNotFoundException { 623 return new SearchManager(ctx.getOuterContext(), 624 ctx.mMainThread.getHandler()); 625 }}); 626 registerService(Context.SENSOR_SERVICE, SensorManager.class, new CachedServiceFetcher<SensorManager>() { @Override public SensorManager createService(ContextImpl ctx) { return new SystemSensorManager(ctx.getOuterContext(), ctx.mMainThread.getHandler().getLooper()); }})627 registerService(Context.SENSOR_SERVICE, SensorManager.class, 628 new CachedServiceFetcher<SensorManager>() { 629 @Override 630 public SensorManager createService(ContextImpl ctx) { 631 return new SystemSensorManager(ctx.getOuterContext(), 632 ctx.mMainThread.getHandler().getLooper()); 633 }}); 634 registerService(Context.SENSOR_PRIVACY_SERVICE, SensorPrivacyManager.class, new CachedServiceFetcher<SensorPrivacyManager>() { @Override public SensorPrivacyManager createService(ContextImpl ctx) { return SensorPrivacyManager.getInstance(ctx); }})635 registerService(Context.SENSOR_PRIVACY_SERVICE, SensorPrivacyManager.class, 636 new CachedServiceFetcher<SensorPrivacyManager>() { 637 @Override 638 public SensorPrivacyManager createService(ContextImpl ctx) { 639 return SensorPrivacyManager.getInstance(ctx); 640 }}); 641 registerService(Context.STATUS_BAR_SERVICE, StatusBarManager.class, new CachedServiceFetcher<StatusBarManager>() { @Override public StatusBarManager createService(ContextImpl ctx) { return new StatusBarManager(ctx.getOuterContext()); }})642 registerService(Context.STATUS_BAR_SERVICE, StatusBarManager.class, 643 new CachedServiceFetcher<StatusBarManager>() { 644 @Override 645 public StatusBarManager createService(ContextImpl ctx) { 646 return new StatusBarManager(ctx.getOuterContext()); 647 }}); 648 registerService(Context.STORAGE_SERVICE, StorageManager.class, new CachedServiceFetcher<StorageManager>() { @Override public StorageManager createService(ContextImpl ctx) throws ServiceNotFoundException { return new StorageManager(ctx, ctx.mMainThread.getHandler().getLooper()); }})649 registerService(Context.STORAGE_SERVICE, StorageManager.class, 650 new CachedServiceFetcher<StorageManager>() { 651 @Override 652 public StorageManager createService(ContextImpl ctx) throws ServiceNotFoundException { 653 return new StorageManager(ctx, ctx.mMainThread.getHandler().getLooper()); 654 }}); 655 registerService(Context.STORAGE_STATS_SERVICE, StorageStatsManager.class, new CachedServiceFetcher<StorageStatsManager>() { @Override public StorageStatsManager createService(ContextImpl ctx) throws ServiceNotFoundException { IStorageStatsManager service = IStorageStatsManager.Stub.asInterface( ServiceManager.getServiceOrThrow(Context.STORAGE_STATS_SERVICE)); return new StorageStatsManager(ctx, service); }})656 registerService(Context.STORAGE_STATS_SERVICE, StorageStatsManager.class, 657 new CachedServiceFetcher<StorageStatsManager>() { 658 @Override 659 public StorageStatsManager createService(ContextImpl ctx) throws ServiceNotFoundException { 660 IStorageStatsManager service = IStorageStatsManager.Stub.asInterface( 661 ServiceManager.getServiceOrThrow(Context.STORAGE_STATS_SERVICE)); 662 return new StorageStatsManager(ctx, service); 663 }}); 664 registerService(Context.SYSTEM_UPDATE_SERVICE, SystemUpdateManager.class, new CachedServiceFetcher<SystemUpdateManager>() { @Override public SystemUpdateManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getServiceOrThrow( Context.SYSTEM_UPDATE_SERVICE); ISystemUpdateManager service = ISystemUpdateManager.Stub.asInterface(b); return new SystemUpdateManager(service); }})665 registerService(Context.SYSTEM_UPDATE_SERVICE, SystemUpdateManager.class, 666 new CachedServiceFetcher<SystemUpdateManager>() { 667 @Override 668 public SystemUpdateManager createService(ContextImpl ctx) 669 throws ServiceNotFoundException { 670 IBinder b = ServiceManager.getServiceOrThrow( 671 Context.SYSTEM_UPDATE_SERVICE); 672 ISystemUpdateManager service = ISystemUpdateManager.Stub.asInterface(b); 673 return new SystemUpdateManager(service); 674 }}); 675 registerService(Context.SYSTEM_CONFIG_SERVICE, SystemConfigManager.class, new CachedServiceFetcher<SystemConfigManager>() { @Override public SystemConfigManager createService(ContextImpl ctx) { return new SystemConfigManager(); }})676 registerService(Context.SYSTEM_CONFIG_SERVICE, SystemConfigManager.class, 677 new CachedServiceFetcher<SystemConfigManager>() { 678 @Override 679 public SystemConfigManager createService(ContextImpl ctx) { 680 return new SystemConfigManager(); 681 }}); 682 registerService(Context.TELEPHONY_REGISTRY_SERVICE, TelephonyRegistryManager.class, new CachedServiceFetcher<TelephonyRegistryManager>() { @Override public TelephonyRegistryManager createService(ContextImpl ctx) { return new TelephonyRegistryManager(ctx); }})683 registerService(Context.TELEPHONY_REGISTRY_SERVICE, TelephonyRegistryManager.class, 684 new CachedServiceFetcher<TelephonyRegistryManager>() { 685 @Override 686 public TelephonyRegistryManager createService(ContextImpl ctx) { 687 return new TelephonyRegistryManager(ctx); 688 }}); 689 registerService(Context.TELECOM_SERVICE, TelecomManager.class, new CachedServiceFetcher<TelecomManager>() { @Override public TelecomManager createService(ContextImpl ctx) { return new TelecomManager(ctx.getOuterContext()); }})690 registerService(Context.TELECOM_SERVICE, TelecomManager.class, 691 new CachedServiceFetcher<TelecomManager>() { 692 @Override 693 public TelecomManager createService(ContextImpl ctx) { 694 return new TelecomManager(ctx.getOuterContext()); 695 }}); 696 registerService(Context.MMS_SERVICE, MmsManager.class, new CachedServiceFetcher<MmsManager>() { @Override public MmsManager createService(ContextImpl ctx) { return new MmsManager(ctx.getOuterContext()); }})697 registerService(Context.MMS_SERVICE, MmsManager.class, 698 new CachedServiceFetcher<MmsManager>() { 699 @Override 700 public MmsManager createService(ContextImpl ctx) { 701 return new MmsManager(ctx.getOuterContext()); 702 }}); 703 registerService(Context.UI_MODE_SERVICE, UiModeManager.class, new CachedServiceFetcher<UiModeManager>() { @Override public UiModeManager createService(ContextImpl ctx) throws ServiceNotFoundException { return new UiModeManager(ctx.getOuterContext()); }})704 registerService(Context.UI_MODE_SERVICE, UiModeManager.class, 705 new CachedServiceFetcher<UiModeManager>() { 706 @Override 707 public UiModeManager createService(ContextImpl ctx) throws ServiceNotFoundException { 708 return new UiModeManager(ctx.getOuterContext()); 709 }}); 710 registerService(Context.USB_SERVICE, UsbManager.class, new CachedServiceFetcher<UsbManager>() { @Override public UsbManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getServiceOrThrow(Context.USB_SERVICE); return new UsbManager(ctx, IUsbManager.Stub.asInterface(b)); }})711 registerService(Context.USB_SERVICE, UsbManager.class, 712 new CachedServiceFetcher<UsbManager>() { 713 @Override 714 public UsbManager createService(ContextImpl ctx) throws ServiceNotFoundException { 715 IBinder b = ServiceManager.getServiceOrThrow(Context.USB_SERVICE); 716 return new UsbManager(ctx, IUsbManager.Stub.asInterface(b)); 717 }}); 718 registerService(Context.ADB_SERVICE, AdbManager.class, new CachedServiceFetcher<AdbManager>() { @Override public AdbManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getServiceOrThrow(Context.ADB_SERVICE); return new AdbManager(ctx, IAdbManager.Stub.asInterface(b)); }})719 registerService(Context.ADB_SERVICE, AdbManager.class, 720 new CachedServiceFetcher<AdbManager>() { 721 @Override 722 public AdbManager createService(ContextImpl ctx) 723 throws ServiceNotFoundException { 724 IBinder b = ServiceManager.getServiceOrThrow(Context.ADB_SERVICE); 725 return new AdbManager(ctx, IAdbManager.Stub.asInterface(b)); 726 }}); 727 registerService(Context.SERIAL_SERVICE, SerialManager.class, new CachedServiceFetcher<SerialManager>() { @Override public SerialManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getServiceOrThrow(Context.SERIAL_SERVICE); return new SerialManager(ctx, ISerialManager.Stub.asInterface(b)); }})728 registerService(Context.SERIAL_SERVICE, SerialManager.class, 729 new CachedServiceFetcher<SerialManager>() { 730 @Override 731 public SerialManager createService(ContextImpl ctx) throws ServiceNotFoundException { 732 IBinder b = ServiceManager.getServiceOrThrow(Context.SERIAL_SERVICE); 733 return new SerialManager(ctx, ISerialManager.Stub.asInterface(b)); 734 }}); 735 registerService(Context.VIBRATOR_MANAGER_SERVICE, VibratorManager.class, new CachedServiceFetcher<VibratorManager>() { @Override public VibratorManager createService(ContextImpl ctx) { return new SystemVibratorManager(ctx); }})736 registerService(Context.VIBRATOR_MANAGER_SERVICE, VibratorManager.class, 737 new CachedServiceFetcher<VibratorManager>() { 738 @Override 739 public VibratorManager createService(ContextImpl ctx) { 740 return new SystemVibratorManager(ctx); 741 }}); 742 registerService(Context.VIBRATOR_SERVICE, Vibrator.class, new CachedServiceFetcher<Vibrator>() { @Override public Vibrator createService(ContextImpl ctx) { return new SystemVibrator(ctx); }})743 registerService(Context.VIBRATOR_SERVICE, Vibrator.class, 744 new CachedServiceFetcher<Vibrator>() { 745 @Override 746 public Vibrator createService(ContextImpl ctx) { 747 return new SystemVibrator(ctx); 748 }}); 749 registerService(Context.WALLPAPER_SERVICE, WallpaperManager.class, new CachedServiceFetcher<WallpaperManager>() { @Override public WallpaperManager createService(ContextImpl ctx) throws ServiceNotFoundException { final IBinder b = ServiceManager.getService(Context.WALLPAPER_SERVICE); if (b == null) { ApplicationInfo appInfo = ctx.getApplicationInfo(); if (appInfo.targetSdkVersion >= Build.VERSION_CODES.P && appInfo.isInstantApp()) { throw new ServiceNotFoundException(Context.WALLPAPER_SERVICE); } final boolean enabled = Resources.getSystem() .getBoolean(com.android.internal.R.bool.config_enableWallpaperService); if (!enabled) { return DisabledWallpaperManager.getInstance(); } Log.e(TAG, "No wallpaper service"); } IWallpaperManager service = IWallpaperManager.Stub.asInterface(b); return new WallpaperManager(service, ctx.getOuterContext(), ctx.mMainThread.getHandler()); }})750 registerService(Context.WALLPAPER_SERVICE, WallpaperManager.class, 751 new CachedServiceFetcher<WallpaperManager>() { 752 @Override 753 public WallpaperManager createService(ContextImpl ctx) 754 throws ServiceNotFoundException { 755 final IBinder b = ServiceManager.getService(Context.WALLPAPER_SERVICE); 756 if (b == null) { 757 ApplicationInfo appInfo = ctx.getApplicationInfo(); 758 if (appInfo.targetSdkVersion >= Build.VERSION_CODES.P 759 && appInfo.isInstantApp()) { 760 // Instant app 761 throw new ServiceNotFoundException(Context.WALLPAPER_SERVICE); 762 } 763 final boolean enabled = Resources.getSystem() 764 .getBoolean(com.android.internal.R.bool.config_enableWallpaperService); 765 if (!enabled) { 766 // Device doesn't support wallpaper, return a limited manager 767 return DisabledWallpaperManager.getInstance(); 768 } 769 // Bad state - WallpaperManager methods will throw exception 770 Log.e(TAG, "No wallpaper service"); 771 } 772 IWallpaperManager service = IWallpaperManager.Stub.asInterface(b); 773 return new WallpaperManager(service, ctx.getOuterContext(), 774 ctx.mMainThread.getHandler()); 775 }}); 776 registerService(Context.LOWPAN_SERVICE, LowpanManager.class, new CachedServiceFetcher<LowpanManager>() { @Override public LowpanManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getServiceOrThrow(Context.LOWPAN_SERVICE); ILowpanManager service = ILowpanManager.Stub.asInterface(b); return new LowpanManager(ctx.getOuterContext(), service); }})777 registerService(Context.LOWPAN_SERVICE, LowpanManager.class, 778 new CachedServiceFetcher<LowpanManager>() { 779 @Override 780 public LowpanManager createService(ContextImpl ctx) throws ServiceNotFoundException { 781 IBinder b = ServiceManager.getServiceOrThrow(Context.LOWPAN_SERVICE); 782 ILowpanManager service = ILowpanManager.Stub.asInterface(b); 783 return new LowpanManager(ctx.getOuterContext(), service); 784 }}); 785 registerService(Context.WIFI_NL80211_SERVICE, WifiNl80211Manager.class, new CachedServiceFetcher<WifiNl80211Manager>() { @Override public WifiNl80211Manager createService(ContextImpl ctx) { return new WifiNl80211Manager(ctx.getOuterContext()); } })786 registerService(Context.WIFI_NL80211_SERVICE, WifiNl80211Manager.class, 787 new CachedServiceFetcher<WifiNl80211Manager>() { 788 @Override 789 public WifiNl80211Manager createService(ContextImpl ctx) { 790 return new WifiNl80211Manager(ctx.getOuterContext()); 791 } 792 }); 793 registerService(Context.WINDOW_SERVICE, WindowManager.class, new CachedServiceFetcher<WindowManager>() { @Override public WindowManager createService(ContextImpl ctx) { return new WindowManagerImpl(ctx); }})794 registerService(Context.WINDOW_SERVICE, WindowManager.class, 795 new CachedServiceFetcher<WindowManager>() { 796 @Override 797 public WindowManager createService(ContextImpl ctx) { 798 return new WindowManagerImpl(ctx); 799 }}); 800 registerService(Context.USER_SERVICE, UserManager.class, new CachedServiceFetcher<UserManager>() { @Override public UserManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getServiceOrThrow(Context.USER_SERVICE); IUserManager service = IUserManager.Stub.asInterface(b); return new UserManager(ctx, service); }})801 registerService(Context.USER_SERVICE, UserManager.class, 802 new CachedServiceFetcher<UserManager>() { 803 @Override 804 public UserManager createService(ContextImpl ctx) throws ServiceNotFoundException { 805 IBinder b = ServiceManager.getServiceOrThrow(Context.USER_SERVICE); 806 IUserManager service = IUserManager.Stub.asInterface(b); 807 return new UserManager(ctx, service); 808 }}); 809 registerService(Context.APP_OPS_SERVICE, AppOpsManager.class, new CachedServiceFetcher<AppOpsManager>() { @Override public AppOpsManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getServiceOrThrow(Context.APP_OPS_SERVICE); IAppOpsService service = IAppOpsService.Stub.asInterface(b); return new AppOpsManager(ctx, service); }})810 registerService(Context.APP_OPS_SERVICE, AppOpsManager.class, 811 new CachedServiceFetcher<AppOpsManager>() { 812 @Override 813 public AppOpsManager createService(ContextImpl ctx) throws ServiceNotFoundException { 814 IBinder b = ServiceManager.getServiceOrThrow(Context.APP_OPS_SERVICE); 815 IAppOpsService service = IAppOpsService.Stub.asInterface(b); 816 return new AppOpsManager(ctx, service); 817 }}); 818 registerService(Context.CAMERA_SERVICE, CameraManager.class, new CachedServiceFetcher<CameraManager>() { @Override public CameraManager createService(ContextImpl ctx) { return new CameraManager(ctx); }})819 registerService(Context.CAMERA_SERVICE, CameraManager.class, 820 new CachedServiceFetcher<CameraManager>() { 821 @Override 822 public CameraManager createService(ContextImpl ctx) { 823 return new CameraManager(ctx); 824 }}); 825 registerService(Context.LAUNCHER_APPS_SERVICE, LauncherApps.class, new CachedServiceFetcher<LauncherApps>() { @Override public LauncherApps createService(ContextImpl ctx) { return new LauncherApps(ctx); }})826 registerService(Context.LAUNCHER_APPS_SERVICE, LauncherApps.class, 827 new CachedServiceFetcher<LauncherApps>() { 828 @Override 829 public LauncherApps createService(ContextImpl ctx) { 830 return new LauncherApps(ctx); 831 }}); 832 registerService(Context.RESTRICTIONS_SERVICE, RestrictionsManager.class, new CachedServiceFetcher<RestrictionsManager>() { @Override public RestrictionsManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getServiceOrThrow(Context.RESTRICTIONS_SERVICE); IRestrictionsManager service = IRestrictionsManager.Stub.asInterface(b); return new RestrictionsManager(ctx, service); }})833 registerService(Context.RESTRICTIONS_SERVICE, RestrictionsManager.class, 834 new CachedServiceFetcher<RestrictionsManager>() { 835 @Override 836 public RestrictionsManager createService(ContextImpl ctx) throws ServiceNotFoundException { 837 IBinder b = ServiceManager.getServiceOrThrow(Context.RESTRICTIONS_SERVICE); 838 IRestrictionsManager service = IRestrictionsManager.Stub.asInterface(b); 839 return new RestrictionsManager(ctx, service); 840 }}); 841 registerService(Context.PRINT_SERVICE, PrintManager.class, new CachedServiceFetcher<PrintManager>() { @Override public PrintManager createService(ContextImpl ctx) throws ServiceNotFoundException { IPrintManager service = null; if (ctx.getPackageManager().hasSystemFeature(PackageManager.FEATURE_PRINTING)) { service = IPrintManager.Stub.asInterface(ServiceManager .getServiceOrThrow(Context.PRINT_SERVICE)); } final int userId = ctx.getUserId(); final int appId = UserHandle.getAppId(ctx.getApplicationInfo().uid); return new PrintManager(ctx.getOuterContext(), service, userId, appId); }})842 registerService(Context.PRINT_SERVICE, PrintManager.class, 843 new CachedServiceFetcher<PrintManager>() { 844 @Override 845 public PrintManager createService(ContextImpl ctx) throws ServiceNotFoundException { 846 IPrintManager service = null; 847 // If the feature not present, don't try to look up every time 848 if (ctx.getPackageManager().hasSystemFeature(PackageManager.FEATURE_PRINTING)) { 849 service = IPrintManager.Stub.asInterface(ServiceManager 850 .getServiceOrThrow(Context.PRINT_SERVICE)); 851 } 852 final int userId = ctx.getUserId(); 853 final int appId = UserHandle.getAppId(ctx.getApplicationInfo().uid); 854 return new PrintManager(ctx.getOuterContext(), service, userId, appId); 855 }}); 856 registerService(Context.COMPANION_DEVICE_SERVICE, CompanionDeviceManager.class, new CachedServiceFetcher<CompanionDeviceManager>() { @Override public CompanionDeviceManager createService(ContextImpl ctx) throws ServiceNotFoundException { ICompanionDeviceManager service = null; if (ctx.getPackageManager().hasSystemFeature( PackageManager.FEATURE_COMPANION_DEVICE_SETUP)) { service = ICompanionDeviceManager.Stub.asInterface( ServiceManager.getServiceOrThrow(Context.COMPANION_DEVICE_SERVICE)); } return new CompanionDeviceManager(service, ctx.getOuterContext()); }})857 registerService(Context.COMPANION_DEVICE_SERVICE, CompanionDeviceManager.class, 858 new CachedServiceFetcher<CompanionDeviceManager>() { 859 @Override 860 public CompanionDeviceManager createService(ContextImpl ctx) 861 throws ServiceNotFoundException { 862 ICompanionDeviceManager service = null; 863 // If the feature not present, don't try to look up every time 864 if (ctx.getPackageManager().hasSystemFeature( 865 PackageManager.FEATURE_COMPANION_DEVICE_SETUP)) { 866 service = ICompanionDeviceManager.Stub.asInterface( 867 ServiceManager.getServiceOrThrow(Context.COMPANION_DEVICE_SERVICE)); 868 } 869 return new CompanionDeviceManager(service, ctx.getOuterContext()); 870 }}); 871 registerService(Context.VIRTUAL_DEVICE_SERVICE, VirtualDeviceManager.class, new CachedServiceFetcher<VirtualDeviceManager>() { @Override public VirtualDeviceManager createService(ContextImpl ctx) throws ServiceNotFoundException { IVirtualDeviceManager service = IVirtualDeviceManager.Stub.asInterface( ServiceManager.getServiceOrThrow(Context.VIRTUAL_DEVICE_SERVICE)); return new VirtualDeviceManager(service, ctx.getOuterContext()); }})872 registerService(Context.VIRTUAL_DEVICE_SERVICE, VirtualDeviceManager.class, 873 new CachedServiceFetcher<VirtualDeviceManager>() { 874 @Override 875 public VirtualDeviceManager createService(ContextImpl ctx) 876 throws ServiceNotFoundException { 877 IVirtualDeviceManager service = IVirtualDeviceManager.Stub.asInterface( 878 ServiceManager.getServiceOrThrow(Context.VIRTUAL_DEVICE_SERVICE)); 879 return new VirtualDeviceManager(service, ctx.getOuterContext()); 880 }}); 881 registerService(Context.CONSUMER_IR_SERVICE, ConsumerIrManager.class, new CachedServiceFetcher<ConsumerIrManager>() { @Override public ConsumerIrManager createService(ContextImpl ctx) throws ServiceNotFoundException { return new ConsumerIrManager(ctx); }})882 registerService(Context.CONSUMER_IR_SERVICE, ConsumerIrManager.class, 883 new CachedServiceFetcher<ConsumerIrManager>() { 884 @Override 885 public ConsumerIrManager createService(ContextImpl ctx) throws ServiceNotFoundException { 886 return new ConsumerIrManager(ctx); 887 }}); 888 registerService(Context.TRUST_SERVICE, TrustManager.class, new StaticServiceFetcher<TrustManager>() { @Override public TrustManager createService() throws ServiceNotFoundException { IBinder b = ServiceManager.getServiceOrThrow(Context.TRUST_SERVICE); return new TrustManager(b); }})889 registerService(Context.TRUST_SERVICE, TrustManager.class, 890 new StaticServiceFetcher<TrustManager>() { 891 @Override 892 public TrustManager createService() throws ServiceNotFoundException { 893 IBinder b = ServiceManager.getServiceOrThrow(Context.TRUST_SERVICE); 894 return new TrustManager(b); 895 }}); 896 registerService(Context.FINGERPRINT_SERVICE, FingerprintManager.class, new CachedServiceFetcher<FingerprintManager>() { @Override public FingerprintManager createService(ContextImpl ctx) throws ServiceNotFoundException { final IBinder binder; if (ctx.getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.O) { binder = ServiceManager.getServiceOrThrow(Context.FINGERPRINT_SERVICE); } else { binder = ServiceManager.getService(Context.FINGERPRINT_SERVICE); } IFingerprintService service = IFingerprintService.Stub.asInterface(binder); return new FingerprintManager(ctx.getOuterContext(), service); }})897 registerService(Context.FINGERPRINT_SERVICE, FingerprintManager.class, 898 new CachedServiceFetcher<FingerprintManager>() { 899 @Override 900 public FingerprintManager createService(ContextImpl ctx) throws ServiceNotFoundException { 901 final IBinder binder; 902 if (ctx.getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.O) { 903 binder = ServiceManager.getServiceOrThrow(Context.FINGERPRINT_SERVICE); 904 } else { 905 binder = ServiceManager.getService(Context.FINGERPRINT_SERVICE); 906 } 907 IFingerprintService service = IFingerprintService.Stub.asInterface(binder); 908 return new FingerprintManager(ctx.getOuterContext(), service); 909 }}); 910 registerService(Context.FACE_SERVICE, FaceManager.class, new CachedServiceFetcher<FaceManager>() { @Override public FaceManager createService(ContextImpl ctx) throws ServiceNotFoundException { final IBinder binder; if (ctx.getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.O) { binder = ServiceManager.getServiceOrThrow(Context.FACE_SERVICE); } else { binder = ServiceManager.getService(Context.FACE_SERVICE); } IFaceService service = IFaceService.Stub.asInterface(binder); return new FaceManager(ctx.getOuterContext(), service); } })911 registerService(Context.FACE_SERVICE, FaceManager.class, 912 new CachedServiceFetcher<FaceManager>() { 913 @Override 914 public FaceManager createService(ContextImpl ctx) 915 throws ServiceNotFoundException { 916 final IBinder binder; 917 if (ctx.getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.O) { 918 binder = ServiceManager.getServiceOrThrow(Context.FACE_SERVICE); 919 } else { 920 binder = ServiceManager.getService(Context.FACE_SERVICE); 921 } 922 IFaceService service = IFaceService.Stub.asInterface(binder); 923 return new FaceManager(ctx.getOuterContext(), service); 924 } 925 }); 926 registerService(Context.IRIS_SERVICE, IrisManager.class, new CachedServiceFetcher<IrisManager>() { @Override public IrisManager createService(ContextImpl ctx) throws ServiceNotFoundException { final IBinder binder = ServiceManager.getServiceOrThrow(Context.IRIS_SERVICE); IIrisService service = IIrisService.Stub.asInterface(binder); return new IrisManager(ctx.getOuterContext(), service); } })927 registerService(Context.IRIS_SERVICE, IrisManager.class, 928 new CachedServiceFetcher<IrisManager>() { 929 @Override 930 public IrisManager createService(ContextImpl ctx) 931 throws ServiceNotFoundException { 932 final IBinder binder = 933 ServiceManager.getServiceOrThrow(Context.IRIS_SERVICE); 934 IIrisService service = IIrisService.Stub.asInterface(binder); 935 return new IrisManager(ctx.getOuterContext(), service); 936 } 937 }); 938 registerService(Context.BIOMETRIC_SERVICE, BiometricManager.class, new CachedServiceFetcher<BiometricManager>() { @Override public BiometricManager createService(ContextImpl ctx) throws ServiceNotFoundException { final IBinder binder = ServiceManager.getServiceOrThrow(Context.AUTH_SERVICE); final IAuthService service = IAuthService.Stub.asInterface(binder); return new BiometricManager(ctx.getOuterContext(), service); } })939 registerService(Context.BIOMETRIC_SERVICE, BiometricManager.class, 940 new CachedServiceFetcher<BiometricManager>() { 941 @Override 942 public BiometricManager createService(ContextImpl ctx) 943 throws ServiceNotFoundException { 944 final IBinder binder = 945 ServiceManager.getServiceOrThrow(Context.AUTH_SERVICE); 946 final IAuthService service = 947 IAuthService.Stub.asInterface(binder); 948 return new BiometricManager(ctx.getOuterContext(), service); 949 } 950 }); 951 registerService(Context.TV_INTERACTIVE_APP_SERVICE, TvInteractiveAppManager.class, new CachedServiceFetcher<TvInteractiveAppManager>() { @Override public TvInteractiveAppManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder iBinder = ServiceManager.getServiceOrThrow(Context.TV_INTERACTIVE_APP_SERVICE); ITvInteractiveAppManager service = ITvInteractiveAppManager.Stub.asInterface(iBinder); return new TvInteractiveAppManager(service, ctx.getUserId()); }})952 registerService(Context.TV_INTERACTIVE_APP_SERVICE, TvInteractiveAppManager.class, 953 new CachedServiceFetcher<TvInteractiveAppManager>() { 954 @Override 955 public TvInteractiveAppManager createService(ContextImpl ctx) 956 throws ServiceNotFoundException { 957 IBinder iBinder = 958 ServiceManager.getServiceOrThrow(Context.TV_INTERACTIVE_APP_SERVICE); 959 ITvInteractiveAppManager service = 960 ITvInteractiveAppManager.Stub.asInterface(iBinder); 961 return new TvInteractiveAppManager(service, ctx.getUserId()); 962 }}); 963 registerService(Context.TV_INPUT_SERVICE, TvInputManager.class, new CachedServiceFetcher<TvInputManager>() { @Override public TvInputManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder iBinder = ServiceManager.getServiceOrThrow(Context.TV_INPUT_SERVICE); ITvInputManager service = ITvInputManager.Stub.asInterface(iBinder); return new TvInputManager(service, ctx.getUserId()); }})964 registerService(Context.TV_INPUT_SERVICE, TvInputManager.class, 965 new CachedServiceFetcher<TvInputManager>() { 966 @Override 967 public TvInputManager createService(ContextImpl ctx) throws ServiceNotFoundException { 968 IBinder iBinder = ServiceManager.getServiceOrThrow(Context.TV_INPUT_SERVICE); 969 ITvInputManager service = ITvInputManager.Stub.asInterface(iBinder); 970 return new TvInputManager(service, ctx.getUserId()); 971 }}); 972 registerService(Context.TV_TUNER_RESOURCE_MGR_SERVICE, TunerResourceManager.class, new CachedServiceFetcher<TunerResourceManager>() { @Override public TunerResourceManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder iBinder = ServiceManager.getServiceOrThrow(Context.TV_TUNER_RESOURCE_MGR_SERVICE); ITunerResourceManager service = ITunerResourceManager.Stub.asInterface(iBinder); return new TunerResourceManager(service, ctx.getUserId()); }})973 registerService(Context.TV_TUNER_RESOURCE_MGR_SERVICE, TunerResourceManager.class, 974 new CachedServiceFetcher<TunerResourceManager>() { 975 @Override 976 public TunerResourceManager createService(ContextImpl ctx) 977 throws ServiceNotFoundException { 978 IBinder iBinder = 979 ServiceManager.getServiceOrThrow(Context.TV_TUNER_RESOURCE_MGR_SERVICE); 980 ITunerResourceManager service = ITunerResourceManager.Stub.asInterface(iBinder); 981 return new TunerResourceManager(service, ctx.getUserId()); 982 }}); 983 registerService(Context.NETWORK_SCORE_SERVICE, NetworkScoreManager.class, new CachedServiceFetcher<NetworkScoreManager>() { @Override public NetworkScoreManager createService(ContextImpl ctx) throws ServiceNotFoundException { return new NetworkScoreManager(ctx); }})984 registerService(Context.NETWORK_SCORE_SERVICE, NetworkScoreManager.class, 985 new CachedServiceFetcher<NetworkScoreManager>() { 986 @Override 987 public NetworkScoreManager createService(ContextImpl ctx) throws ServiceNotFoundException { 988 return new NetworkScoreManager(ctx); 989 }}); 990 registerService(Context.USAGE_STATS_SERVICE, UsageStatsManager.class, new CachedServiceFetcher<UsageStatsManager>() { @Override public UsageStatsManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder iBinder = ServiceManager.getServiceOrThrow(Context.USAGE_STATS_SERVICE); IUsageStatsManager service = IUsageStatsManager.Stub.asInterface(iBinder); return new UsageStatsManager(ctx.getOuterContext(), service); }})991 registerService(Context.USAGE_STATS_SERVICE, UsageStatsManager.class, 992 new CachedServiceFetcher<UsageStatsManager>() { 993 @Override 994 public UsageStatsManager createService(ContextImpl ctx) throws ServiceNotFoundException { 995 IBinder iBinder = ServiceManager.getServiceOrThrow(Context.USAGE_STATS_SERVICE); 996 IUsageStatsManager service = IUsageStatsManager.Stub.asInterface(iBinder); 997 return new UsageStatsManager(ctx.getOuterContext(), service); 998 }}); 999 registerService(Context.PERSISTENT_DATA_BLOCK_SERVICE, PersistentDataBlockManager.class, new StaticServiceFetcher<PersistentDataBlockManager>() { @Override public PersistentDataBlockManager createService() throws ServiceNotFoundException { IBinder b = ServiceManager.getServiceOrThrow(Context.PERSISTENT_DATA_BLOCK_SERVICE); IPersistentDataBlockService persistentDataBlockService = IPersistentDataBlockService.Stub.asInterface(b); if (persistentDataBlockService != null) { return new PersistentDataBlockManager(persistentDataBlockService); } else { return null; } } })1000 registerService(Context.PERSISTENT_DATA_BLOCK_SERVICE, PersistentDataBlockManager.class, 1001 new StaticServiceFetcher<PersistentDataBlockManager>() { 1002 @Override 1003 public PersistentDataBlockManager createService() throws ServiceNotFoundException { 1004 IBinder b = ServiceManager.getServiceOrThrow(Context.PERSISTENT_DATA_BLOCK_SERVICE); 1005 IPersistentDataBlockService persistentDataBlockService = 1006 IPersistentDataBlockService.Stub.asInterface(b); 1007 if (persistentDataBlockService != null) { 1008 return new PersistentDataBlockManager(persistentDataBlockService); 1009 } else { 1010 // not supported 1011 return null; 1012 } 1013 } 1014 }); 1015 registerService(Context.OEM_LOCK_SERVICE, OemLockManager.class, new StaticServiceFetcher<OemLockManager>() { @Override public OemLockManager createService() throws ServiceNotFoundException { IBinder b = ServiceManager.getServiceOrThrow(Context.OEM_LOCK_SERVICE); IOemLockService oemLockService = IOemLockService.Stub.asInterface(b); if (oemLockService != null) { return new OemLockManager(oemLockService); } else { return null; } }})1016 registerService(Context.OEM_LOCK_SERVICE, OemLockManager.class, 1017 new StaticServiceFetcher<OemLockManager>() { 1018 @Override 1019 public OemLockManager createService() throws ServiceNotFoundException { 1020 IBinder b = ServiceManager.getServiceOrThrow(Context.OEM_LOCK_SERVICE); 1021 IOemLockService oemLockService = IOemLockService.Stub.asInterface(b); 1022 if (oemLockService != null) { 1023 return new OemLockManager(oemLockService); 1024 } else { 1025 // not supported 1026 return null; 1027 } 1028 }}); 1029 registerService(Context.MEDIA_PROJECTION_SERVICE, MediaProjectionManager.class, new CachedServiceFetcher<MediaProjectionManager>() { @Override public MediaProjectionManager createService(ContextImpl ctx) { return new MediaProjectionManager(ctx); }})1030 registerService(Context.MEDIA_PROJECTION_SERVICE, MediaProjectionManager.class, 1031 new CachedServiceFetcher<MediaProjectionManager>() { 1032 @Override 1033 public MediaProjectionManager createService(ContextImpl ctx) { 1034 return new MediaProjectionManager(ctx); 1035 }}); 1036 registerService(Context.APPWIDGET_SERVICE, AppWidgetManager.class, new CachedServiceFetcher<AppWidgetManager>() { @Override public AppWidgetManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getServiceOrThrow(Context.APPWIDGET_SERVICE); return new AppWidgetManager(ctx, IAppWidgetService.Stub.asInterface(b)); }})1037 registerService(Context.APPWIDGET_SERVICE, AppWidgetManager.class, 1038 new CachedServiceFetcher<AppWidgetManager>() { 1039 @Override 1040 public AppWidgetManager createService(ContextImpl ctx) throws ServiceNotFoundException { 1041 IBinder b = ServiceManager.getServiceOrThrow(Context.APPWIDGET_SERVICE); 1042 return new AppWidgetManager(ctx, IAppWidgetService.Stub.asInterface(b)); 1043 }}); 1044 registerService(Context.MIDI_SERVICE, MidiManager.class, new CachedServiceFetcher<MidiManager>() { @Override public MidiManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getServiceOrThrow(Context.MIDI_SERVICE); return new MidiManager(IMidiManager.Stub.asInterface(b)); }})1045 registerService(Context.MIDI_SERVICE, MidiManager.class, 1046 new CachedServiceFetcher<MidiManager>() { 1047 @Override 1048 public MidiManager createService(ContextImpl ctx) throws ServiceNotFoundException { 1049 IBinder b = ServiceManager.getServiceOrThrow(Context.MIDI_SERVICE); 1050 return new MidiManager(IMidiManager.Stub.asInterface(b)); 1051 }}); 1052 registerService(Context.RADIO_SERVICE, RadioManager.class, new CachedServiceFetcher<RadioManager>() { @Override public RadioManager createService(ContextImpl ctx) throws ServiceNotFoundException { return new RadioManager(ctx); }})1053 registerService(Context.RADIO_SERVICE, RadioManager.class, 1054 new CachedServiceFetcher<RadioManager>() { 1055 @Override 1056 public RadioManager createService(ContextImpl ctx) throws ServiceNotFoundException { 1057 return new RadioManager(ctx); 1058 }}); 1059 registerService(Context.HARDWARE_PROPERTIES_SERVICE, HardwarePropertiesManager.class, new CachedServiceFetcher<HardwarePropertiesManager>() { @Override public HardwarePropertiesManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getServiceOrThrow(Context.HARDWARE_PROPERTIES_SERVICE); IHardwarePropertiesManager service = IHardwarePropertiesManager.Stub.asInterface(b); return new HardwarePropertiesManager(ctx, service); }})1060 registerService(Context.HARDWARE_PROPERTIES_SERVICE, HardwarePropertiesManager.class, 1061 new CachedServiceFetcher<HardwarePropertiesManager>() { 1062 @Override 1063 public HardwarePropertiesManager createService(ContextImpl ctx) throws ServiceNotFoundException { 1064 IBinder b = ServiceManager.getServiceOrThrow(Context.HARDWARE_PROPERTIES_SERVICE); 1065 IHardwarePropertiesManager service = 1066 IHardwarePropertiesManager.Stub.asInterface(b); 1067 return new HardwarePropertiesManager(ctx, service); 1068 }}); 1069 registerService(Context.SOUND_TRIGGER_SERVICE, SoundTriggerManager.class, new CachedServiceFetcher<SoundTriggerManager>() { @Override public SoundTriggerManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getServiceOrThrow(Context.SOUND_TRIGGER_SERVICE); return new SoundTriggerManager(ctx, ISoundTriggerService.Stub.asInterface(b)); }})1070 registerService(Context.SOUND_TRIGGER_SERVICE, SoundTriggerManager.class, 1071 new CachedServiceFetcher<SoundTriggerManager>() { 1072 @Override 1073 public SoundTriggerManager createService(ContextImpl ctx) throws ServiceNotFoundException { 1074 IBinder b = ServiceManager.getServiceOrThrow(Context.SOUND_TRIGGER_SERVICE); 1075 return new SoundTriggerManager(ctx, ISoundTriggerService.Stub.asInterface(b)); 1076 }}); 1077 registerService(Context.SHORTCUT_SERVICE, ShortcutManager.class, new CachedServiceFetcher<ShortcutManager>() { @Override public ShortcutManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getServiceOrThrow(Context.SHORTCUT_SERVICE); return new ShortcutManager(ctx, IShortcutService.Stub.asInterface(b)); }})1078 registerService(Context.SHORTCUT_SERVICE, ShortcutManager.class, 1079 new CachedServiceFetcher<ShortcutManager>() { 1080 @Override 1081 public ShortcutManager createService(ContextImpl ctx) throws ServiceNotFoundException { 1082 IBinder b = ServiceManager.getServiceOrThrow(Context.SHORTCUT_SERVICE); 1083 return new ShortcutManager(ctx, IShortcutService.Stub.asInterface(b)); 1084 }}); 1085 registerService(Context.OVERLAY_SERVICE, OverlayManager.class, new CachedServiceFetcher<OverlayManager>() { @Override public OverlayManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getServiceOrThrow(Context.OVERLAY_SERVICE); return new OverlayManager(ctx, IOverlayManager.Stub.asInterface(b)); }})1086 registerService(Context.OVERLAY_SERVICE, OverlayManager.class, 1087 new CachedServiceFetcher<OverlayManager>() { 1088 @Override 1089 public OverlayManager createService(ContextImpl ctx) throws ServiceNotFoundException { 1090 IBinder b = ServiceManager.getServiceOrThrow(Context.OVERLAY_SERVICE); 1091 return new OverlayManager(ctx, IOverlayManager.Stub.asInterface(b)); 1092 }}); 1093 registerService(Context.NETWORK_WATCHLIST_SERVICE, NetworkWatchlistManager.class, new CachedServiceFetcher<NetworkWatchlistManager>() { @Override public NetworkWatchlistManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getServiceOrThrow(Context.NETWORK_WATCHLIST_SERVICE); return new NetworkWatchlistManager(ctx, INetworkWatchlistManager.Stub.asInterface(b)); }})1094 registerService(Context.NETWORK_WATCHLIST_SERVICE, NetworkWatchlistManager.class, 1095 new CachedServiceFetcher<NetworkWatchlistManager>() { 1096 @Override 1097 public NetworkWatchlistManager createService(ContextImpl ctx) 1098 throws ServiceNotFoundException { 1099 IBinder b = 1100 ServiceManager.getServiceOrThrow(Context.NETWORK_WATCHLIST_SERVICE); 1101 return new NetworkWatchlistManager(ctx, 1102 INetworkWatchlistManager.Stub.asInterface(b)); 1103 }}); 1104 registerService(Context.SYSTEM_HEALTH_SERVICE, SystemHealthManager.class, new CachedServiceFetcher<SystemHealthManager>() { @Override public SystemHealthManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getServiceOrThrow(BatteryStats.SERVICE_NAME); return new SystemHealthManager(IBatteryStats.Stub.asInterface(b)); }})1105 registerService(Context.SYSTEM_HEALTH_SERVICE, SystemHealthManager.class, 1106 new CachedServiceFetcher<SystemHealthManager>() { 1107 @Override 1108 public SystemHealthManager createService(ContextImpl ctx) throws ServiceNotFoundException { 1109 IBinder b = ServiceManager.getServiceOrThrow(BatteryStats.SERVICE_NAME); 1110 return new SystemHealthManager(IBatteryStats.Stub.asInterface(b)); 1111 }}); 1112 registerService(Context.CONTEXTHUB_SERVICE, ContextHubManager.class, new CachedServiceFetcher<ContextHubManager>() { @Override public ContextHubManager createService(ContextImpl ctx) throws ServiceNotFoundException { return new ContextHubManager(ctx.getOuterContext(), ctx.mMainThread.getHandler().getLooper()); }})1113 registerService(Context.CONTEXTHUB_SERVICE, ContextHubManager.class, 1114 new CachedServiceFetcher<ContextHubManager>() { 1115 @Override 1116 public ContextHubManager createService(ContextImpl ctx) throws ServiceNotFoundException { 1117 return new ContextHubManager(ctx.getOuterContext(), 1118 ctx.mMainThread.getHandler().getLooper()); 1119 }}); 1120 registerService(Context.INCIDENT_SERVICE, IncidentManager.class, new CachedServiceFetcher<IncidentManager>() { @Override public IncidentManager createService(ContextImpl ctx) throws ServiceNotFoundException { return new IncidentManager(ctx); }})1121 registerService(Context.INCIDENT_SERVICE, IncidentManager.class, 1122 new CachedServiceFetcher<IncidentManager>() { 1123 @Override 1124 public IncidentManager createService(ContextImpl ctx) throws ServiceNotFoundException { 1125 return new IncidentManager(ctx); 1126 }}); 1127 registerService(Context.BUGREPORT_SERVICE, BugreportManager.class, new CachedServiceFetcher<BugreportManager>() { @Override public BugreportManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getServiceOrThrow(Context.BUGREPORT_SERVICE); return new BugreportManager(ctx.getOuterContext(), IDumpstate.Stub.asInterface(b)); }})1128 registerService(Context.BUGREPORT_SERVICE, BugreportManager.class, 1129 new CachedServiceFetcher<BugreportManager>() { 1130 @Override 1131 public BugreportManager createService(ContextImpl ctx) 1132 throws ServiceNotFoundException { 1133 IBinder b = ServiceManager.getServiceOrThrow(Context.BUGREPORT_SERVICE); 1134 return new BugreportManager(ctx.getOuterContext(), 1135 IDumpstate.Stub.asInterface(b)); 1136 }}); 1137 registerService(Context.AUTOFILL_MANAGER_SERVICE, AutofillManager.class, new CachedServiceFetcher<AutofillManager>() { @Override public AutofillManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getService(Context.AUTOFILL_MANAGER_SERVICE); IAutoFillManager service = IAutoFillManager.Stub.asInterface(b); return new AutofillManager(ctx.getOuterContext(), service); }})1138 registerService(Context.AUTOFILL_MANAGER_SERVICE, AutofillManager.class, 1139 new CachedServiceFetcher<AutofillManager>() { 1140 @Override 1141 public AutofillManager createService(ContextImpl ctx) throws ServiceNotFoundException { 1142 // Get the services without throwing as this is an optional feature 1143 IBinder b = ServiceManager.getService(Context.AUTOFILL_MANAGER_SERVICE); 1144 IAutoFillManager service = IAutoFillManager.Stub.asInterface(b); 1145 return new AutofillManager(ctx.getOuterContext(), service); 1146 }}); 1147 registerService(Context.MUSIC_RECOGNITION_SERVICE, MusicRecognitionManager.class, new CachedServiceFetcher<MusicRecognitionManager>() { @Override public MusicRecognitionManager createService(ContextImpl ctx) { IBinder b = ServiceManager.getService( Context.MUSIC_RECOGNITION_SERVICE); return new MusicRecognitionManager( IMusicRecognitionManager.Stub.asInterface(b)); } })1148 registerService(Context.MUSIC_RECOGNITION_SERVICE, MusicRecognitionManager.class, 1149 new CachedServiceFetcher<MusicRecognitionManager>() { 1150 @Override 1151 public MusicRecognitionManager createService(ContextImpl ctx) { 1152 IBinder b = ServiceManager.getService( 1153 Context.MUSIC_RECOGNITION_SERVICE); 1154 return new MusicRecognitionManager( 1155 IMusicRecognitionManager.Stub.asInterface(b)); 1156 } 1157 }); 1158 registerService(Context.CONTENT_CAPTURE_MANAGER_SERVICE, ContentCaptureManager.class, new CachedServiceFetcher<ContentCaptureManager>() { @Override public ContentCaptureManager createService(ContextImpl ctx) throws ServiceNotFoundException { Context outerContext = ctx.getOuterContext(); ContentCaptureOptions options = outerContext.getContentCaptureOptions(); if (options != null && (options.lite || options.isWhitelisted(outerContext))) { IBinder b = ServiceManager .getService(Context.CONTENT_CAPTURE_MANAGER_SERVICE); IContentCaptureManager service = IContentCaptureManager.Stub.asInterface(b); if (service != null) { return new ContentCaptureManager(outerContext, service, options); } } return null; }})1159 registerService(Context.CONTENT_CAPTURE_MANAGER_SERVICE, ContentCaptureManager.class, 1160 new CachedServiceFetcher<ContentCaptureManager>() { 1161 @Override 1162 public ContentCaptureManager createService(ContextImpl ctx) 1163 throws ServiceNotFoundException { 1164 // Get the services without throwing as this is an optional feature 1165 Context outerContext = ctx.getOuterContext(); 1166 ContentCaptureOptions options = outerContext.getContentCaptureOptions(); 1167 // Options is null when the service didn't allowlist the activity or package 1168 if (options != null && (options.lite || options.isWhitelisted(outerContext))) { 1169 IBinder b = ServiceManager 1170 .getService(Context.CONTENT_CAPTURE_MANAGER_SERVICE); 1171 IContentCaptureManager service = IContentCaptureManager.Stub.asInterface(b); 1172 // Service is null when not provided by OEM or disabled by kill-switch. 1173 if (service != null) { 1174 return new ContentCaptureManager(outerContext, service, options); 1175 } 1176 } 1177 // When feature is disabled or app / package not allowlisted, we return a null 1178 // manager to apps so the performance impact is practically zero 1179 return null; 1180 }}); 1181 registerService(Context.TRANSLATION_MANAGER_SERVICE, TranslationManager.class, new CachedServiceFetcher<TranslationManager>() { @Override public TranslationManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getService(Context.TRANSLATION_MANAGER_SERVICE); ITranslationManager service = ITranslationManager.Stub.asInterface(b); if (service != null) { return new TranslationManager(ctx.getOuterContext(), service); } return null; }})1182 registerService(Context.TRANSLATION_MANAGER_SERVICE, TranslationManager.class, 1183 new CachedServiceFetcher<TranslationManager>() { 1184 @Override 1185 public TranslationManager createService(ContextImpl ctx) 1186 throws ServiceNotFoundException { 1187 IBinder b = ServiceManager.getService(Context.TRANSLATION_MANAGER_SERVICE); 1188 ITranslationManager service = ITranslationManager.Stub.asInterface(b); 1189 // Service is null when not provided by OEM. 1190 if (service != null) { 1191 return new TranslationManager(ctx.getOuterContext(), service); 1192 } 1193 return null; 1194 }}); 1195 registerService(Context.UI_TRANSLATION_SERVICE, UiTranslationManager.class, new CachedServiceFetcher<UiTranslationManager>() { @Override public UiTranslationManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getService(Context.TRANSLATION_MANAGER_SERVICE); ITranslationManager service = ITranslationManager.Stub.asInterface(b); if (service != null) { return new UiTranslationManager(ctx.getOuterContext(), service); } return null; }})1196 registerService(Context.UI_TRANSLATION_SERVICE, UiTranslationManager.class, 1197 new CachedServiceFetcher<UiTranslationManager>() { 1198 @Override 1199 public UiTranslationManager createService(ContextImpl ctx) 1200 throws ServiceNotFoundException { 1201 IBinder b = ServiceManager.getService(Context.TRANSLATION_MANAGER_SERVICE); 1202 ITranslationManager service = ITranslationManager.Stub.asInterface(b); 1203 if (service != null) { 1204 return new UiTranslationManager(ctx.getOuterContext(), service); 1205 } 1206 return null; 1207 }}); 1208 registerService(Context.SEARCH_UI_SERVICE, SearchUiManager.class, new CachedServiceFetcher<SearchUiManager>() { @Override public SearchUiManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getService(Context.SEARCH_UI_SERVICE); return b == null ? null : new SearchUiManager(ctx); } })1209 registerService(Context.SEARCH_UI_SERVICE, SearchUiManager.class, 1210 new CachedServiceFetcher<SearchUiManager>() { 1211 @Override 1212 public SearchUiManager createService(ContextImpl ctx) 1213 throws ServiceNotFoundException { 1214 IBinder b = ServiceManager.getService(Context.SEARCH_UI_SERVICE); 1215 return b == null ? null : new SearchUiManager(ctx); 1216 } 1217 }); 1218 registerService(Context.SMARTSPACE_SERVICE, SmartspaceManager.class, new CachedServiceFetcher<SmartspaceManager>() { @Override public SmartspaceManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getService(Context.SMARTSPACE_SERVICE); return b == null ? null : new SmartspaceManager(ctx); } })1219 registerService(Context.SMARTSPACE_SERVICE, SmartspaceManager.class, 1220 new CachedServiceFetcher<SmartspaceManager>() { 1221 @Override 1222 public SmartspaceManager createService(ContextImpl ctx) 1223 throws ServiceNotFoundException { 1224 IBinder b = ServiceManager.getService(Context.SMARTSPACE_SERVICE); 1225 return b == null ? null : new SmartspaceManager(ctx); 1226 } 1227 }); 1228 registerService(Context.APP_PREDICTION_SERVICE, AppPredictionManager.class, new CachedServiceFetcher<AppPredictionManager>() { @Override public AppPredictionManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getService(Context.APP_PREDICTION_SERVICE); return b == null ? null : new AppPredictionManager(ctx); } })1229 registerService(Context.APP_PREDICTION_SERVICE, AppPredictionManager.class, 1230 new CachedServiceFetcher<AppPredictionManager>() { 1231 @Override 1232 public AppPredictionManager createService(ContextImpl ctx) 1233 throws ServiceNotFoundException { 1234 IBinder b = ServiceManager.getService(Context.APP_PREDICTION_SERVICE); 1235 return b == null ? null : new AppPredictionManager(ctx); 1236 } 1237 }); 1238 registerService(Context.CONTENT_SUGGESTIONS_SERVICE, ContentSuggestionsManager.class, new CachedServiceFetcher<ContentSuggestionsManager>() { @Override public ContentSuggestionsManager createService(ContextImpl ctx) { IBinder b = ServiceManager.getService( Context.CONTENT_SUGGESTIONS_SERVICE); IContentSuggestionsManager service = IContentSuggestionsManager.Stub.asInterface(b); return new ContentSuggestionsManager(ctx.getUserId(), service); } })1239 registerService(Context.CONTENT_SUGGESTIONS_SERVICE, 1240 ContentSuggestionsManager.class, 1241 new CachedServiceFetcher<ContentSuggestionsManager>() { 1242 @Override 1243 public ContentSuggestionsManager createService(ContextImpl ctx) { 1244 // No throw as this is an optional service 1245 IBinder b = ServiceManager.getService( 1246 Context.CONTENT_SUGGESTIONS_SERVICE); 1247 IContentSuggestionsManager service = 1248 IContentSuggestionsManager.Stub.asInterface(b); 1249 return new ContentSuggestionsManager(ctx.getUserId(), service); 1250 } 1251 }); 1252 registerService(Context.WALLPAPER_EFFECTS_GENERATION_SERVICE, WallpaperEffectsGenerationManager.class, new CachedServiceFetcher<WallpaperEffectsGenerationManager>() { @Override public WallpaperEffectsGenerationManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getService( Context.WALLPAPER_EFFECTS_GENERATION_SERVICE); return b == null ? null : new WallpaperEffectsGenerationManager( IWallpaperEffectsGenerationManager.Stub.asInterface(b)); } })1253 registerService(Context.WALLPAPER_EFFECTS_GENERATION_SERVICE, 1254 WallpaperEffectsGenerationManager.class, 1255 new CachedServiceFetcher<WallpaperEffectsGenerationManager>() { 1256 @Override 1257 public WallpaperEffectsGenerationManager createService(ContextImpl ctx) 1258 throws ServiceNotFoundException { 1259 IBinder b = ServiceManager.getService( 1260 Context.WALLPAPER_EFFECTS_GENERATION_SERVICE); 1261 return b == null ? null : 1262 new WallpaperEffectsGenerationManager( 1263 IWallpaperEffectsGenerationManager.Stub.asInterface(b)); 1264 } 1265 }); 1266 registerService(Context.VR_SERVICE, VrManager.class, new CachedServiceFetcher<VrManager>() { @Override public VrManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getServiceOrThrow(Context.VR_SERVICE); return new VrManager(IVrManager.Stub.asInterface(b)); } })1267 registerService(Context.VR_SERVICE, VrManager.class, new CachedServiceFetcher<VrManager>() { 1268 @Override 1269 public VrManager createService(ContextImpl ctx) throws ServiceNotFoundException { 1270 IBinder b = ServiceManager.getServiceOrThrow(Context.VR_SERVICE); 1271 return new VrManager(IVrManager.Stub.asInterface(b)); 1272 } 1273 }); 1274 registerService(Context.TIME_ZONE_RULES_MANAGER_SERVICE, RulesManager.class, new CachedServiceFetcher<RulesManager>() { @Override public RulesManager createService(ContextImpl ctx) { return new RulesManager(ctx.getOuterContext()); }})1275 registerService(Context.TIME_ZONE_RULES_MANAGER_SERVICE, RulesManager.class, 1276 new CachedServiceFetcher<RulesManager>() { 1277 @Override 1278 public RulesManager createService(ContextImpl ctx) { 1279 return new RulesManager(ctx.getOuterContext()); 1280 }}); 1281 registerService(Context.CROSS_PROFILE_APPS_SERVICE, CrossProfileApps.class, new CachedServiceFetcher<CrossProfileApps>() { @Override public CrossProfileApps createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getServiceOrThrow( Context.CROSS_PROFILE_APPS_SERVICE); return new CrossProfileApps(ctx.getOuterContext(), ICrossProfileApps.Stub.asInterface(b)); } })1282 registerService(Context.CROSS_PROFILE_APPS_SERVICE, CrossProfileApps.class, 1283 new CachedServiceFetcher<CrossProfileApps>() { 1284 @Override 1285 public CrossProfileApps createService(ContextImpl ctx) 1286 throws ServiceNotFoundException { 1287 IBinder b = ServiceManager.getServiceOrThrow( 1288 Context.CROSS_PROFILE_APPS_SERVICE); 1289 return new CrossProfileApps(ctx.getOuterContext(), 1290 ICrossProfileApps.Stub.asInterface(b)); 1291 } 1292 }); 1293 registerService(Context.SLICE_SERVICE, SliceManager.class, new CachedServiceFetcher<SliceManager>() { @Override public SliceManager createService(ContextImpl ctx) throws ServiceNotFoundException { return new SliceManager(ctx.getOuterContext(), ctx.mMainThread.getHandler()); } })1294 registerService(Context.SLICE_SERVICE, SliceManager.class, 1295 new CachedServiceFetcher<SliceManager>() { 1296 @Override 1297 public SliceManager createService(ContextImpl ctx) 1298 throws ServiceNotFoundException { 1299 return new SliceManager(ctx.getOuterContext(), 1300 ctx.mMainThread.getHandler()); 1301 } 1302 }); 1303 registerService(Context.TIME_DETECTOR_SERVICE, TimeDetector.class, new CachedServiceFetcher<TimeDetector>() { @Override public TimeDetector createService(ContextImpl ctx) throws ServiceNotFoundException { return new TimeDetectorImpl(); }})1304 registerService(Context.TIME_DETECTOR_SERVICE, TimeDetector.class, 1305 new CachedServiceFetcher<TimeDetector>() { 1306 @Override 1307 public TimeDetector createService(ContextImpl ctx) 1308 throws ServiceNotFoundException { 1309 return new TimeDetectorImpl(); 1310 }}); 1311 registerService(Context.TIME_ZONE_DETECTOR_SERVICE, TimeZoneDetector.class, new CachedServiceFetcher<TimeZoneDetector>() { @Override public TimeZoneDetector createService(ContextImpl ctx) throws ServiceNotFoundException { return new TimeZoneDetectorImpl(); }})1312 registerService(Context.TIME_ZONE_DETECTOR_SERVICE, TimeZoneDetector.class, 1313 new CachedServiceFetcher<TimeZoneDetector>() { 1314 @Override 1315 public TimeZoneDetector createService(ContextImpl ctx) 1316 throws ServiceNotFoundException { 1317 return new TimeZoneDetectorImpl(); 1318 }}); 1319 registerService(Context.TIME_MANAGER, TimeManager.class, new CachedServiceFetcher<TimeManager>() { @Override public TimeManager createService(ContextImpl ctx) throws ServiceNotFoundException { return new TimeManager(); }})1320 registerService(Context.TIME_MANAGER, TimeManager.class, 1321 new CachedServiceFetcher<TimeManager>() { 1322 @Override 1323 public TimeManager createService(ContextImpl ctx) 1324 throws ServiceNotFoundException { 1325 return new TimeManager(); 1326 }}); 1327 registerService(Context.PERMISSION_SERVICE, PermissionManager.class, new CachedServiceFetcher<PermissionManager>() { @Override public PermissionManager createService(ContextImpl ctx) throws ServiceNotFoundException { return new PermissionManager(ctx.getOuterContext()); }})1328 registerService(Context.PERMISSION_SERVICE, PermissionManager.class, 1329 new CachedServiceFetcher<PermissionManager>() { 1330 @Override 1331 public PermissionManager createService(ContextImpl ctx) 1332 throws ServiceNotFoundException { 1333 return new PermissionManager(ctx.getOuterContext()); 1334 }}); 1335 registerService(Context.LEGACY_PERMISSION_SERVICE, LegacyPermissionManager.class, new CachedServiceFetcher<LegacyPermissionManager>() { @Override public LegacyPermissionManager createService(ContextImpl ctx) throws ServiceNotFoundException { return new LegacyPermissionManager(); }})1336 registerService(Context.LEGACY_PERMISSION_SERVICE, LegacyPermissionManager.class, 1337 new CachedServiceFetcher<LegacyPermissionManager>() { 1338 @Override 1339 public LegacyPermissionManager createService(ContextImpl ctx) 1340 throws ServiceNotFoundException { 1341 return new LegacyPermissionManager(); 1342 }}); 1343 registerService(Context.PERMISSION_CONTROLLER_SERVICE, PermissionControllerManager.class, new CachedServiceFetcher<PermissionControllerManager>() { @Override public PermissionControllerManager createService(ContextImpl ctx) { return new PermissionControllerManager(ctx.getOuterContext(), ctx.getMainThreadHandler()); }})1344 registerService(Context.PERMISSION_CONTROLLER_SERVICE, PermissionControllerManager.class, 1345 new CachedServiceFetcher<PermissionControllerManager>() { 1346 @Override 1347 public PermissionControllerManager createService(ContextImpl ctx) { 1348 return new PermissionControllerManager(ctx.getOuterContext(), 1349 ctx.getMainThreadHandler()); 1350 }}); 1351 registerService(Context.PERMISSION_CHECKER_SERVICE, PermissionCheckerManager.class, new CachedServiceFetcher<PermissionCheckerManager>() { @Override public PermissionCheckerManager createService(ContextImpl ctx) throws ServiceNotFoundException { return new PermissionCheckerManager(ctx.getOuterContext()); }})1352 registerService(Context.PERMISSION_CHECKER_SERVICE, PermissionCheckerManager.class, 1353 new CachedServiceFetcher<PermissionCheckerManager>() { 1354 @Override 1355 public PermissionCheckerManager createService(ContextImpl ctx) 1356 throws ServiceNotFoundException { 1357 return new PermissionCheckerManager(ctx.getOuterContext()); 1358 }}); 1359 registerService(Context.DYNAMIC_SYSTEM_SERVICE, DynamicSystemManager.class, new CachedServiceFetcher<DynamicSystemManager>() { @Override public DynamicSystemManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getServiceOrThrow( Context.DYNAMIC_SYSTEM_SERVICE); return new DynamicSystemManager( IDynamicSystemService.Stub.asInterface(b)); }})1360 registerService(Context.DYNAMIC_SYSTEM_SERVICE, DynamicSystemManager.class, 1361 new CachedServiceFetcher<DynamicSystemManager>() { 1362 @Override 1363 public DynamicSystemManager createService(ContextImpl ctx) 1364 throws ServiceNotFoundException { 1365 IBinder b = ServiceManager.getServiceOrThrow( 1366 Context.DYNAMIC_SYSTEM_SERVICE); 1367 return new DynamicSystemManager( 1368 IDynamicSystemService.Stub.asInterface(b)); 1369 }}); 1370 registerService(Context.BATTERY_STATS_SERVICE, BatteryStatsManager.class, new CachedServiceFetcher<BatteryStatsManager>() { @Override public BatteryStatsManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getServiceOrThrow( Context.BATTERY_STATS_SERVICE); return new BatteryStatsManager( IBatteryStats.Stub.asInterface(b)); }})1371 registerService(Context.BATTERY_STATS_SERVICE, BatteryStatsManager.class, 1372 new CachedServiceFetcher<BatteryStatsManager>() { 1373 @Override 1374 public BatteryStatsManager createService(ContextImpl ctx) 1375 throws ServiceNotFoundException { 1376 IBinder b = ServiceManager.getServiceOrThrow( 1377 Context.BATTERY_STATS_SERVICE); 1378 return new BatteryStatsManager( 1379 IBatteryStats.Stub.asInterface(b)); 1380 }}); registerService(Context.DATA_LOADER_MANAGER_SERVICE, DataLoaderManager.class, new CachedServiceFetcher<DataLoaderManager>() { @Override public DataLoaderManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getServiceOrThrow( Context.DATA_LOADER_MANAGER_SERVICE); return new DataLoaderManager(IDataLoaderManager.Stub.asInterface(b)); }})1381 registerService(Context.DATA_LOADER_MANAGER_SERVICE, DataLoaderManager.class, 1382 new CachedServiceFetcher<DataLoaderManager>() { 1383 @Override 1384 public DataLoaderManager createService(ContextImpl ctx) 1385 throws ServiceNotFoundException { 1386 IBinder b = ServiceManager.getServiceOrThrow( 1387 Context.DATA_LOADER_MANAGER_SERVICE); 1388 return new DataLoaderManager(IDataLoaderManager.Stub.asInterface(b)); 1389 }}); registerService(Context.LIGHTS_SERVICE, LightsManager.class, new CachedServiceFetcher<LightsManager>() { @Override public LightsManager createService(ContextImpl ctx) throws ServiceNotFoundException { return new SystemLightsManager(ctx); }})1390 registerService(Context.LIGHTS_SERVICE, LightsManager.class, 1391 new CachedServiceFetcher<LightsManager>() { 1392 @Override 1393 public LightsManager createService(ContextImpl ctx) 1394 throws ServiceNotFoundException { 1395 return new SystemLightsManager(ctx); 1396 }}); registerService(Context.LOCALE_SERVICE, LocaleManager.class, new CachedServiceFetcher<LocaleManager>() { @Override public LocaleManager createService(ContextImpl ctx) throws ServiceNotFoundException { return new LocaleManager(ctx, ILocaleManager.Stub.asInterface( ServiceManager.getServiceOrThrow(Context.LOCALE_SERVICE))); }})1397 registerService(Context.LOCALE_SERVICE, LocaleManager.class, 1398 new CachedServiceFetcher<LocaleManager>() { 1399 @Override 1400 public LocaleManager createService(ContextImpl ctx) 1401 throws ServiceNotFoundException { 1402 return new LocaleManager(ctx, ILocaleManager.Stub.asInterface( 1403 ServiceManager.getServiceOrThrow(Context.LOCALE_SERVICE))); 1404 }}); registerService(Context.INCREMENTAL_SERVICE, IncrementalManager.class, new CachedServiceFetcher<IncrementalManager>() { @Override public IncrementalManager createService(ContextImpl ctx) { IBinder b = ServiceManager.getService(Context.INCREMENTAL_SERVICE); if (b == null) { return null; } return new IncrementalManager( IIncrementalService.Stub.asInterface(b)); }})1405 registerService(Context.INCREMENTAL_SERVICE, IncrementalManager.class, 1406 new CachedServiceFetcher<IncrementalManager>() { 1407 @Override 1408 public IncrementalManager createService(ContextImpl ctx) { 1409 IBinder b = ServiceManager.getService(Context.INCREMENTAL_SERVICE); 1410 if (b == null) { 1411 return null; 1412 } 1413 return new IncrementalManager( 1414 IIncrementalService.Stub.asInterface(b)); 1415 }}); 1416 registerService(Context.FILE_INTEGRITY_SERVICE, FileIntegrityManager.class, new CachedServiceFetcher<FileIntegrityManager>() { @Override public FileIntegrityManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getServiceOrThrow( Context.FILE_INTEGRITY_SERVICE); return new FileIntegrityManager(ctx.getOuterContext(), IFileIntegrityService.Stub.asInterface(b)); }})1417 registerService(Context.FILE_INTEGRITY_SERVICE, FileIntegrityManager.class, 1418 new CachedServiceFetcher<FileIntegrityManager>() { 1419 @Override 1420 public FileIntegrityManager createService(ContextImpl ctx) 1421 throws ServiceNotFoundException { 1422 IBinder b = ServiceManager.getServiceOrThrow( 1423 Context.FILE_INTEGRITY_SERVICE); 1424 return new FileIntegrityManager(ctx.getOuterContext(), 1425 IFileIntegrityService.Stub.asInterface(b)); 1426 }}); 1427 registerService(Context.ATTESTATION_VERIFICATION_SERVICE, AttestationVerificationManager.class, new CachedServiceFetcher<AttestationVerificationManager>() { @Override public AttestationVerificationManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getServiceOrThrow( Context.ATTESTATION_VERIFICATION_SERVICE); return new AttestationVerificationManager(ctx.getOuterContext(), IAttestationVerificationManagerService.Stub.asInterface(b)); }})1428 registerService(Context.ATTESTATION_VERIFICATION_SERVICE, 1429 AttestationVerificationManager.class, 1430 new CachedServiceFetcher<AttestationVerificationManager>() { 1431 @Override 1432 public AttestationVerificationManager createService(ContextImpl ctx) 1433 throws ServiceNotFoundException { 1434 IBinder b = ServiceManager.getServiceOrThrow( 1435 Context.ATTESTATION_VERIFICATION_SERVICE); 1436 return new AttestationVerificationManager(ctx.getOuterContext(), 1437 IAttestationVerificationManagerService.Stub.asInterface(b)); 1438 }}); 1439 1440 //CHECKSTYLE:ON IndentationCheck registerService(Context.APP_INTEGRITY_SERVICE, AppIntegrityManager.class, new CachedServiceFetcher<AppIntegrityManager>() { @Override public AppIntegrityManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getServiceOrThrow(Context.APP_INTEGRITY_SERVICE); return new AppIntegrityManager(IAppIntegrityManager.Stub.asInterface(b)); }})1441 registerService(Context.APP_INTEGRITY_SERVICE, AppIntegrityManager.class, 1442 new CachedServiceFetcher<AppIntegrityManager>() { 1443 @Override 1444 public AppIntegrityManager createService(ContextImpl ctx) 1445 throws ServiceNotFoundException { 1446 IBinder b = ServiceManager.getServiceOrThrow(Context.APP_INTEGRITY_SERVICE); 1447 return new AppIntegrityManager(IAppIntegrityManager.Stub.asInterface(b)); 1448 }}); registerService(Context.APP_HIBERNATION_SERVICE, AppHibernationManager.class, new CachedServiceFetcher<AppHibernationManager>() { @Override public AppHibernationManager createService(ContextImpl ctx) { IBinder b = ServiceManager.getService(Context.APP_HIBERNATION_SERVICE); return b == null ? null : new AppHibernationManager(ctx); }})1449 registerService(Context.APP_HIBERNATION_SERVICE, AppHibernationManager.class, 1450 new CachedServiceFetcher<AppHibernationManager>() { 1451 @Override 1452 public AppHibernationManager createService(ContextImpl ctx) { 1453 IBinder b = ServiceManager.getService(Context.APP_HIBERNATION_SERVICE); 1454 return b == null ? null : new AppHibernationManager(ctx); 1455 }}); registerService(Context.DREAM_SERVICE, DreamManager.class, new CachedServiceFetcher<DreamManager>() { @Override public DreamManager createService(ContextImpl ctx) throws ServiceNotFoundException { return new DreamManager(ctx); }})1456 registerService(Context.DREAM_SERVICE, DreamManager.class, 1457 new CachedServiceFetcher<DreamManager>() { 1458 @Override 1459 public DreamManager createService(ContextImpl ctx) 1460 throws ServiceNotFoundException { 1461 return new DreamManager(ctx); 1462 }}); registerService(Context.DEVICE_STATE_SERVICE, DeviceStateManager.class, new CachedServiceFetcher<DeviceStateManager>() { @Override public DeviceStateManager createService(ContextImpl ctx) { return new DeviceStateManager(); }})1463 registerService(Context.DEVICE_STATE_SERVICE, DeviceStateManager.class, 1464 new CachedServiceFetcher<DeviceStateManager>() { 1465 @Override 1466 public DeviceStateManager createService(ContextImpl ctx) { 1467 return new DeviceStateManager(); 1468 }}); 1469 registerService(Context.MEDIA_METRICS_SERVICE, MediaMetricsManager.class, new CachedServiceFetcher<MediaMetricsManager>() { @Override public MediaMetricsManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder iBinder = ServiceManager.getServiceOrThrow(Context.MEDIA_METRICS_SERVICE); IMediaMetricsManager service = IMediaMetricsManager.Stub.asInterface(iBinder); return new MediaMetricsManager(service, ctx.getUserId()); }})1470 registerService(Context.MEDIA_METRICS_SERVICE, MediaMetricsManager.class, 1471 new CachedServiceFetcher<MediaMetricsManager>() { 1472 @Override 1473 public MediaMetricsManager createService(ContextImpl ctx) 1474 throws ServiceNotFoundException { 1475 IBinder iBinder = 1476 ServiceManager.getServiceOrThrow(Context.MEDIA_METRICS_SERVICE); 1477 IMediaMetricsManager service = 1478 IMediaMetricsManager.Stub.asInterface(iBinder); 1479 return new MediaMetricsManager(service, ctx.getUserId()); 1480 }}); 1481 registerService(Context.GAME_SERVICE, GameManager.class, new CachedServiceFetcher<GameManager>() { @Override public GameManager createService(ContextImpl ctx) throws ServiceNotFoundException { return new GameManager(ctx.getOuterContext(), ctx.mMainThread.getHandler()); } })1482 registerService(Context.GAME_SERVICE, GameManager.class, 1483 new CachedServiceFetcher<GameManager>() { 1484 @Override 1485 public GameManager createService(ContextImpl ctx) 1486 throws ServiceNotFoundException { 1487 return new GameManager(ctx.getOuterContext(), 1488 ctx.mMainThread.getHandler()); 1489 } 1490 }); 1491 registerService(Context.DOMAIN_VERIFICATION_SERVICE, DomainVerificationManager.class, new CachedServiceFetcher<DomainVerificationManager>() { @Override public DomainVerificationManager createService(ContextImpl context) throws ServiceNotFoundException { IBinder binder = ServiceManager.getServiceOrThrow( Context.DOMAIN_VERIFICATION_SERVICE); IDomainVerificationManager service = IDomainVerificationManager.Stub.asInterface(binder); return new DomainVerificationManager(context, service); } })1492 registerService(Context.DOMAIN_VERIFICATION_SERVICE, DomainVerificationManager.class, 1493 new CachedServiceFetcher<DomainVerificationManager>() { 1494 @Override 1495 public DomainVerificationManager createService(ContextImpl context) 1496 throws ServiceNotFoundException { 1497 IBinder binder = ServiceManager.getServiceOrThrow( 1498 Context.DOMAIN_VERIFICATION_SERVICE); 1499 IDomainVerificationManager service = 1500 IDomainVerificationManager.Stub.asInterface(binder); 1501 return new DomainVerificationManager(context, service); 1502 } 1503 }); 1504 registerService(Context.DISPLAY_HASH_SERVICE, DisplayHashManager.class, new CachedServiceFetcher<DisplayHashManager>() { @Override public DisplayHashManager createService(ContextImpl ctx) { return new DisplayHashManager(); } })1505 registerService(Context.DISPLAY_HASH_SERVICE, DisplayHashManager.class, 1506 new CachedServiceFetcher<DisplayHashManager>() { 1507 @Override 1508 public DisplayHashManager createService(ContextImpl ctx) { 1509 return new DisplayHashManager(); 1510 } 1511 }); 1512 registerService(Context.AMBIENT_CONTEXT_SERVICE, AmbientContextManager.class, new CachedServiceFetcher<AmbientContextManager>() { @Override public AmbientContextManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder iBinder = ServiceManager.getServiceOrThrow( Context.AMBIENT_CONTEXT_SERVICE); IAmbientContextManager manager = IAmbientContextManager.Stub.asInterface(iBinder); return new AmbientContextManager(ctx.getOuterContext(), manager); }})1513 registerService(Context.AMBIENT_CONTEXT_SERVICE, AmbientContextManager.class, 1514 new CachedServiceFetcher<AmbientContextManager>() { 1515 @Override 1516 public AmbientContextManager createService(ContextImpl ctx) 1517 throws ServiceNotFoundException { 1518 IBinder iBinder = ServiceManager.getServiceOrThrow( 1519 Context.AMBIENT_CONTEXT_SERVICE); 1520 IAmbientContextManager manager = 1521 IAmbientContextManager.Stub.asInterface(iBinder); 1522 return new AmbientContextManager(ctx.getOuterContext(), manager); 1523 }}); 1524 1525 sInitializing = true; 1526 try { 1527 // Note: the following functions need to be @SystemApis, once they become mainline 1528 // modules. ConnectivityFrameworkInitializer.registerServiceWrappers()1529 ConnectivityFrameworkInitializer.registerServiceWrappers(); JobSchedulerFrameworkInitializer.registerServiceWrappers()1530 JobSchedulerFrameworkInitializer.registerServiceWrappers(); BlobStoreManagerFrameworkInitializer.initialize()1531 BlobStoreManagerFrameworkInitializer.initialize(); BluetoothFrameworkInitializer.registerServiceWrappers()1532 BluetoothFrameworkInitializer.registerServiceWrappers(); TelephonyFrameworkInitializer.registerServiceWrappers()1533 TelephonyFrameworkInitializer.registerServiceWrappers(); AppSearchManagerFrameworkInitializer.initialize()1534 AppSearchManagerFrameworkInitializer.initialize(); WifiFrameworkInitializer.registerServiceWrappers()1535 WifiFrameworkInitializer.registerServiceWrappers(); StatsFrameworkInitializer.registerServiceWrappers()1536 StatsFrameworkInitializer.registerServiceWrappers(); RollbackManagerFrameworkInitializer.initialize()1537 RollbackManagerFrameworkInitializer.initialize(); MediaFrameworkPlatformInitializer.registerServiceWrappers()1538 MediaFrameworkPlatformInitializer.registerServiceWrappers(); MediaFrameworkInitializer.registerServiceWrappers()1539 MediaFrameworkInitializer.registerServiceWrappers(); RoleFrameworkInitializer.registerServiceWrappers()1540 RoleFrameworkInitializer.registerServiceWrappers(); SchedulingFrameworkInitializer.registerServiceWrappers()1541 SchedulingFrameworkInitializer.registerServiceWrappers(); SdkSandboxManagerFrameworkInitializer.registerServiceWrappers()1542 SdkSandboxManagerFrameworkInitializer.registerServiceWrappers(); AdServicesFrameworkInitializer.registerServiceWrappers()1543 AdServicesFrameworkInitializer.registerServiceWrappers(); UwbFrameworkInitializer.registerServiceWrappers()1544 UwbFrameworkInitializer.registerServiceWrappers(); SafetyCenterFrameworkInitializer.registerServiceWrappers()1545 SafetyCenterFrameworkInitializer.registerServiceWrappers(); ConnectivityFrameworkInitializerTiramisu.registerServiceWrappers()1546 ConnectivityFrameworkInitializerTiramisu.registerServiceWrappers(); NearbyFrameworkInitializer.registerServiceWrappers()1547 NearbyFrameworkInitializer.registerServiceWrappers(); OnDevicePersonalizationFrameworkInitializer.registerServiceWrappers()1548 OnDevicePersonalizationFrameworkInitializer.registerServiceWrappers(); 1549 } finally { 1550 // If any of the above code throws, we're in a pretty bad shape and the process 1551 // will likely crash, but we'll reset it just in case there's an exception handler... 1552 sInitializing = false; 1553 } 1554 } 1555 1556 /** Throws {@link IllegalStateException} if not during a static initialization. */ ensureInitializing(String methodName)1557 private static void ensureInitializing(String methodName) { 1558 Preconditions.checkState(sInitializing, "Internal error: %s" 1559 + " can only be called during class initialization.", methodName); 1560 } 1561 /** 1562 * Creates an array which is used to cache per-Context service instances. 1563 * @hide 1564 */ createServiceCache()1565 public static Object[] createServiceCache() { 1566 return new Object[sServiceCacheSize]; 1567 } 1568 1569 /** 1570 * Gets a system service from a given context. 1571 * @hide 1572 */ getSystemService(ContextImpl ctx, String name)1573 public static Object getSystemService(ContextImpl ctx, String name) { 1574 if (name == null) { 1575 return null; 1576 } 1577 final ServiceFetcher<?> fetcher = SYSTEM_SERVICE_FETCHERS.get(name); 1578 if (fetcher == null) { 1579 if (sEnableServiceNotFoundWtf) { 1580 Slog.wtf(TAG, "Unknown manager requested: " + name); 1581 } 1582 return null; 1583 } 1584 1585 final Object ret = fetcher.getService(ctx); 1586 if (sEnableServiceNotFoundWtf && ret == null) { 1587 // Some services do return null in certain situations, so don't do WTF for them. 1588 switch (name) { 1589 case Context.CONTENT_CAPTURE_MANAGER_SERVICE: 1590 case Context.APP_PREDICTION_SERVICE: 1591 case Context.INCREMENTAL_SERVICE: 1592 case Context.ETHERNET_SERVICE: 1593 return null; 1594 } 1595 Slog.wtf(TAG, "Manager wrapper not available: " + name); 1596 return null; 1597 } 1598 return ret; 1599 } 1600 1601 /** 1602 * Gets the name of the system-level service that is represented by the specified class. 1603 * @hide 1604 */ getSystemServiceName(Class<?> serviceClass)1605 public static String getSystemServiceName(Class<?> serviceClass) { 1606 if (serviceClass == null) { 1607 return null; 1608 } 1609 final String serviceName = SYSTEM_SERVICE_NAMES.get(serviceClass); 1610 if (sEnableServiceNotFoundWtf && serviceName == null) { 1611 // This should be a caller bug. 1612 Slog.wtf(TAG, "Unknown manager requested: " + serviceClass.getCanonicalName()); 1613 } 1614 return serviceName; 1615 } 1616 1617 /** 1618 * Statically registers a system service with the context. 1619 * This method must be called during static initialization only. 1620 */ registerService(@onNull String serviceName, @NonNull Class<T> serviceClass, @NonNull ServiceFetcher<T> serviceFetcher)1621 private static <T> void registerService(@NonNull String serviceName, 1622 @NonNull Class<T> serviceClass, @NonNull ServiceFetcher<T> serviceFetcher) { 1623 SYSTEM_SERVICE_NAMES.put(serviceClass, serviceName); 1624 SYSTEM_SERVICE_FETCHERS.put(serviceName, serviceFetcher); 1625 SYSTEM_SERVICE_CLASS_NAMES.put(serviceName, serviceClass.getSimpleName()); 1626 } 1627 1628 /** 1629 * Returns system service class name by system service name. This method is mostly an inverse of 1630 * {@link #getSystemServiceName(Class)} 1631 * 1632 * @return system service class name. {@code null} if service name is invalid. 1633 * @hide 1634 */ 1635 @Nullable getSystemServiceClassName(@onNull String name)1636 public static String getSystemServiceClassName(@NonNull String name) { 1637 return SYSTEM_SERVICE_CLASS_NAMES.get(name); 1638 } 1639 1640 /** 1641 * Callback interface used as a parameter to {@link #registerStaticService( 1642 * String, Class, StaticServiceProducerWithoutBinder)}, which generates a service wrapper 1643 * instance that's not tied to any context and does not take a service binder object in the 1644 * constructor. 1645 * 1646 * @param <TServiceClass> type of the service wrapper class. 1647 * 1648 * @hide 1649 */ 1650 @SystemApi 1651 public interface StaticServiceProducerWithoutBinder<TServiceClass> { 1652 /** 1653 * Return a new service wrapper of type {@code TServiceClass}. 1654 */ 1655 @NonNull createService()1656 TServiceClass createService(); 1657 } 1658 1659 /** 1660 * Callback interface used as a parameter to {@link #registerStaticService( 1661 * String, Class, StaticServiceProducerWithBinder)}, which generates a service wrapper instance 1662 * that's not tied to any context and takes a service binder object in the constructor. 1663 * 1664 * @param <TServiceClass> type of the service wrapper class. 1665 * 1666 * @hide 1667 */ 1668 @SystemApi 1669 public interface StaticServiceProducerWithBinder<TServiceClass> { 1670 /** 1671 * Return a new service wrapper of type {@code TServiceClass} backed by a given 1672 * service binder object. 1673 */ 1674 @NonNull createService(@onNull IBinder serviceBinder)1675 TServiceClass createService(@NonNull IBinder serviceBinder); 1676 } 1677 1678 /** 1679 * Callback interface used as a parameter to {@link #registerContextAwareService( 1680 * String, Class, ContextAwareServiceProducerWithoutBinder)}, 1681 * which generates a service wrapper instance 1682 * that's tied to a specific context and does not take a service binder object in the 1683 * constructor. 1684 * 1685 * @param <TServiceClass> type of the service wrapper class. 1686 * 1687 * @hide 1688 */ 1689 @SystemApi 1690 public interface ContextAwareServiceProducerWithoutBinder<TServiceClass> { 1691 /** 1692 * Return a new service wrapper of type {@code TServiceClass} tied to a given 1693 * {@code context}. 1694 */ 1695 @NonNull 1696 //TODO Do we need to pass the "base context" too? createService(@onNull Context context)1697 TServiceClass createService(@NonNull Context context); 1698 } 1699 1700 /** 1701 * Callback interface used as a parameter to {@link #registerContextAwareService( 1702 * String, Class, ContextAwareServiceProducerWithBinder)}, 1703 * which generates a service wrapper instance 1704 * that's tied to a specific context and takes a service binder object in the constructor. 1705 * 1706 * @param <TServiceClass> type of the service wrapper class. 1707 * 1708 * @hide 1709 */ 1710 @SystemApi 1711 public interface ContextAwareServiceProducerWithBinder<TServiceClass> { 1712 /** 1713 * Return a new service wrapper of type {@code TServiceClass} backed by a given 1714 * service binder object that's tied to a given {@code context}. 1715 */ 1716 @NonNull 1717 //TODO Do we need to pass the "base context" too? createService(@onNull Context context, @NonNull IBinder serviceBinder)1718 TServiceClass createService(@NonNull Context context, @NonNull IBinder serviceBinder); 1719 } 1720 1721 /** 1722 * Used by apex modules to register a "service wrapper" that is not tied to any {@link Context}. 1723 * 1724 * <p>This can only be called from the methods called by the static initializer of 1725 * {@link SystemServiceRegistry}. (Otherwise it throws a {@link IllegalStateException}.) 1726 * 1727 * @param serviceName the name of the binder object, such as 1728 * {@link Context#JOB_SCHEDULER_SERVICE}. 1729 * @param serviceWrapperClass the wrapper class, such as the class of 1730 * {@link android.app.job.JobScheduler}. 1731 * @param serviceProducer Callback that takes the service binder object with the name 1732 * {@code serviceName} and returns an actual service wrapper instance. 1733 * 1734 * @hide 1735 */ 1736 @SystemApi registerStaticService( @onNull String serviceName, @NonNull Class<TServiceClass> serviceWrapperClass, @NonNull StaticServiceProducerWithBinder<TServiceClass> serviceProducer)1737 public static <TServiceClass> void registerStaticService( 1738 @NonNull String serviceName, @NonNull Class<TServiceClass> serviceWrapperClass, 1739 @NonNull StaticServiceProducerWithBinder<TServiceClass> serviceProducer) { 1740 ensureInitializing("registerStaticService"); 1741 Preconditions.checkStringNotEmpty(serviceName); 1742 Objects.requireNonNull(serviceWrapperClass); 1743 Objects.requireNonNull(serviceProducer); 1744 1745 registerService(serviceName, serviceWrapperClass, 1746 new StaticServiceFetcher<TServiceClass>() { 1747 @Override 1748 public TServiceClass createService() throws ServiceNotFoundException { 1749 return serviceProducer.createService( 1750 ServiceManager.getServiceOrThrow(serviceName)); 1751 }}); 1752 } 1753 1754 /** 1755 * Similar to {@link #registerStaticService(String, Class, StaticServiceProducerWithBinder)}, 1756 * but used for a "service wrapper" that doesn't take a service binder in its constructor. 1757 * 1758 * @hide 1759 */ 1760 @SystemApi registerStaticService( @onNull String serviceName, @NonNull Class<TServiceClass> serviceWrapperClass, @NonNull StaticServiceProducerWithoutBinder<TServiceClass> serviceProducer)1761 public static <TServiceClass> void registerStaticService( 1762 @NonNull String serviceName, @NonNull Class<TServiceClass> serviceWrapperClass, 1763 @NonNull StaticServiceProducerWithoutBinder<TServiceClass> serviceProducer) { 1764 ensureInitializing("registerStaticService"); 1765 Preconditions.checkStringNotEmpty(serviceName); 1766 Objects.requireNonNull(serviceWrapperClass); 1767 Objects.requireNonNull(serviceProducer); 1768 1769 registerService(serviceName, serviceWrapperClass, 1770 new StaticServiceFetcher<TServiceClass>() { 1771 @Override 1772 public TServiceClass createService() { 1773 return serviceProducer.createService(); 1774 }}); 1775 } 1776 1777 /** 1778 * Used by apex modules to register a "service wrapper" that is tied to a specific 1779 * {@link Context}. 1780 * 1781 * <p>This can only be called from the methods called by the static initializer of 1782 * {@link SystemServiceRegistry}. (Otherwise it throws a {@link IllegalStateException}.) 1783 * 1784 * @param serviceName the name of the binder object, such as 1785 * {@link Context#JOB_SCHEDULER_SERVICE}. 1786 * @param serviceWrapperClass the wrapper class, such as the class of 1787 * {@link android.app.job.JobScheduler}. 1788 * @param serviceProducer lambda that takes the service binder object with the name 1789 * {@code serviceName}, a {@link Context} and returns an actual service wrapper instance. 1790 * 1791 * @hide 1792 */ 1793 @SystemApi registerContextAwareService( @onNull String serviceName, @NonNull Class<TServiceClass> serviceWrapperClass, @NonNull ContextAwareServiceProducerWithBinder<TServiceClass> serviceProducer)1794 public static <TServiceClass> void registerContextAwareService( 1795 @NonNull String serviceName, @NonNull Class<TServiceClass> serviceWrapperClass, 1796 @NonNull ContextAwareServiceProducerWithBinder<TServiceClass> serviceProducer) { 1797 ensureInitializing("registerContextAwareService"); 1798 Preconditions.checkStringNotEmpty(serviceName); 1799 Objects.requireNonNull(serviceWrapperClass); 1800 Objects.requireNonNull(serviceProducer); 1801 1802 registerService(serviceName, serviceWrapperClass, 1803 new CachedServiceFetcher<TServiceClass>() { 1804 @Override 1805 public TServiceClass createService(ContextImpl ctx) 1806 throws ServiceNotFoundException { 1807 return serviceProducer.createService( 1808 ctx.getOuterContext(), 1809 ServiceManager.getServiceOrThrow(serviceName)); 1810 }}); 1811 } 1812 1813 1814 /** 1815 * Similar to {@link #registerContextAwareService(String, Class, 1816 * ContextAwareServiceProducerWithBinder)}, 1817 * but used for a "service wrapper" that doesn't take a service binder in its constructor. 1818 * 1819 * @hide 1820 */ 1821 @SystemApi registerContextAwareService( @onNull String serviceName, @NonNull Class<TServiceClass> serviceWrapperClass, @NonNull ContextAwareServiceProducerWithoutBinder<TServiceClass> serviceProducer)1822 public static <TServiceClass> void registerContextAwareService( 1823 @NonNull String serviceName, @NonNull Class<TServiceClass> serviceWrapperClass, 1824 @NonNull ContextAwareServiceProducerWithoutBinder<TServiceClass> serviceProducer) { 1825 ensureInitializing("registerContextAwareService"); 1826 Preconditions.checkStringNotEmpty(serviceName); 1827 Objects.requireNonNull(serviceWrapperClass); 1828 Objects.requireNonNull(serviceProducer); 1829 1830 registerService(serviceName, serviceWrapperClass, 1831 new CachedServiceFetcher<TServiceClass>() { 1832 @Override 1833 public TServiceClass createService(ContextImpl ctx) { 1834 return serviceProducer.createService(ctx.getOuterContext()); 1835 }}); 1836 } 1837 1838 /** 1839 * Base interface for classes that fetch services. 1840 * These objects must only be created during static initialization. 1841 */ 1842 static abstract interface ServiceFetcher<T> { getService(ContextImpl ctx)1843 T getService(ContextImpl ctx); 1844 } 1845 1846 /** 1847 * Override this class when the system service constructor needs a 1848 * ContextImpl and should be cached and retained by that context. 1849 */ 1850 static abstract class CachedServiceFetcher<T> implements ServiceFetcher<T> { 1851 private final int mCacheIndex; 1852 CachedServiceFetcher()1853 CachedServiceFetcher() { 1854 // Note this class must be instantiated only by the static initializer of the 1855 // outer class (SystemServiceRegistry), which already does the synchronization, 1856 // so bare access to sServiceCacheSize is okay here. 1857 mCacheIndex = sServiceCacheSize++; 1858 } 1859 1860 @Override 1861 @SuppressWarnings("unchecked") getService(ContextImpl ctx)1862 public final T getService(ContextImpl ctx) { 1863 final Object[] cache = ctx.mServiceCache; 1864 final int[] gates = ctx.mServiceInitializationStateArray; 1865 boolean interrupted = false; 1866 1867 T ret = null; 1868 1869 for (;;) { 1870 boolean doInitialize = false; 1871 synchronized (cache) { 1872 // Return it if we already have a cached instance. 1873 T service = (T) cache[mCacheIndex]; 1874 if (service != null) { 1875 ret = service; 1876 break; // exit the for (;;) 1877 } 1878 1879 // If we get here, there's no cached instance. 1880 1881 // Grr... if gate is STATE_READY, then this means we initialized the service 1882 // once but someone cleared it. 1883 // We start over from STATE_UNINITIALIZED. 1884 // Similarly, if the previous attempt returned null, we'll retry again. 1885 if (gates[mCacheIndex] == ContextImpl.STATE_READY 1886 || gates[mCacheIndex] == ContextImpl.STATE_NOT_FOUND) { 1887 gates[mCacheIndex] = ContextImpl.STATE_UNINITIALIZED; 1888 } 1889 1890 // It's possible for multiple threads to get here at the same time, so 1891 // use the "gate" to make sure only the first thread will call createService(). 1892 1893 // At this point, the gate must be either UNINITIALIZED or INITIALIZING. 1894 if (gates[mCacheIndex] == ContextImpl.STATE_UNINITIALIZED) { 1895 doInitialize = true; 1896 gates[mCacheIndex] = ContextImpl.STATE_INITIALIZING; 1897 } 1898 } 1899 1900 if (doInitialize) { 1901 // Only the first thread gets here. 1902 1903 T service = null; 1904 @ServiceInitializationState int newState = ContextImpl.STATE_NOT_FOUND; 1905 try { 1906 // This thread is the first one to get here. Instantiate the service 1907 // *without* the cache lock held. 1908 service = createService(ctx); 1909 newState = ContextImpl.STATE_READY; 1910 1911 } catch (ServiceNotFoundException e) { 1912 onServiceNotFound(e); 1913 1914 } finally { 1915 synchronized (cache) { 1916 cache[mCacheIndex] = service; 1917 gates[mCacheIndex] = newState; 1918 cache.notifyAll(); 1919 } 1920 } 1921 ret = service; 1922 break; // exit the for (;;) 1923 } 1924 // The other threads will wait for the first thread to call notifyAll(), 1925 // and go back to the top and retry. 1926 synchronized (cache) { 1927 // Repeat until the state becomes STATE_READY or STATE_NOT_FOUND. 1928 // We can't respond to interrupts here; just like we can't in the "doInitialize" 1929 // path, so we remember the interrupt state here and re-interrupt later. 1930 while (gates[mCacheIndex] < ContextImpl.STATE_READY) { 1931 try { 1932 // Clear the interrupt state. 1933 interrupted |= Thread.interrupted(); 1934 cache.wait(); 1935 } catch (InterruptedException e) { 1936 // This shouldn't normally happen, but if someone interrupts the 1937 // thread, it will. 1938 Slog.w(TAG, "getService() interrupted"); 1939 interrupted = true; 1940 } 1941 } 1942 } 1943 } 1944 if (interrupted) { 1945 Thread.currentThread().interrupt(); 1946 } 1947 return ret; 1948 } 1949 createService(ContextImpl ctx)1950 public abstract T createService(ContextImpl ctx) throws ServiceNotFoundException; 1951 } 1952 1953 /** 1954 * Override this class when the system service does not need a ContextImpl 1955 * and should be cached and retained process-wide. 1956 */ 1957 static abstract class StaticServiceFetcher<T> implements ServiceFetcher<T> { 1958 private T mCachedInstance; 1959 1960 @Override getService(ContextImpl ctx)1961 public final T getService(ContextImpl ctx) { 1962 synchronized (StaticServiceFetcher.this) { 1963 if (mCachedInstance == null) { 1964 try { 1965 mCachedInstance = createService(); 1966 } catch (ServiceNotFoundException e) { 1967 onServiceNotFound(e); 1968 } 1969 } 1970 return mCachedInstance; 1971 } 1972 } 1973 createService()1974 public abstract T createService() throws ServiceNotFoundException; 1975 } 1976 1977 /** @hide */ onServiceNotFound(ServiceNotFoundException e)1978 public static void onServiceNotFound(ServiceNotFoundException e) { 1979 // We're mostly interested in tracking down long-lived core system 1980 // components that might stumble if they obtain bad references; just 1981 // emit a tidy log message for normal apps 1982 if (android.os.Process.myUid() < android.os.Process.FIRST_APPLICATION_UID) { 1983 Log.wtf(TAG, e.getMessage(), e); 1984 } else { 1985 Log.w(TAG, e.getMessage()); 1986 } 1987 } 1988 } 1989