Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 903102c4 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Don't refer to DeviceIdle from SystemServiceRegistry"

parents 635c8934 7d6d9ca3
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -664,6 +664,7 @@ package android.content {
    method public void setContentCaptureOptions(@Nullable android.content.ContentCaptureOptions);
    field public static final String BUGREPORT_SERVICE = "bugreport";
    field public static final String CONTENT_CAPTURE_MANAGER_SERVICE = "content_capture";
    field public static final String DEVICE_IDLE_CONTROLLER = "deviceidle";
    field public static final String PERMISSION_SERVICE = "permission";
    field public static final String ROLLBACK_SERVICE = "rollback";
    field public static final String STATUS_BAR_SERVICE = "statusbar";
+1 −0
Original line number Diff line number Diff line
@@ -200,6 +200,7 @@ android.app.ContentProviderHolder
android.app.ContextImpl$1
android.app.ContextImpl$ApplicationContentResolver
android.app.ContextImpl
android.app.DeviceIdleFrameworkInitializer
android.app.DexLoadReporter
android.app.Dialog$ListenersHandler
android.app.Dialog
+1 −0
Original line number Diff line number Diff line
# JobSchedulerFrameworkInitializer must always be preloaded because it registers the job scheduler
# service wrapper to SystemServiceRegistry.
android.app.DeviceIdleFrameworkInitializer
android.app.job.JobSchedulerFrameworkInitializer
android.icu.impl.coll.CollationRoot
android.icu.impl.IDNA2003
+36 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2019 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.app;

import android.content.Context;
import android.os.DeviceIdleManager;
import android.os.IDeviceIdleController;

/**
 * This class needs to be pre-loaded by zygote.  This is where the device idle manager wrapper
 * is registered.
 *
 * @hide
 */
public class DeviceIdleFrameworkInitializer {
    static {
        SystemServiceRegistry.registerCachedService(
                Context.DEVICE_IDLE_CONTROLLER, DeviceIdleManager.class,
                (context, b) -> new DeviceIdleManager(
                        context.getOuterContext(), IDeviceIdleController.Stub.asInterface(b)));
    }
}
+19 −15
Original line number Diff line number Diff line
@@ -127,12 +127,10 @@ import android.os.BatteryManager;
import android.os.BatteryStats;
import android.os.BugreportManager;
import android.os.Build;
import android.os.DeviceIdleManager;
import android.os.DropBoxManager;
import android.os.HardwarePropertiesManager;
import android.os.IBatteryPropertiesRegistrar;
import android.os.IBinder;
import android.os.IDeviceIdleController;
import android.os.IDumpstate;
import android.os.IHardwarePropertiesManager;
import android.os.IPowerManager;
@@ -195,6 +193,7 @@ import com.android.internal.os.IDropBoxManagerService;
import com.android.internal.policy.PhoneLayoutInflater;

import java.util.Map;
import java.util.function.BiFunction;
import java.util.function.Function;

/**
@@ -1219,17 +1218,6 @@ public final class SystemServiceRegistry {
                    }
            });

        registerService(Context.DEVICE_IDLE_CONTROLLER, DeviceIdleManager.class,
                new CachedServiceFetcher<DeviceIdleManager>() {
                    @Override
                    public DeviceIdleManager createService(ContextImpl ctx)
                            throws ServiceNotFoundException {
                        IDeviceIdleController service = IDeviceIdleController.Stub.asInterface(
                                ServiceManager.getServiceOrThrow(
                                        Context.DEVICE_IDLE_CONTROLLER));
                        return new DeviceIdleManager(ctx.getOuterContext(), service);
                    }});

        registerService(Context.TIME_DETECTOR_SERVICE, TimeDetector.class,
                new CachedServiceFetcher<TimeDetector>() {
                    @Override
@@ -1330,9 +1318,9 @@ public final class SystemServiceRegistry {
     *
     * @hide
     */
    public static <T> void registerStaticService(String serviceName, Class<T> serviceClass,
    public static <T> void registerStaticService(String serviceName, Class<T> serviceWrapperClass,
            Function<IBinder, T> serviceFetcher) {
        registerService(serviceName, serviceClass,
        registerService(serviceName, serviceWrapperClass,
                new StaticServiceFetcher<T>() {
                    @Override
                    public T createService() throws ServiceNotFoundException {
@@ -1341,6 +1329,22 @@ public final class SystemServiceRegistry {
                    }});
    }

    /**
     * APEX modules will use it to register their service wrapper.
     *
     * @hide
     */
    public static <T> void registerCachedService(String serviceName, Class<T> serviceWrapperClass,
            BiFunction<ContextImpl, IBinder, T> serviceFetcher) {
        registerService(serviceName, serviceWrapperClass,
                new CachedServiceFetcher<T>() {
                    @Override
                    public T createService(ContextImpl ctx) throws ServiceNotFoundException {
                        IBinder b = ServiceManager.getServiceOrThrow(serviceName);
                        return serviceFetcher.apply(ctx, b);
                    }});
    }

    /**
     * Base interface for classes that fetch services.
     * These objects must only be created during static initialization.
Loading