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

Commit 9547972b authored by Neil Fuller's avatar Neil Fuller Committed by android-build-merger
Browse files

Merge "Switch telephony to android.util.TimestampedValue" am: 0c279d60

am: 1727feb7

Change-Id: I7a17af7586c55cafd22fc86188a506b83f159ba9
parents 8cf995e8 1727feb7
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -21,8 +21,8 @@ import android.content.Context;
import android.os.SystemProperties;
import android.provider.Settings;
import android.telephony.TelephonyManager;
import android.util.TimestampedValue;

import com.android.internal.telephony.util.TimeStampedValue;
import com.android.internal.util.IndentingPrintWriter;

import java.io.FileDescriptor;
@@ -55,7 +55,7 @@ public interface NitzStateMachine {
    /**
     * Handle a new NITZ signal being received.
     */
    void handleNitzReceived(TimeStampedValue<NitzData> nitzSignal);
    void handleNitzReceived(TimestampedValue<NitzData> nitzSignal);

    /**
     * Dumps the current in-memory state to the supplied PrintWriter.
+20 −19
Original line number Diff line number Diff line
@@ -21,12 +21,12 @@ import android.os.PowerManager;
import android.telephony.Rlog;
import android.text.TextUtils;
import android.util.LocalLog;
import android.util.TimestampedValue;

import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.TimeZoneLookupHelper.CountryResult;
import com.android.internal.telephony.TimeZoneLookupHelper.OffsetResult;
import com.android.internal.telephony.metrics.TelephonyMetrics;
import com.android.internal.telephony.util.TimeStampedValue;
import com.android.internal.util.IndentingPrintWriter;

import java.io.FileDescriptor;
@@ -47,12 +47,12 @@ public final class OldNitzStateMachine implements NitzStateMachine {
     * not have been used to set the device time, but it can be used if auto time detection is
     * re-enabled.
     */
    private TimeStampedValue<Long> mSavedNitzTime;
    private TimestampedValue<Long> mSavedNitzTime;

    // Time Zone detection state.

    /** We always keep the last NITZ signal received in mLatestNitzSignal. */
    private TimeStampedValue<NitzData> mLatestNitzSignal;
    private TimestampedValue<NitzData> mLatestNitzSignal;

    /**
     * Records whether the device should have a country code available via
@@ -145,7 +145,7 @@ public final class OldNitzStateMachine implements NitzStateMachine {

    private void updateTimeZoneFromCountryAndNitz() {
        String isoCountryCode = mDeviceState.getNetworkCountryIsoForPhone();
        TimeStampedValue<NitzData> nitzSignal = mLatestNitzSignal;
        TimestampedValue<NitzData> nitzSignal = mLatestNitzSignal;

        // TimeZone.getDefault() returns a default zone (GMT) even when time zone have never
        // been set which makes it difficult to tell if it's what the user / time zone detection
@@ -162,7 +162,7 @@ public final class OldNitzStateMachine implements NitzStateMachine {
        }

        try {
            NitzData nitzData = nitzSignal.mValue;
            NitzData nitzData = nitzSignal.getValue();

            String zoneId;
            if (nitzData.getEmulatorHostTimeZone() != null) {
@@ -260,23 +260,23 @@ public final class OldNitzStateMachine implements NitzStateMachine {
     * Returns true if the NITZ signal is definitely bogus, assuming that the country is correct.
     */
    private boolean isNitzSignalOffsetInfoBogus(
            TimeStampedValue<NitzData> nitzSignal, String isoCountryCode) {
            TimestampedValue<NitzData> nitzSignal, String isoCountryCode) {

        if (TextUtils.isEmpty(isoCountryCode)) {
            // We cannot say for sure.
            return false;
        }

        NitzData newNitzData = nitzSignal.mValue;
        NitzData newNitzData = nitzSignal.getValue();
        boolean zeroOffsetNitz = newNitzData.getLocalOffsetMillis() == 0 && !newNitzData.isDst();
        return zeroOffsetNitz && !countryUsesUtc(isoCountryCode, nitzSignal);
    }

    private boolean countryUsesUtc(
            String isoCountryCode, TimeStampedValue<NitzData> nitzSignal) {
            String isoCountryCode, TimestampedValue<NitzData> nitzSignal) {
        return mTimeZoneLookupHelper.countryUsesUtc(
                isoCountryCode,
                nitzSignal.mValue.getCurrentTimeInMillis());
                nitzSignal.getValue().getCurrentTimeInMillis());
    }

    @Override
@@ -300,7 +300,7 @@ public final class OldNitzStateMachine implements NitzStateMachine {
    }

    @Override
    public void handleNitzReceived(TimeStampedValue<NitzData> nitzSignal) {
    public void handleNitzReceived(TimestampedValue<NitzData> nitzSignal) {
        // Always store the latest NITZ signal received.
        mLatestNitzSignal = nitzSignal;

@@ -309,7 +309,7 @@ public final class OldNitzStateMachine implements NitzStateMachine {
    }

    private void updateTimeFromNitz() {
        TimeStampedValue<NitzData> nitzSignal = mLatestNitzSignal;
        TimestampedValue<NitzData> nitzSignal = mLatestNitzSignal;
        try {
            boolean ignoreNitz = mDeviceState.getIgnoreNitz();
            if (ignoreNitz) {
@@ -327,7 +327,8 @@ public final class OldNitzStateMachine implements NitzStateMachine {

                // Validate the nitzTimeSignal to reject obviously bogus elapsedRealtime values.
                long elapsedRealtime = mTimeServiceHelper.elapsedRealtime();
                long millisSinceNitzReceived = elapsedRealtime - nitzSignal.mElapsedRealtime;
                long millisSinceNitzReceived =
                        elapsedRealtime - nitzSignal.getReferenceTimeMillis();
                if (millisSinceNitzReceived < 0 || millisSinceNitzReceived > Integer.MAX_VALUE) {
                    if (DBG) {
                        Rlog.d(LOG_TAG, "updateTimeFromNitz: not setting time, unexpected"
@@ -339,7 +340,7 @@ public final class OldNitzStateMachine implements NitzStateMachine {

                // Adjust the NITZ time by the delay since it was received to get the time now.
                long adjustedCurrentTimeMillis =
                        nitzSignal.mValue.getCurrentTimeInMillis() + millisSinceNitzReceived;
                        nitzSignal.getValue().getCurrentTimeInMillis() + millisSinceNitzReceived;
                long gained = adjustedCurrentTimeMillis - mTimeServiceHelper.currentTimeMillis();

                if (mTimeServiceHelper.isTimeDetectionEnabled()) {
@@ -354,7 +355,7 @@ public final class OldNitzStateMachine implements NitzStateMachine {
                        setAndBroadcastNetworkSetTime(logMsg, adjustedCurrentTimeMillis);
                    } else {
                        long elapsedRealtimeSinceLastSaved = mTimeServiceHelper.elapsedRealtime()
                                - mSavedNitzTime.mElapsedRealtime;
                                - mSavedNitzTime.getReferenceTimeMillis();
                        int nitzUpdateSpacing = mDeviceState.getNitzUpdateSpacingMillis();
                        int nitzUpdateDiff = mDeviceState.getNitzUpdateDiffMillis();
                        if (elapsedRealtimeSinceLastSaved > nitzUpdateSpacing
@@ -381,8 +382,8 @@ public final class OldNitzStateMachine implements NitzStateMachine {

                // Save the last NITZ time signal used so we can return to it later
                // if auto-time detection is toggled.
                mSavedNitzTime = new TimeStampedValue<>(
                        adjustedCurrentTimeMillis, nitzSignal.mElapsedRealtime);
                mSavedNitzTime = new TimestampedValue<>(
                        adjustedCurrentTimeMillis, nitzSignal.getReferenceTimeMillis());
            } finally {
                mWakeLock.release();
            }
@@ -434,8 +435,8 @@ public final class OldNitzStateMachine implements NitzStateMachine {
                String msg = "mSavedNitzTime: Reverting to NITZ time"
                        + " elapsedRealtime=" + elapsedRealtime
                        + " mSavedNitzTime=" + mSavedNitzTime;
                long adjustedCurrentTimeMillis =
                        mSavedNitzTime.mValue + (elapsedRealtime - mSavedNitzTime.mElapsedRealtime);
                long adjustedCurrentTimeMillis = mSavedNitzTime.getValue()
                        + (elapsedRealtime - mSavedNitzTime.getReferenceTimeMillis());
                setAndBroadcastNetworkSetTime(msg, adjustedCurrentTimeMillis);
            } finally {
                mWakeLock.release();
@@ -521,7 +522,7 @@ public final class OldNitzStateMachine implements NitzStateMachine {

    @Override
    public NitzData getCachedNitzData() {
        return mLatestNitzSignal != null ? mLatestNitzSignal.mValue : null;
        return mLatestNitzSignal != null ? mLatestNitzSignal.getValue() : null;
    }

    @Override
+3 −3
Original line number Diff line number Diff line
@@ -81,6 +81,7 @@ import android.util.Pair;
import android.util.SparseArray;
import android.util.StatsLog;
import android.util.TimeUtils;
import android.util.TimestampedValue;

import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.cdma.CdmaSubscriptionSourceManager;
@@ -95,7 +96,6 @@ import com.android.internal.telephony.uicc.SIMRecords;
import com.android.internal.telephony.uicc.UiccCardApplication;
import com.android.internal.telephony.uicc.UiccController;
import com.android.internal.telephony.util.NotificationChannelController;
import com.android.internal.telephony.util.TimeStampedValue;
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.IndentingPrintWriter;

@@ -3534,8 +3534,8 @@ public class ServiceStateTracker extends Handler {
        NitzData newNitzData = NitzData.parse(nitzString);
        if (newNitzData != null) {
            try {
                TimeStampedValue<NitzData> nitzSignal =
                        new TimeStampedValue<>(newNitzData, nitzReceiveTime);
                TimestampedValue<NitzData> nitzSignal =
                        new TimestampedValue<>(nitzReceiveTime, newNitzData);
                mNitzState.handleNitzReceived(nitzSignal);
            } finally {
                if (DBG) {
+0 −73
Original line number Diff line number Diff line
/*
 * Copyright 2017 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.internal.telephony.util;

import android.os.SystemClock;

/**
 * A pair containing a value and an associated time stamp.
 *
 * @param <T> The type of the value.
 */
public final class TimeStampedValue<T> {

    /** The value. */
    public final T mValue;

    /**
     * The value of {@link SystemClock#elapsedRealtime} or equivalent when value was
     * determined.
     */
    public final long mElapsedRealtime;

    public TimeStampedValue(T value, long elapsedRealtime) {
        this.mValue = value;
        this.mElapsedRealtime = elapsedRealtime;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }

        TimeStampedValue<?> that = (TimeStampedValue<?>) o;

        if (mElapsedRealtime != that.mElapsedRealtime) {
            return false;
        }
        return mValue != null ? mValue.equals(that.mValue) : that.mValue == null;
    }

    @Override
    public int hashCode() {
        int result = mValue != null ? mValue.hashCode() : 0;
        result = 31 * result + (int) (mElapsedRealtime ^ (mElapsedRealtime >>> 32));
        return result;
    }

    @Override
    public String toString() {
        return "TimeStampedValue{"
                + "mValue=" + mValue
                + ", elapsedRealtime=" + mElapsedRealtime
                + '}';
    }
}
+60 −56

File changed.

Preview size limit exceeded, changes collapsed.

Loading