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

Commit 90e7dbee authored by Pengquan Meng's avatar Pengquan Meng Committed by Gerrit Code Review
Browse files

Merge "Fix issue of empty active subscription info reported"

parents 4e9b89dd 5755212a
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;
    }
}