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

Commit 553e8c03 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Initialize mCallback in constructor and make it final." am: 2c4a4135

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1508496

Change-Id: I9cf01ebdba76732b0725c2ac45d36295f5a98f1a
parents 31f0ae67 2c4a4135
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -64,9 +64,8 @@ public final class TimeDetectorService extends ITimeDetectorService.Stub {
    @NonNull private final TimeDetectorStrategy mTimeDetectorStrategy;

    private static TimeDetectorService create(@NonNull Context context) {
        TimeDetectorStrategy timeDetectorStrategy = new TimeDetectorStrategyImpl();
        TimeDetectorStrategyCallbackImpl callback = new TimeDetectorStrategyCallbackImpl(context);
        timeDetectorStrategy.initialize(callback);
        TimeDetectorStrategyImpl.Callback callback = new TimeDetectorStrategyCallbackImpl(context);
        TimeDetectorStrategy timeDetectorStrategy = new TimeDetectorStrategyImpl(callback);

        Handler handler = FgThread.getHandler();
        TimeDetectorService timeDetectorService =
+0 −40
Original line number Diff line number Diff line
@@ -37,46 +37,6 @@ import java.io.PrintWriter;
 */
public interface TimeDetectorStrategy {

    /**
     * The interface used by the strategy to interact with the surrounding service.
     *
     * <p>Note: Because the system properties-derived value {@link #isAutoTimeDetectionEnabled()}
     * can be modified independently and from different threads (and processes!). its use is prone
     * to race conditions. That will be true until the responsibility for setting their values is
     * moved to {@link TimeDetectorStrategy}. There are similar issues with
     * {@link #systemClockMillis()} while any process can modify the system clock.
     */
    interface Callback {

        /**
         * The absolute threshold below which the system clock need not be updated. i.e. if setting
         * the system clock would adjust it by less than this (either backwards or forwards) then it
         * need not be set.
         */
        int systemClockUpdateThresholdMillis();

        /** Returns true if automatic time detection is enabled. */
        boolean isAutoTimeDetectionEnabled();

        /** Acquire a suitable wake lock. Must be followed by {@link #releaseWakeLock()} */
        void acquireWakeLock();

        /** Returns the elapsedRealtimeMillis clock value. */
        long elapsedRealtimeMillis();

        /** Returns the system clock value. */
        long systemClockMillis();

        /** Sets the device system clock. The WakeLock must be held. */
        void setSystemClock(long newTimeMillis);

        /** Release the wake lock acquired by a call to {@link #acquireWakeLock()}. */
        void releaseWakeLock();
    }

    /** Initialize the strategy. */
    void initialize(@NonNull Callback callback);

    /** Process the suggested time from telephony sources. */
    void suggestTelephonyTime(@NonNull TelephonyTimeSuggestion timeSuggestion);

+2 −2
Original line number Diff line number Diff line
@@ -29,9 +29,9 @@ import android.util.Slog;
import java.util.Objects;

/**
 * The real implementation of {@link TimeDetectorStrategy.Callback} used on device.
 * The real implementation of {@link TimeDetectorStrategyImpl.Callback} used on device.
 */
public final class TimeDetectorStrategyCallbackImpl implements TimeDetectorStrategy.Callback {
public final class TimeDetectorStrategyCallbackImpl implements TimeDetectorStrategyImpl.Callback {

    private final static String TAG = "timedetector.TimeDetectorStrategyCallbackImpl";

+40 −4
Original line number Diff line number Diff line
@@ -99,8 +99,8 @@ public final class TimeDetectorStrategyImpl implements TimeDetectorStrategy {
    @NonNull
    private final LocalLog mTimeChangesLog = new LocalLog(30, false /* useLocalTimestamps */);

    // @NonNull after initialize()
    private Callback mCallback;
    @NonNull
    private final Callback mCallback;

    // Used to store the last time the system clock state was set automatically. It is used to
    // detect (and log) issues with the realtime clock or whether the clock is being set without
@@ -122,8 +122,44 @@ public final class TimeDetectorStrategyImpl implements TimeDetectorStrategy {
    private final ReferenceWithHistory<NetworkTimeSuggestion> mLastNetworkSuggestion =
            new ReferenceWithHistory<>(KEEP_SUGGESTION_HISTORY_SIZE);

    @Override
    public void initialize(@NonNull Callback callback) {
    /**
     * The interface used by the strategy to interact with the surrounding service.
     *
     * <p>Note: Because the system properties-derived value {@link #isAutoTimeDetectionEnabled()}
     * can be modified independently and from different threads (and processes!), its use is prone
     * to race conditions. That will be true until the responsibility for setting their values is
     * moved to {@link TimeDetectorStrategy}. There are similar issues with
     * {@link #systemClockMillis()} while any process can modify the system clock.
     */
    public interface Callback {

        /**
         * The absolute threshold below which the system clock need not be updated. i.e. if setting
         * the system clock would adjust it by less than this (either backwards or forwards) then it
         * need not be set.
         */
        int systemClockUpdateThresholdMillis();

        /** Returns true if automatic time detection is enabled. */
        boolean isAutoTimeDetectionEnabled();

        /** Acquire a suitable wake lock. Must be followed by {@link #releaseWakeLock()} */
        void acquireWakeLock();

        /** Returns the elapsedRealtimeMillis clock value. */
        long elapsedRealtimeMillis();

        /** Returns the system clock value. */
        long systemClockMillis();

        /** Sets the device system clock. The WakeLock must be held. */
        void setSystemClock(long newTimeMillis);

        /** Release the wake lock acquired by a call to {@link #acquireWakeLock()}. */
        void releaseWakeLock();
    }

    TimeDetectorStrategyImpl(@NonNull Callback callback) {
        mCallback = callback;
    }

+0 −4
Original line number Diff line number Diff line
@@ -226,10 +226,6 @@ public class TimeDetectorServiceTest {
        private boolean mHandleAutoTimeDetectionChangedCalled;
        private boolean mDumpCalled;

        @Override
        public void initialize(Callback ignored) {
        }

        @Override
        public void suggestTelephonyTime(TelephonyTimeSuggestion timeSuggestion) {
            mLastTelephonySuggestion = timeSuggestion;
Loading