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

Commit 7cecf024 authored by Neil Fuller's avatar Neil Fuller
Browse files

TimeServiceHelper changes to assist in next steps

For upcoming changes it makes more sense for the time-related
state to be accessible from TimeServiceHelper rather than
NitzStateMachine.DeviceState so these have moved.

Bug: 63743683
Test: atest FrameworksTelephonyTests
Change-Id: I9580140f730f3bce203069df7db9b390de799af3
parent 9c27d9c7
Loading
Loading
Loading
Loading
+7 −22
Original line number Diff line number Diff line
@@ -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;
@@ -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());
        }
@@ -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) {
@@ -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) {
@@ -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:"
@@ -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
@@ -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;
@@ -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
+14 −0
Original line number Diff line number Diff line
@@ -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.
     */
+11 −11
Original line number Diff line number Diff line
@@ -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);
@@ -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);

@@ -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();
@@ -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);
@@ -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);
@@ -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,
@@ -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.