Merge "Allow injecting cached NTP time without network" into tm-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
f840778b7d
@@ -73,7 +73,6 @@ class NtpTimeHelper {
|
|||||||
private final WakeLock mWakeLock;
|
private final WakeLock mWakeLock;
|
||||||
private final Handler mHandler;
|
private final Handler mHandler;
|
||||||
|
|
||||||
@GuardedBy("this")
|
|
||||||
private final InjectNtpTimeCallback mCallback;
|
private final InjectNtpTimeCallback mCallback;
|
||||||
|
|
||||||
// flags to trigger NTP when network becomes available
|
// flags to trigger NTP when network becomes available
|
||||||
@@ -129,6 +128,8 @@ class NtpTimeHelper {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!isNetworkConnected()) {
|
if (!isNetworkConnected()) {
|
||||||
|
// try to inject the cached NTP time
|
||||||
|
injectCachedNtpTime();
|
||||||
// try again when network is up
|
// try again when network is up
|
||||||
mInjectNtpTimeState = STATE_PENDING_NETWORK;
|
mInjectNtpTimeState = STATE_PENDING_NETWORK;
|
||||||
return;
|
return;
|
||||||
@@ -157,23 +158,7 @@ class NtpTimeHelper {
|
|||||||
|
|
||||||
// only update when NTP time is fresh
|
// only update when NTP time is fresh
|
||||||
// If refreshSuccess is false, cacheAge does not drop down.
|
// If refreshSuccess is false, cacheAge does not drop down.
|
||||||
ntpResult = mNtpTime.getCachedTimeResult();
|
if (injectCachedNtpTime()) {
|
||||||
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));
|
|
||||||
|
|
||||||
delay = NTP_INTERVAL;
|
delay = NTP_INTERVAL;
|
||||||
mNtpBackOff.reset();
|
mNtpBackOff.reset();
|
||||||
} else {
|
} else {
|
||||||
@@ -201,4 +186,26 @@ class NtpTimeHelper {
|
|||||||
// release wake lock held by task
|
// release wake lock held by task
|
||||||
mWakeLock.release();
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user