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

Commit c171a44f authored by Pengquan Meng's avatar Pengquan Meng Committed by android-build-merger
Browse files

Merge "Fix issue of empty active subscription info reported" am: 90e7dbee

am: 2d7dd66b

Change-Id: I59f7e1e121968b82f6e059f0427e186906a8a715
parents 3a6eca6f 2d7dd66b
Loading
Loading
Loading
Loading
+18 −17
Original line number Diff line number Diff line
@@ -98,6 +98,7 @@ import com.android.internal.telephony.nano.TelephonyProto.TelephonyLog;
import com.android.internal.telephony.nano.TelephonyProto.TelephonyServiceState;
import com.android.internal.telephony.nano.TelephonyProto.TelephonySettings;
import com.android.internal.telephony.nano.TelephonyProto.TimeInterval;
import com.android.internal.telephony.protobuf.nano.MessageNano;
import com.android.internal.util.IndentingPrintWriter;

import java.io.FileDescriptor;
@@ -669,12 +670,18 @@ public class TelephonyMetrics {
        log.endTime.elapsedTimestampMillis = SystemClock.elapsedRealtime();

        // Log the last active subscription information.
        int phoneCount = TelephonyManager.getDefault().getPhoneCount();
        ActiveSubscriptionInfo[] activeSubscriptionInfo =
                new ActiveSubscriptionInfo[mLastActiveSubscriptionInfos.size()];
                new ActiveSubscriptionInfo[phoneCount];
        for (int i = 0; i < mLastActiveSubscriptionInfos.size(); i++) {
            int key = mLastActiveSubscriptionInfos.keyAt(i);
            activeSubscriptionInfo[key] = mLastActiveSubscriptionInfos.get(key);
        }
        for (int i = 0; i < phoneCount; i++) {
            if (activeSubscriptionInfo[i] == null) {
                activeSubscriptionInfo[i] = makeInvalidSubscriptionInfo(i);
            }
        }
        log.lastActiveSubscriptionInfo = activeSubscriptionInfo;

        return log;
@@ -704,7 +711,7 @@ public class TelephonyMetrics {
            activeSubscriptionInfo.slotIndex = phoneId;
            activeSubscriptionInfo.isOpportunistic = info.isOpportunistic() ? 1 : 0;
            activeSubscriptionInfo.carrierId = info.getCarrierId();
            if (isDifferentSubscriptionInfo(
            if (!MessageNano.messageNanoEquals(
                    mLastActiveSubscriptionInfos.get(phoneId), activeSubscriptionInfo)) {
                addTelephonyEvent(new TelephonyEventBuilder(phoneId)
                        .setActiveSubscriptionInfoChange(activeSubscriptionInfo).build());
@@ -715,12 +722,8 @@ public class TelephonyMetrics {

        for (int phoneId : inActivePhoneList) {
            mLastActiveSubscriptionInfos.remove(phoneId);
            ActiveSubscriptionInfo invalidSubInfo = new ActiveSubscriptionInfo();
            invalidSubInfo.slotIndex = phoneId;
            invalidSubInfo.carrierId = -1;
            invalidSubInfo.isOpportunistic = -1;
            addTelephonyEvent(new TelephonyEventBuilder(phoneId)
                    .setActiveSubscriptionInfoChange(invalidSubInfo).build());
                    .setActiveSubscriptionInfoChange(makeInvalidSubscriptionInfo(phoneId)).build());
        }
    }

@@ -732,6 +735,14 @@ public class TelephonyMetrics {
                .setEnabledModemBitmap(mLastEnabledModemBitmap).build());
    }

    private static ActiveSubscriptionInfo makeInvalidSubscriptionInfo(int phoneId) {
        ActiveSubscriptionInfo invalidSubscriptionInfo = new ActiveSubscriptionInfo();
        invalidSubscriptionInfo.slotIndex = phoneId;
        invalidSubscriptionInfo.carrierId = -1;
        invalidSubscriptionInfo.isOpportunistic = -1;
        return invalidSubscriptionInfo;
    }

    /**
     * Reduce precision to meet privacy requirements.
     *
@@ -2484,14 +2495,4 @@ public class TelephonyMetrics {
                return SimState.SIM_STATE_UNKNOWN;
        }
    }

    private static boolean isDifferentSubscriptionInfo(
            ActiveSubscriptionInfo oldInfo, ActiveSubscriptionInfo newInfo) {
        if (oldInfo == null || newInfo == null) {
            return oldInfo == newInfo;
        }

        return oldInfo.slotIndex != newInfo.slotIndex || oldInfo.carrierId != newInfo.carrierId
                || oldInfo.isOpportunistic != newInfo.isOpportunistic;
    }
}