Loading src/java/com/android/internal/telephony/NitzStateMachine.java +7 −22 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ package com.android.internal.telephony; import android.content.ContentResolver; import android.content.Context; import android.os.PowerManager; import android.os.SystemClock; import android.os.SystemProperties; import android.provider.Settings; import android.telephony.Rlog; Loading Loading @@ -99,20 +98,6 @@ public class NitzStateMachine { return ignoreNitz != null && ignoreNitz.equals("yes"); } /** * Returns the same value as {@link System#currentTimeMillis()}. */ public long currentTimeMillis() { return System.currentTimeMillis(); } /** * Returns the same value as {@link SystemClock#elapsedRealtime()}. */ public long elapsedRealtime() { return SystemClock.elapsedRealtime(); } public String getNetworkCountryIsoForPhone() { return mTelephonyManager.getNetworkCountryIsoForPhone(mPhone.getPhoneId()); } Loading Loading @@ -285,7 +270,7 @@ public class NitzStateMachine { // Use the time that came with the NITZ offset that we think is bogus: // we just interpret it as local time. long ctm = nitzData.getCurrentTimeInMillis(); long delayAdjustedCtm = ctm + (mDeviceState.elapsedRealtime() long delayAdjustedCtm = ctm + (mTimeServiceHelper.elapsedRealtime() - mLatestNitzSignal.mElapsedRealtime); long tzOffset = zone.getOffset(delayAdjustedCtm); if (DBG) { Loading Loading @@ -484,7 +469,7 @@ public class NitzStateMachine { mWakeLock.acquire(); // Validate the nitzTimeSignal to reject obviously bogus elapsedRealtime values. long elapsedRealtime = mDeviceState.elapsedRealtime(); long elapsedRealtime = mTimeServiceHelper.elapsedRealtime(); long millisSinceNitzReceived = elapsedRealtime - nitzSignal.mElapsedRealtime; if (millisSinceNitzReceived < 0 || millisSinceNitzReceived > Integer.MAX_VALUE) { if (DBG) { Loading @@ -498,7 +483,7 @@ public class NitzStateMachine { // Adjust the NITZ time by the delay since it was received to get the time now. long adjustedCurrentTimeMillis = nitzSignal.mValue.getCurrentTimeInMillis() + millisSinceNitzReceived; long gained = adjustedCurrentTimeMillis - mDeviceState.currentTimeMillis(); long gained = adjustedCurrentTimeMillis - mTimeServiceHelper.currentTimeMillis(); if (mTimeServiceHelper.isTimeDetectionEnabled()) { String logMsg = "handleTimeFromNitz:" Loading @@ -511,8 +496,8 @@ public class NitzStateMachine { logMsg += ": First update received."; setAndBroadcastNetworkSetTime(logMsg, adjustedCurrentTimeMillis); } else { long elapsedRealtimeSinceLastSaved = mDeviceState.elapsedRealtime() - mSavedNitzTime.mElapsedRealtime; long elapsedRealtimeSinceLastSaved = mTimeServiceHelper.elapsedRealtime() - mSavedNitzTime.mElapsedRealtime; int nitzUpdateSpacing = mDeviceState.getNitzUpdateSpacingMillis(); int nitzUpdateDiff = mDeviceState.getNitzUpdateDiffMillis(); if (elapsedRealtimeSinceLastSaved > nitzUpdateSpacing Loading Loading @@ -588,7 +573,7 @@ public class NitzStateMachine { // Acquire the wakelock as we're reading the elapsed realtime clock here. mWakeLock.acquire(); long elapsedRealtime = mDeviceState.elapsedRealtime(); long elapsedRealtime = mTimeServiceHelper.elapsedRealtime(); String msg = "mSavedNitzTime: Reverting to NITZ time" + " elapsedRealtime=" + elapsedRealtime + " mSavedNitzTime=" + mSavedNitzTime; Loading Loading @@ -660,7 +645,7 @@ public class NitzStateMachine { */ private void updateTimeZoneByNetworkCountryCode(String iso) { CountryResult lookupResult = mTimeZoneLookupHelper.lookupByCountry( iso, mDeviceState.currentTimeMillis()); iso, mTimeServiceHelper.currentTimeMillis()); if (lookupResult != null && lookupResult.allZonesHaveSameOffset) { String logMsg = "updateTimeZoneByNetworkCountryCode: set time" + " lookupResult=" + lookupResult Loading src/java/com/android/internal/telephony/TimeServiceHelper.java +14 −0 Original line number Diff line number Diff line Loading @@ -90,6 +90,20 @@ public class TimeServiceHelper { }); } /** * Returns the same value as {@link System#currentTimeMillis()}. */ public long currentTimeMillis() { return System.currentTimeMillis(); } /** * Returns the same value as {@link SystemClock#elapsedRealtime()}. */ public long elapsedRealtime() { return SystemClock.elapsedRealtime(); } /** * Returns true if the device has an explicit time zone set. */ Loading tests/telephonytests/src/com/android/internal/telephony/NitzStateMachineTest.java +11 −11 Original line number Diff line number Diff line Loading @@ -66,8 +66,8 @@ public class NitzStateMachineTest extends TelephonyTest { when(mDeviceState.getIgnoreNitz()).thenReturn(false); when(mDeviceState.getNitzUpdateDiffMillis()).thenReturn(2000); when(mDeviceState.getNitzUpdateSpacingMillis()).thenReturn(1000 * 60 * 10); when(mDeviceState.elapsedRealtime()).thenReturn(123456789L); when(mDeviceState.currentTimeMillis()).thenReturn(987654321L); when(mTimeServiceHelper.elapsedRealtime()).thenReturn(123456789L); when(mTimeServiceHelper.currentTimeMillis()).thenReturn(987654321L); mNitzStateMachine = new NitzStateMachine( mPhone, mTimeServiceHelper, mDeviceState, mTimeZoneLookupHelper); Loading @@ -82,8 +82,6 @@ public class NitzStateMachineTest extends TelephonyTest { verify(mDeviceState, atLeast(0)).getIgnoreNitz(); verify(mDeviceState, atLeast(0)).getNitzUpdateDiffMillis(); verify(mDeviceState, atLeast(0)).getNitzUpdateSpacingMillis(); verify(mDeviceState, atLeast(0)).elapsedRealtime(); verify(mDeviceState, atLeast(0)).currentTimeMillis(); verify(mDeviceState, atLeast(0)).getNetworkCountryIsoForPhone(); verifyNoMoreInteractions(mDeviceState); Loading @@ -94,6 +92,8 @@ public class NitzStateMachineTest extends TelephonyTest { verify(mTimeServiceHelper, atLeast(0)).isTimeDetectionEnabled(); verify(mTimeServiceHelper, atLeast(0)).isTimeZoneDetectionEnabled(); verify(mTimeServiceHelper, atLeast(0)).isTimeZoneSettingInitialized(); verify(mTimeServiceHelper, atLeast(0)).elapsedRealtime(); verify(mTimeServiceHelper, atLeast(0)).currentTimeMillis(); verifyNoMoreInteractions(mTimeServiceHelper); super.tearDown(); Loading Loading @@ -126,7 +126,7 @@ public class NitzStateMachineTest extends TelephonyTest { // Check resulting state and side effects. long expectedAdjustedCurrentTimeMillis = testNitzSignal.getAdjustedCurrentTimeMillis(mDeviceState.elapsedRealtime()); testNitzSignal.getAdjustedCurrentTimeMillis(mTimeServiceHelper.elapsedRealtime()); verifyTimeServiceTimeZoneWasSet(testLookupResult.zoneId); verifyTimeServiceTimeWasSet(expectedAdjustedCurrentTimeMillis); Loading Loading @@ -165,7 +165,7 @@ public class NitzStateMachineTest extends TelephonyTest { // Check resulting state and side effects. long expectedAdjustedCurrentTimeMillis = testNitzSignal.getAdjustedCurrentTimeMillis(mDeviceState.elapsedRealtime()); testNitzSignal.getAdjustedCurrentTimeMillis(mTimeServiceHelper.elapsedRealtime()); verifyTimeServiceTimeZoneWasNotSet(); verifyTimeServiceTimeWasSet(expectedAdjustedCurrentTimeMillis); Loading Loading @@ -312,10 +312,10 @@ public class NitzStateMachineTest extends TelephonyTest { } private void incrementSimulatedDeviceClock(int incMillis) { long currentElapsedRealtime = mDeviceState.elapsedRealtime(); when(mDeviceState.elapsedRealtime()).thenReturn(currentElapsedRealtime + incMillis); long currentTimeMillis = mDeviceState.currentTimeMillis(); when(mDeviceState.elapsedRealtime()).thenReturn(currentTimeMillis + incMillis); long currentElapsedRealtime = mTimeServiceHelper.elapsedRealtime(); when(mTimeServiceHelper.elapsedRealtime()).thenReturn(currentElapsedRealtime + incMillis); long currentTimeMillis = mTimeServiceHelper.currentTimeMillis(); when(mTimeServiceHelper.elapsedRealtime()).thenReturn(currentTimeMillis + incMillis); } private static long createTime(TimeZone timeZone, int year, int monthOfYear, int dayOfMonth, Loading @@ -331,7 +331,7 @@ public class NitzStateMachineTest extends TelephonyTest { * receivedRealtimeMillis from the current {@code mDeviceState.elapsedRealtime()}. */ private TestNitzSignal createTestNitzSignal() { long receivedRealtimeMillis = mDeviceState.elapsedRealtime(); long receivedRealtimeMillis = mTimeServiceHelper.elapsedRealtime(); // Create an arbitrary time. long timeMillis = createTime(TimeZone.getTimeZone("UTC"), 2017, 1, 2, 12, 45, 25); // Create arbitrary NITZ data. Loading Loading
src/java/com/android/internal/telephony/NitzStateMachine.java +7 −22 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ package com.android.internal.telephony; import android.content.ContentResolver; import android.content.Context; import android.os.PowerManager; import android.os.SystemClock; import android.os.SystemProperties; import android.provider.Settings; import android.telephony.Rlog; Loading Loading @@ -99,20 +98,6 @@ public class NitzStateMachine { return ignoreNitz != null && ignoreNitz.equals("yes"); } /** * Returns the same value as {@link System#currentTimeMillis()}. */ public long currentTimeMillis() { return System.currentTimeMillis(); } /** * Returns the same value as {@link SystemClock#elapsedRealtime()}. */ public long elapsedRealtime() { return SystemClock.elapsedRealtime(); } public String getNetworkCountryIsoForPhone() { return mTelephonyManager.getNetworkCountryIsoForPhone(mPhone.getPhoneId()); } Loading Loading @@ -285,7 +270,7 @@ public class NitzStateMachine { // Use the time that came with the NITZ offset that we think is bogus: // we just interpret it as local time. long ctm = nitzData.getCurrentTimeInMillis(); long delayAdjustedCtm = ctm + (mDeviceState.elapsedRealtime() long delayAdjustedCtm = ctm + (mTimeServiceHelper.elapsedRealtime() - mLatestNitzSignal.mElapsedRealtime); long tzOffset = zone.getOffset(delayAdjustedCtm); if (DBG) { Loading Loading @@ -484,7 +469,7 @@ public class NitzStateMachine { mWakeLock.acquire(); // Validate the nitzTimeSignal to reject obviously bogus elapsedRealtime values. long elapsedRealtime = mDeviceState.elapsedRealtime(); long elapsedRealtime = mTimeServiceHelper.elapsedRealtime(); long millisSinceNitzReceived = elapsedRealtime - nitzSignal.mElapsedRealtime; if (millisSinceNitzReceived < 0 || millisSinceNitzReceived > Integer.MAX_VALUE) { if (DBG) { Loading @@ -498,7 +483,7 @@ public class NitzStateMachine { // Adjust the NITZ time by the delay since it was received to get the time now. long adjustedCurrentTimeMillis = nitzSignal.mValue.getCurrentTimeInMillis() + millisSinceNitzReceived; long gained = adjustedCurrentTimeMillis - mDeviceState.currentTimeMillis(); long gained = adjustedCurrentTimeMillis - mTimeServiceHelper.currentTimeMillis(); if (mTimeServiceHelper.isTimeDetectionEnabled()) { String logMsg = "handleTimeFromNitz:" Loading @@ -511,8 +496,8 @@ public class NitzStateMachine { logMsg += ": First update received."; setAndBroadcastNetworkSetTime(logMsg, adjustedCurrentTimeMillis); } else { long elapsedRealtimeSinceLastSaved = mDeviceState.elapsedRealtime() - mSavedNitzTime.mElapsedRealtime; long elapsedRealtimeSinceLastSaved = mTimeServiceHelper.elapsedRealtime() - mSavedNitzTime.mElapsedRealtime; int nitzUpdateSpacing = mDeviceState.getNitzUpdateSpacingMillis(); int nitzUpdateDiff = mDeviceState.getNitzUpdateDiffMillis(); if (elapsedRealtimeSinceLastSaved > nitzUpdateSpacing Loading Loading @@ -588,7 +573,7 @@ public class NitzStateMachine { // Acquire the wakelock as we're reading the elapsed realtime clock here. mWakeLock.acquire(); long elapsedRealtime = mDeviceState.elapsedRealtime(); long elapsedRealtime = mTimeServiceHelper.elapsedRealtime(); String msg = "mSavedNitzTime: Reverting to NITZ time" + " elapsedRealtime=" + elapsedRealtime + " mSavedNitzTime=" + mSavedNitzTime; Loading Loading @@ -660,7 +645,7 @@ public class NitzStateMachine { */ private void updateTimeZoneByNetworkCountryCode(String iso) { CountryResult lookupResult = mTimeZoneLookupHelper.lookupByCountry( iso, mDeviceState.currentTimeMillis()); iso, mTimeServiceHelper.currentTimeMillis()); if (lookupResult != null && lookupResult.allZonesHaveSameOffset) { String logMsg = "updateTimeZoneByNetworkCountryCode: set time" + " lookupResult=" + lookupResult Loading
src/java/com/android/internal/telephony/TimeServiceHelper.java +14 −0 Original line number Diff line number Diff line Loading @@ -90,6 +90,20 @@ public class TimeServiceHelper { }); } /** * Returns the same value as {@link System#currentTimeMillis()}. */ public long currentTimeMillis() { return System.currentTimeMillis(); } /** * Returns the same value as {@link SystemClock#elapsedRealtime()}. */ public long elapsedRealtime() { return SystemClock.elapsedRealtime(); } /** * Returns true if the device has an explicit time zone set. */ Loading
tests/telephonytests/src/com/android/internal/telephony/NitzStateMachineTest.java +11 −11 Original line number Diff line number Diff line Loading @@ -66,8 +66,8 @@ public class NitzStateMachineTest extends TelephonyTest { when(mDeviceState.getIgnoreNitz()).thenReturn(false); when(mDeviceState.getNitzUpdateDiffMillis()).thenReturn(2000); when(mDeviceState.getNitzUpdateSpacingMillis()).thenReturn(1000 * 60 * 10); when(mDeviceState.elapsedRealtime()).thenReturn(123456789L); when(mDeviceState.currentTimeMillis()).thenReturn(987654321L); when(mTimeServiceHelper.elapsedRealtime()).thenReturn(123456789L); when(mTimeServiceHelper.currentTimeMillis()).thenReturn(987654321L); mNitzStateMachine = new NitzStateMachine( mPhone, mTimeServiceHelper, mDeviceState, mTimeZoneLookupHelper); Loading @@ -82,8 +82,6 @@ public class NitzStateMachineTest extends TelephonyTest { verify(mDeviceState, atLeast(0)).getIgnoreNitz(); verify(mDeviceState, atLeast(0)).getNitzUpdateDiffMillis(); verify(mDeviceState, atLeast(0)).getNitzUpdateSpacingMillis(); verify(mDeviceState, atLeast(0)).elapsedRealtime(); verify(mDeviceState, atLeast(0)).currentTimeMillis(); verify(mDeviceState, atLeast(0)).getNetworkCountryIsoForPhone(); verifyNoMoreInteractions(mDeviceState); Loading @@ -94,6 +92,8 @@ public class NitzStateMachineTest extends TelephonyTest { verify(mTimeServiceHelper, atLeast(0)).isTimeDetectionEnabled(); verify(mTimeServiceHelper, atLeast(0)).isTimeZoneDetectionEnabled(); verify(mTimeServiceHelper, atLeast(0)).isTimeZoneSettingInitialized(); verify(mTimeServiceHelper, atLeast(0)).elapsedRealtime(); verify(mTimeServiceHelper, atLeast(0)).currentTimeMillis(); verifyNoMoreInteractions(mTimeServiceHelper); super.tearDown(); Loading Loading @@ -126,7 +126,7 @@ public class NitzStateMachineTest extends TelephonyTest { // Check resulting state and side effects. long expectedAdjustedCurrentTimeMillis = testNitzSignal.getAdjustedCurrentTimeMillis(mDeviceState.elapsedRealtime()); testNitzSignal.getAdjustedCurrentTimeMillis(mTimeServiceHelper.elapsedRealtime()); verifyTimeServiceTimeZoneWasSet(testLookupResult.zoneId); verifyTimeServiceTimeWasSet(expectedAdjustedCurrentTimeMillis); Loading Loading @@ -165,7 +165,7 @@ public class NitzStateMachineTest extends TelephonyTest { // Check resulting state and side effects. long expectedAdjustedCurrentTimeMillis = testNitzSignal.getAdjustedCurrentTimeMillis(mDeviceState.elapsedRealtime()); testNitzSignal.getAdjustedCurrentTimeMillis(mTimeServiceHelper.elapsedRealtime()); verifyTimeServiceTimeZoneWasNotSet(); verifyTimeServiceTimeWasSet(expectedAdjustedCurrentTimeMillis); Loading Loading @@ -312,10 +312,10 @@ public class NitzStateMachineTest extends TelephonyTest { } private void incrementSimulatedDeviceClock(int incMillis) { long currentElapsedRealtime = mDeviceState.elapsedRealtime(); when(mDeviceState.elapsedRealtime()).thenReturn(currentElapsedRealtime + incMillis); long currentTimeMillis = mDeviceState.currentTimeMillis(); when(mDeviceState.elapsedRealtime()).thenReturn(currentTimeMillis + incMillis); long currentElapsedRealtime = mTimeServiceHelper.elapsedRealtime(); when(mTimeServiceHelper.elapsedRealtime()).thenReturn(currentElapsedRealtime + incMillis); long currentTimeMillis = mTimeServiceHelper.currentTimeMillis(); when(mTimeServiceHelper.elapsedRealtime()).thenReturn(currentTimeMillis + incMillis); } private static long createTime(TimeZone timeZone, int year, int monthOfYear, int dayOfMonth, Loading @@ -331,7 +331,7 @@ public class NitzStateMachineTest extends TelephonyTest { * receivedRealtimeMillis from the current {@code mDeviceState.elapsedRealtime()}. */ private TestNitzSignal createTestNitzSignal() { long receivedRealtimeMillis = mDeviceState.elapsedRealtime(); long receivedRealtimeMillis = mTimeServiceHelper.elapsedRealtime(); // Create an arbitrary time. long timeMillis = createTime(TimeZone.getTimeZone("UTC"), 2017, 1, 2, 12, 45, 25); // Create arbitrary NITZ data. Loading