From 431f3af83b6484c859cb4a8a2a5e8faddbca255d Mon Sep 17 00:00:00 2001 From: Jin Seok Park Date: Thu, 2 Jul 2020 14:43:20 +0900 Subject: [PATCH] Remove using hidden API: MediaSessionManager(Context) Replace with SystemServiceRegistry.registerContextAwareService, which is a @SystemApi. See ag/9734296 for reference. Bug: 160380016 Test: atest CtsMediaTestCases:android.media.cts.MediaSessionManagerTest Change-Id: I9b6da97e0e0f5181ce8681a399ca090e67f6fd4e --- .../android/app/SystemServiceRegistry.java | 10 ++-------- .../media/MediaFrameworkInitializer.java | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/core/java/android/app/SystemServiceRegistry.java b/core/java/android/app/SystemServiceRegistry.java index c20c11fea1e48..59997ccab687d 100644 --- a/core/java/android/app/SystemServiceRegistry.java +++ b/core/java/android/app/SystemServiceRegistry.java @@ -101,11 +101,11 @@ import android.location.ICountryDetector; import android.location.ILocationManager; import android.location.LocationManager; import android.media.AudioManager; +import android.media.MediaFrameworkInitializer; import android.media.MediaRouter; import android.media.midi.IMidiManager; import android.media.midi.MidiManager; import android.media.projection.MediaProjectionManager; -import android.media.session.MediaSessionManager; import android.media.soundtrigger.SoundTriggerManager; import android.media.tv.ITvInputManager; import android.media.tv.TvInputManager; @@ -855,13 +855,6 @@ public final class SystemServiceRegistry { return new ConsumerIrManager(ctx); }}); - registerService(Context.MEDIA_SESSION_SERVICE, MediaSessionManager.class, - new CachedServiceFetcher() { - @Override - public MediaSessionManager createService(ContextImpl ctx) { - return new MediaSessionManager(ctx); - }}); - registerService(Context.TRUST_SERVICE, TrustManager.class, new StaticServiceFetcher() { @Override @@ -1335,6 +1328,7 @@ public final class SystemServiceRegistry { WifiFrameworkInitializer.registerServiceWrappers(); StatsFrameworkInitializer.registerServiceWrappers(); RollbackManagerFrameworkInitializer.initialize(); + MediaFrameworkInitializer.registerServiceWrappers(); } finally { // If any of the above code throws, we're in a pretty bad shape and the process // will likely crash, but we'll reset it just in case there's an exception handler... diff --git a/media/java/android/media/MediaFrameworkInitializer.java b/media/java/android/media/MediaFrameworkInitializer.java index 068b59a342515..577442ec42e43 100644 --- a/media/java/android/media/MediaFrameworkInitializer.java +++ b/media/java/android/media/MediaFrameworkInitializer.java @@ -17,6 +17,9 @@ package android.media; import android.annotation.NonNull; +import android.app.SystemServiceRegistry; +import android.content.Context; +import android.media.session.MediaSessionManager; import com.android.internal.util.Preconditions; @@ -53,4 +56,19 @@ public class MediaFrameworkInitializer { public static MediaServiceManager getMediaServiceManager() { return sMediaServiceManager; } + + /** + * Called by {@link SystemServiceRegistry}'s static initializer and registers all media + * services to {@link Context}, so that {@link Context#getSystemService} can return them. + * + * @throws IllegalStateException if this is called from anywhere besides + * {@link SystemServiceRegistry} + */ + public static void registerServiceWrappers() { + SystemServiceRegistry.registerContextAwareService( + Context.MEDIA_SESSION_SERVICE, + MediaSessionManager.class, + context -> new MediaSessionManager(context) + ); + } }