Loading services/core/java/com/android/server/timedetector/TimeDetectorService.java +2 −3 Original line number Diff line number Diff line Loading @@ -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 = Loading services/core/java/com/android/server/timedetector/TimeDetectorStrategy.java +0 −40 Original line number Diff line number Diff line Loading @@ -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); Loading services/core/java/com/android/server/timedetector/TimeDetectorStrategyCallbackImpl.java +2 −2 Original line number Diff line number Diff line Loading @@ -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"; Loading services/core/java/com/android/server/timedetector/TimeDetectorStrategyImpl.java +40 −4 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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; } Loading services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorServiceTest.java +0 −4 Original line number Diff line number Diff line Loading @@ -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 Loading
services/core/java/com/android/server/timedetector/TimeDetectorService.java +2 −3 Original line number Diff line number Diff line Loading @@ -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 = Loading
services/core/java/com/android/server/timedetector/TimeDetectorStrategy.java +0 −40 Original line number Diff line number Diff line Loading @@ -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); Loading
services/core/java/com/android/server/timedetector/TimeDetectorStrategyCallbackImpl.java +2 −2 Original line number Diff line number Diff line Loading @@ -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"; Loading
services/core/java/com/android/server/timedetector/TimeDetectorStrategyImpl.java +40 −4 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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; } Loading
services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorServiceTest.java +0 −4 Original line number Diff line number Diff line Loading @@ -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