Loading apex/jobscheduler/framework/java/android/app/job/JobSchedulerFrameworkInitializer.java +2 −2 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package android.app.job; import android.annotation.SystemApi; import android.app.JobSchedulerImpl; import android.app.SystemServiceRegistry; import android.content.Context; Loading @@ -28,6 +29,7 @@ import android.os.PowerWhitelistManager; * * @hide */ @SystemApi public class JobSchedulerFrameworkInitializer { private JobSchedulerFrameworkInitializer() { } Loading @@ -38,8 +40,6 @@ public class JobSchedulerFrameworkInitializer { * {@link Context#getSystemService} can return them. * * <p>If this is called from other places, it throws a {@link IllegalStateException). * * TODO Make it a system API */ public static void registerServiceWrappers() { SystemServiceRegistry.registerStaticService( Loading api/system-current.txt +27 −0 Original line number Diff line number Diff line Loading @@ -652,6 +652,29 @@ package android.app { method public boolean isStatusBarExpansionDisabled(); } public final class SystemServiceRegistry { method public static <TServiceClass> void registerContextAwareService(@NonNull String, @NonNull Class<TServiceClass>, @NonNull android.app.SystemServiceRegistry.ContextAwareServiceProducerWithBinder<TServiceClass>); method public static <TServiceClass> void registerContextAwareService(@NonNull String, @NonNull Class<TServiceClass>, @NonNull android.app.SystemServiceRegistry.ContextAwareServiceProducerWithoutBinder<TServiceClass>); method public static <TServiceClass> void registerStaticService(@NonNull String, @NonNull Class<TServiceClass>, @NonNull android.app.SystemServiceRegistry.StaticServiceProducerWithBinder<TServiceClass>); method public static <TServiceClass> void registerStaticService(@NonNull String, @NonNull Class<TServiceClass>, @NonNull android.app.SystemServiceRegistry.StaticServiceProducerWithoutBinder<TServiceClass>); } public static interface SystemServiceRegistry.ContextAwareServiceProducerWithBinder<TServiceClass> { method @NonNull public TServiceClass createService(@NonNull android.content.Context, @NonNull android.os.IBinder); } public static interface SystemServiceRegistry.ContextAwareServiceProducerWithoutBinder<TServiceClass> { method @NonNull public TServiceClass createService(@NonNull android.content.Context); } public static interface SystemServiceRegistry.StaticServiceProducerWithBinder<TServiceClass> { method @NonNull public TServiceClass createService(@NonNull android.os.IBinder); } public static interface SystemServiceRegistry.StaticServiceProducerWithoutBinder<TServiceClass> { method @NonNull public TServiceClass createService(); } public class UiModeManager { method @RequiresPermission(android.Manifest.permission.ENTER_CAR_MODE_PRIORITIZED) public void enableCarMode(@IntRange(from=0) int, int); field public static final String ACTION_ENTER_CAR_MODE_PRIORITIZED = "android.app.action.ENTER_CAR_MODE_PRIORITIZED"; Loading Loading @@ -1091,6 +1114,10 @@ package android.app.job { method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public abstract int scheduleAsPackage(@NonNull android.app.job.JobInfo, @NonNull String, int, String); } public class JobSchedulerFrameworkInitializer { method public static void registerServiceWrappers(); } } package android.app.prediction { Loading core/java/android/app/SystemServiceRegistry.java +27 −23 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package android.app; import android.accounts.AccountManager; import android.accounts.IAccountManager; import android.annotation.NonNull; import android.annotation.SystemApi; import android.app.ContextImpl.ServiceInitializationState; import android.app.admin.DevicePolicyManager; import android.app.admin.IDevicePolicyManager; Loading Loading @@ -193,6 +194,7 @@ import java.util.Map; * * @hide */ @SystemApi public final class SystemServiceRegistry { private static final String TAG = "SystemServiceRegistry"; Loading Loading @@ -1191,7 +1193,6 @@ public final class SystemServiceRegistry { try { // Note: the following functions need to be @SystemApis, once they become mainline // modules. JobSchedulerFrameworkInitializer.registerServiceWrappers(); BlobStoreManagerFrameworkInitializer.initialize(); TelephonyFrameworkInitializer.registerServiceWrappers(); Loading Loading @@ -1246,18 +1247,20 @@ public final class SystemServiceRegistry { /** * Callback interface used as a parameter to {@link #registerStaticService( * String, Class, StaticServiceProducerNoBinder)}, which generates a service wrapper instance * that's not tied to any context and does not take a service binder object in the constructor. * String, Class, StaticServiceProducerWithoutBinder)}, which generates a service wrapper * instance that's not tied to any context and does not take a service binder object in the * constructor. * * @param <TServiceClass> type of the service wrapper class. * * @hide */ //@SystemApi TODO Make it a system API. public interface StaticServiceProducerNoBinder<TServiceClass> { @SystemApi public interface StaticServiceProducerWithoutBinder<TServiceClass> { /** * Return a new service wrapper of type {@code TServiceClass}. */ @NonNull TServiceClass createService(); } Loading @@ -1270,18 +1273,19 @@ public final class SystemServiceRegistry { * * @hide */ //@SystemApi TODO Make it a system API. @SystemApi public interface StaticServiceProducerWithBinder<TServiceClass> { /** * Return a new service wrapper of type {@code TServiceClass} backed by a given * service binder object. */ TServiceClass createService(IBinder serviceBinder); @NonNull TServiceClass createService(@NonNull IBinder serviceBinder); } /** * Callback interface used as a parameter to {@link #registerContextAwareService( * String, Class, ContextAwareServiceProducerNoBinder)}, * String, Class, ContextAwareServiceProducerWithoutBinder)}, * which generates a service wrapper instance * that's tied to a specific context and does not take a service binder object in the * constructor. Loading @@ -1290,15 +1294,15 @@ public final class SystemServiceRegistry { * * @hide */ //@SystemApi TODO Make it a system API. public interface ContextAwareServiceProducerNoBinder<TServiceClass> { @SystemApi public interface ContextAwareServiceProducerWithoutBinder<TServiceClass> { /** * Return a new service wrapper of type {@code TServiceClass} tied to a given * {@code context}. * * TODO Do we need to pass the "base context" too? */ TServiceClass createService(Context context); @NonNull //TODO Do we need to pass the "base context" too? TServiceClass createService(@NonNull Context context); } /** Loading @@ -1311,15 +1315,15 @@ public final class SystemServiceRegistry { * * @hide */ //@SystemApi TODO Make it a system API. @SystemApi public interface ContextAwareServiceProducerWithBinder<TServiceClass> { /** * Return a new service wrapper of type {@code TServiceClass} backed by a given * service binder object that's tied to a given {@code context}. * * TODO Do we need to pass the "base context" too? */ TServiceClass createService(Context context, IBinder serviceBinder); @NonNull //TODO Do we need to pass the "base context" too? TServiceClass createService(@NonNull Context context, @NonNull IBinder serviceBinder); } /** Loading @@ -1337,7 +1341,7 @@ public final class SystemServiceRegistry { * * @hide */ //@SystemApi TODO Make it a system API. @SystemApi public static <TServiceClass> void registerStaticService( @NonNull String serviceName, @NonNull Class<TServiceClass> serviceWrapperClass, @NonNull StaticServiceProducerWithBinder<TServiceClass> serviceProducer) { Loading @@ -1361,10 +1365,10 @@ public final class SystemServiceRegistry { * * @hide */ //@SystemApi TODO Make it a system API. @SystemApi public static <TServiceClass> void registerStaticService( @NonNull String serviceName, @NonNull Class<TServiceClass> serviceWrapperClass, @NonNull StaticServiceProducerNoBinder<TServiceClass> serviceProducer) { @NonNull StaticServiceProducerWithoutBinder<TServiceClass> serviceProducer) { ensureInitializing("registerStaticService"); Preconditions.checkStringNotEmpty(serviceName); Preconditions.checkNotNull(serviceWrapperClass); Loading Loading @@ -1394,7 +1398,7 @@ public final class SystemServiceRegistry { * * @hide */ //@SystemApi TODO Make it a system API. @SystemApi public static <TServiceClass> void registerContextAwareService( @NonNull String serviceName, @NonNull Class<TServiceClass> serviceWrapperClass, @NonNull ContextAwareServiceProducerWithBinder<TServiceClass> serviceProducer) { Loading Loading @@ -1422,10 +1426,10 @@ public final class SystemServiceRegistry { * * @hide */ //@SystemApi TODO Make it a system API. @SystemApi public static <TServiceClass> void registerContextAwareService( @NonNull String serviceName, @NonNull Class<TServiceClass> serviceWrapperClass, @NonNull ContextAwareServiceProducerNoBinder<TServiceClass> serviceProducer) { @NonNull ContextAwareServiceProducerWithoutBinder<TServiceClass> serviceProducer) { ensureInitializing("registerContextAwareService"); Preconditions.checkStringNotEmpty(serviceName); Preconditions.checkNotNull(serviceWrapperClass); Loading Loading
apex/jobscheduler/framework/java/android/app/job/JobSchedulerFrameworkInitializer.java +2 −2 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package android.app.job; import android.annotation.SystemApi; import android.app.JobSchedulerImpl; import android.app.SystemServiceRegistry; import android.content.Context; Loading @@ -28,6 +29,7 @@ import android.os.PowerWhitelistManager; * * @hide */ @SystemApi public class JobSchedulerFrameworkInitializer { private JobSchedulerFrameworkInitializer() { } Loading @@ -38,8 +40,6 @@ public class JobSchedulerFrameworkInitializer { * {@link Context#getSystemService} can return them. * * <p>If this is called from other places, it throws a {@link IllegalStateException). * * TODO Make it a system API */ public static void registerServiceWrappers() { SystemServiceRegistry.registerStaticService( Loading
api/system-current.txt +27 −0 Original line number Diff line number Diff line Loading @@ -652,6 +652,29 @@ package android.app { method public boolean isStatusBarExpansionDisabled(); } public final class SystemServiceRegistry { method public static <TServiceClass> void registerContextAwareService(@NonNull String, @NonNull Class<TServiceClass>, @NonNull android.app.SystemServiceRegistry.ContextAwareServiceProducerWithBinder<TServiceClass>); method public static <TServiceClass> void registerContextAwareService(@NonNull String, @NonNull Class<TServiceClass>, @NonNull android.app.SystemServiceRegistry.ContextAwareServiceProducerWithoutBinder<TServiceClass>); method public static <TServiceClass> void registerStaticService(@NonNull String, @NonNull Class<TServiceClass>, @NonNull android.app.SystemServiceRegistry.StaticServiceProducerWithBinder<TServiceClass>); method public static <TServiceClass> void registerStaticService(@NonNull String, @NonNull Class<TServiceClass>, @NonNull android.app.SystemServiceRegistry.StaticServiceProducerWithoutBinder<TServiceClass>); } public static interface SystemServiceRegistry.ContextAwareServiceProducerWithBinder<TServiceClass> { method @NonNull public TServiceClass createService(@NonNull android.content.Context, @NonNull android.os.IBinder); } public static interface SystemServiceRegistry.ContextAwareServiceProducerWithoutBinder<TServiceClass> { method @NonNull public TServiceClass createService(@NonNull android.content.Context); } public static interface SystemServiceRegistry.StaticServiceProducerWithBinder<TServiceClass> { method @NonNull public TServiceClass createService(@NonNull android.os.IBinder); } public static interface SystemServiceRegistry.StaticServiceProducerWithoutBinder<TServiceClass> { method @NonNull public TServiceClass createService(); } public class UiModeManager { method @RequiresPermission(android.Manifest.permission.ENTER_CAR_MODE_PRIORITIZED) public void enableCarMode(@IntRange(from=0) int, int); field public static final String ACTION_ENTER_CAR_MODE_PRIORITIZED = "android.app.action.ENTER_CAR_MODE_PRIORITIZED"; Loading Loading @@ -1091,6 +1114,10 @@ package android.app.job { method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public abstract int scheduleAsPackage(@NonNull android.app.job.JobInfo, @NonNull String, int, String); } public class JobSchedulerFrameworkInitializer { method public static void registerServiceWrappers(); } } package android.app.prediction { Loading
core/java/android/app/SystemServiceRegistry.java +27 −23 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package android.app; import android.accounts.AccountManager; import android.accounts.IAccountManager; import android.annotation.NonNull; import android.annotation.SystemApi; import android.app.ContextImpl.ServiceInitializationState; import android.app.admin.DevicePolicyManager; import android.app.admin.IDevicePolicyManager; Loading Loading @@ -193,6 +194,7 @@ import java.util.Map; * * @hide */ @SystemApi public final class SystemServiceRegistry { private static final String TAG = "SystemServiceRegistry"; Loading Loading @@ -1191,7 +1193,6 @@ public final class SystemServiceRegistry { try { // Note: the following functions need to be @SystemApis, once they become mainline // modules. JobSchedulerFrameworkInitializer.registerServiceWrappers(); BlobStoreManagerFrameworkInitializer.initialize(); TelephonyFrameworkInitializer.registerServiceWrappers(); Loading Loading @@ -1246,18 +1247,20 @@ public final class SystemServiceRegistry { /** * Callback interface used as a parameter to {@link #registerStaticService( * String, Class, StaticServiceProducerNoBinder)}, which generates a service wrapper instance * that's not tied to any context and does not take a service binder object in the constructor. * String, Class, StaticServiceProducerWithoutBinder)}, which generates a service wrapper * instance that's not tied to any context and does not take a service binder object in the * constructor. * * @param <TServiceClass> type of the service wrapper class. * * @hide */ //@SystemApi TODO Make it a system API. public interface StaticServiceProducerNoBinder<TServiceClass> { @SystemApi public interface StaticServiceProducerWithoutBinder<TServiceClass> { /** * Return a new service wrapper of type {@code TServiceClass}. */ @NonNull TServiceClass createService(); } Loading @@ -1270,18 +1273,19 @@ public final class SystemServiceRegistry { * * @hide */ //@SystemApi TODO Make it a system API. @SystemApi public interface StaticServiceProducerWithBinder<TServiceClass> { /** * Return a new service wrapper of type {@code TServiceClass} backed by a given * service binder object. */ TServiceClass createService(IBinder serviceBinder); @NonNull TServiceClass createService(@NonNull IBinder serviceBinder); } /** * Callback interface used as a parameter to {@link #registerContextAwareService( * String, Class, ContextAwareServiceProducerNoBinder)}, * String, Class, ContextAwareServiceProducerWithoutBinder)}, * which generates a service wrapper instance * that's tied to a specific context and does not take a service binder object in the * constructor. Loading @@ -1290,15 +1294,15 @@ public final class SystemServiceRegistry { * * @hide */ //@SystemApi TODO Make it a system API. public interface ContextAwareServiceProducerNoBinder<TServiceClass> { @SystemApi public interface ContextAwareServiceProducerWithoutBinder<TServiceClass> { /** * Return a new service wrapper of type {@code TServiceClass} tied to a given * {@code context}. * * TODO Do we need to pass the "base context" too? */ TServiceClass createService(Context context); @NonNull //TODO Do we need to pass the "base context" too? TServiceClass createService(@NonNull Context context); } /** Loading @@ -1311,15 +1315,15 @@ public final class SystemServiceRegistry { * * @hide */ //@SystemApi TODO Make it a system API. @SystemApi public interface ContextAwareServiceProducerWithBinder<TServiceClass> { /** * Return a new service wrapper of type {@code TServiceClass} backed by a given * service binder object that's tied to a given {@code context}. * * TODO Do we need to pass the "base context" too? */ TServiceClass createService(Context context, IBinder serviceBinder); @NonNull //TODO Do we need to pass the "base context" too? TServiceClass createService(@NonNull Context context, @NonNull IBinder serviceBinder); } /** Loading @@ -1337,7 +1341,7 @@ public final class SystemServiceRegistry { * * @hide */ //@SystemApi TODO Make it a system API. @SystemApi public static <TServiceClass> void registerStaticService( @NonNull String serviceName, @NonNull Class<TServiceClass> serviceWrapperClass, @NonNull StaticServiceProducerWithBinder<TServiceClass> serviceProducer) { Loading @@ -1361,10 +1365,10 @@ public final class SystemServiceRegistry { * * @hide */ //@SystemApi TODO Make it a system API. @SystemApi public static <TServiceClass> void registerStaticService( @NonNull String serviceName, @NonNull Class<TServiceClass> serviceWrapperClass, @NonNull StaticServiceProducerNoBinder<TServiceClass> serviceProducer) { @NonNull StaticServiceProducerWithoutBinder<TServiceClass> serviceProducer) { ensureInitializing("registerStaticService"); Preconditions.checkStringNotEmpty(serviceName); Preconditions.checkNotNull(serviceWrapperClass); Loading Loading @@ -1394,7 +1398,7 @@ public final class SystemServiceRegistry { * * @hide */ //@SystemApi TODO Make it a system API. @SystemApi public static <TServiceClass> void registerContextAwareService( @NonNull String serviceName, @NonNull Class<TServiceClass> serviceWrapperClass, @NonNull ContextAwareServiceProducerWithBinder<TServiceClass> serviceProducer) { Loading Loading @@ -1422,10 +1426,10 @@ public final class SystemServiceRegistry { * * @hide */ //@SystemApi TODO Make it a system API. @SystemApi public static <TServiceClass> void registerContextAwareService( @NonNull String serviceName, @NonNull Class<TServiceClass> serviceWrapperClass, @NonNull ContextAwareServiceProducerNoBinder<TServiceClass> serviceProducer) { @NonNull ContextAwareServiceProducerWithoutBinder<TServiceClass> serviceProducer) { ensureInitializing("registerContextAwareService"); Preconditions.checkStringNotEmpty(serviceName); Preconditions.checkNotNull(serviceWrapperClass); Loading