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

Commit 7ca65a0b authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Allow injecting cached NTP time without network" into tm-dev am:...

Merge "Allow injecting cached NTP time without network" into tm-dev am: f840778b am: 7c02611c am: ad250c42

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



Change-Id: Idf963df00988a234b7417caaa4e5abf2eea7a68b
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents cf6158a3 ad250c42
Loading
Loading
Loading
Loading
+25 −18
Original line number Diff line number Diff line
@@ -73,7 +73,6 @@ class NtpTimeHelper {
    private final WakeLock mWakeLock;
    private final Handler mHandler;

    @GuardedBy("this")
    private final InjectNtpTimeCallback mCallback;

    // flags to trigger NTP when network becomes available
@@ -129,6 +128,8 @@ class NtpTimeHelper {
            return;
        }
        if (!isNetworkConnected()) {
            // try to inject the cached NTP time
            injectCachedNtpTime();
            // try again when network is up
            mInjectNtpTimeState = STATE_PENDING_NETWORK;
            return;
@@ -157,23 +158,7 @@ class NtpTimeHelper {

            // only update when NTP time is fresh
            // If refreshSuccess is false, cacheAge does not drop down.
            ntpResult = mNtpTime.getCachedTimeResult();
            if (ntpResult != null && ntpResult.getAgeMillis() < NTP_INTERVAL) {
                long time = ntpResult.getTimeMillis();
                long timeReference = ntpResult.getElapsedRealtimeMillis();
                long certainty = ntpResult.getCertaintyMillis();

                if (DEBUG) {
                    long now = System.currentTimeMillis();
                    Log.d(TAG, "NTP server returned: "
                            + time + " (" + new Date(time) + ")"
                            + " ntpResult: " + ntpResult
                            + " system time offset: " + (time - now));
                }

                // Ok to cast to int, as can't rollover in practice
                mHandler.post(() -> mCallback.injectTime(time, timeReference, (int) certainty));

            if (injectCachedNtpTime()) {
                delay = NTP_INTERVAL;
                mNtpBackOff.reset();
            } else {
@@ -201,4 +186,26 @@ class NtpTimeHelper {
        // release wake lock held by task
        mWakeLock.release();
    }

    /** Returns true if successfully inject cached NTP time. */
    private synchronized boolean injectCachedNtpTime() {
        NtpTrustedTime.TimeResult ntpResult = mNtpTime.getCachedTimeResult();
        if (ntpResult == null || ntpResult.getAgeMillis() >= NTP_INTERVAL) {
            return false;
        }

        long time = ntpResult.getTimeMillis();
        long timeReference = ntpResult.getElapsedRealtimeMillis();
        long certainty = ntpResult.getCertaintyMillis();

        if (DEBUG) {
            long now = System.currentTimeMillis();
            Log.d(TAG, "NTP server returned: " + time + " (" + new Date(time) + ")"
                    + " ntpResult: " + ntpResult + " system time offset: " + (time - now));
        }

        // Ok to cast to int, as can't rollover in practice
        mHandler.post(() -> mCallback.injectTime(time, timeReference, (int) certainty));
        return true;
    }
}