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

Commit feeee682 authored by Neil Fuller's avatar Neil Fuller
Browse files

Minimum viable TimeDetectorService

This is a do-nothing DeviceContextualizerService that can be
populated in following commits. A temporary method has been
added so the service has one method.

Unit tests can be run with:

atest FrameworksServicesTests:TimeDetectorServiceTest

Test: build / boot
Test: See above
Change-Id: I9e4eac70b944441f34491315cd1ce7fa2b9ae150
parent ca46c6be
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -100,6 +100,7 @@ java_library {
        "core/java/android/app/backup/ISelectBackupTransportCallback.aidl",
        "core/java/android/app/backup/ISelectBackupTransportCallback.aidl",
        "core/java/android/app/slice/ISliceManager.aidl",
        "core/java/android/app/slice/ISliceManager.aidl",
        "core/java/android/app/slice/ISliceListener.aidl",
        "core/java/android/app/slice/ISliceListener.aidl",
        "core/java/android/app/timedetector/ITimeDetectorService.aidl",
        "core/java/android/app/timezone/ICallback.aidl",
        "core/java/android/app/timezone/ICallback.aidl",
        "core/java/android/app/timezone/IRulesManager.aidl",
        "core/java/android/app/timezone/IRulesManager.aidl",
        "core/java/android/app/usage/ICacheQuotaService.aidl",
        "core/java/android/app/usage/ICacheQuotaService.aidl",
+9 −0
Original line number Original line Diff line number Diff line
@@ -24,6 +24,7 @@ import android.app.admin.IDevicePolicyManager;
import android.app.job.IJobScheduler;
import android.app.job.IJobScheduler;
import android.app.job.JobScheduler;
import android.app.job.JobScheduler;
import android.app.slice.SliceManager;
import android.app.slice.SliceManager;
import android.app.timedetector.TimeDetector;
import android.app.timezone.RulesManager;
import android.app.timezone.RulesManager;
import android.app.trust.TrustManager;
import android.app.trust.TrustManager;
import android.app.usage.IStorageStatsManager;
import android.app.usage.IStorageStatsManager;
@@ -997,6 +998,14 @@ final class SystemServiceRegistry {
                                        Context.DEVICE_IDLE_CONTROLLER));
                                        Context.DEVICE_IDLE_CONTROLLER));
                        return new DeviceIdleManager(ctx.getOuterContext(), service);
                        return new DeviceIdleManager(ctx.getOuterContext(), service);
                    }});
                    }});

        registerService(Context.TIME_DETECTOR_SERVICE, TimeDetector.class,
                new CachedServiceFetcher<TimeDetector>() {
                    @Override
                    public TimeDetector createService(ContextImpl ctx)
                            throws ServiceNotFoundException {
                        return new TimeDetector();
                    }});
    }
    }


    /**
    /**
+34 −0
Original line number Original line Diff line number Diff line
/*
 * Copyright (C) 2018 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.timedetector;

/**
 * System private API to comunicate with time detector service.
 *
 * <p>Used by parts of the Android system with signals associated with the device's time to provide
 * information to the Time Detector Service.
 *
 * <p>Use the {@link android.app.timedetector.TimeDetector} class rather than going through
 * this Binder interface directly. See {@link android.app.timedetector.TimeDetectorService} for
 * more complete documentation.
 *
 *
 * {@hide}
 */
interface ITimeDetectorService {
  void stubbedCall();
}
+57 −0
Original line number Original line Diff line number Diff line
/*
 * Copyright (C) 2018 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.timedetector;

import android.annotation.SystemService;
import android.content.Context;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.ServiceManager.ServiceNotFoundException;
import android.util.Log;

/**
 * The interface through which system components can send signals to the TimeDetectorService.
 * @hide
 */
@SystemService(Context.TIME_DETECTOR_SERVICE)
public final class TimeDetector {
    private static final String TAG = "timedetector.TimeDetector";
    private static final boolean DEBUG = false;

    private final ITimeDetectorService mITimeDetectorService;

    public TimeDetector() throws ServiceNotFoundException {
        mITimeDetectorService = ITimeDetectorService.Stub.asInterface(
                ServiceManager.getServiceOrThrow(Context.TIME_DETECTOR_SERVICE));
    }

    /**
     * Does nothing.
     * TODO: Remove this when the service implementation is built out.
     */
    public void stubbedCall() {
        if (DEBUG) {
            Log.d(TAG, "stubbedCall called");
        }
        try {
            mITimeDetectorService.stubbedCall();
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }

}
+10 −0
Original line number Original line Diff line number Diff line
@@ -3059,6 +3059,7 @@ public abstract class Context {
            COMPANION_DEVICE_SERVICE,
            COMPANION_DEVICE_SERVICE,
            CROSS_PROFILE_APPS_SERVICE,
            CROSS_PROFILE_APPS_SERVICE,
            //@hide: SYSTEM_UPDATE_SERVICE,
            //@hide: SYSTEM_UPDATE_SERVICE,
            //@hide: TIME_DETECTOR_SERVICE,
    })
    })
    @Retention(RetentionPolicy.SOURCE)
    @Retention(RetentionPolicy.SOURCE)
    public @interface ServiceName {}
    public @interface ServiceName {}
@@ -4210,6 +4211,15 @@ public abstract class Context {
    @SystemApi
    @SystemApi
    public static final String SECURE_ELEMENT_SERVICE = "secure_element";
    public static final String SECURE_ELEMENT_SERVICE = "secure_element";


    /**
     * Use with {@link #getSystemService(String)} to retrieve an
     * {@link android.app.timedetector.ITimeDetectorService}.
     * @hide
     *
     * @see #getSystemService(String)
     */
    public static final String TIME_DETECTOR_SERVICE = "time_detector";

    /**
    /**
     * Determine whether the given permission is allowed for a particular
     * Determine whether the given permission is allowed for a particular
     * process and user ID running in the system.
     * process and user ID running in the system.
Loading