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

Commit d35a9ac7 authored by Chi Zhang's avatar Chi Zhang
Browse files

DO NOT MERGE

Add is_emergency_only to CellularServiceState.

Test: build, unit test, manua test with voice call/SMS/MMS/data,
statsd_testdrive
Fixes: 124332646

Change-Id: Ib2191de72bc5c41d0d892402e4c0539be76186cd
parent bb6a63c5
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -303,6 +303,7 @@ message CellularServiceState {
    optional bool is_multi_sim = 7;
    optional int32 carrier_id = 8;
    optional int64 total_time_millis = 9; // Duration needs to be rounded when pulled
    optional bool is_emergency_only = 10;

    // Internal use only
    optional int64 last_used_millis = 10001;
+2 −1
Original line number Diff line number Diff line
@@ -717,7 +717,8 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback {
                state.simSlotIndex,
                state.isMultiSim,
                state.carrierId,
                (int) (round(state.totalTimeMillis, DURATION_BUCKET_MILLIS) / SECOND_IN_MILLIS));
                (int) (round(state.totalTimeMillis, DURATION_BUCKET_MILLIS) / SECOND_IN_MILLIS),
                state.isEmergencyOnly);
    }

    private static StatsEvent buildStatsEvent(VoiceCallRatUsage usage) {
+2 −1
Original line number Diff line number Diff line
@@ -1258,7 +1258,8 @@ public class PersistAtomsStorage {
                    && state.isEndc == key.isEndc
                    && state.simSlotIndex == key.simSlotIndex
                    && state.isMultiSim == key.isMultiSim
                    && state.carrierId == key.carrierId) {
                    && state.carrierId == key.carrierId
                    && state.isEmergencyOnly == key.isEmergencyOnly) {
                return state;
            }
        }
+10 −0
Original line number Diff line number Diff line
@@ -92,6 +92,7 @@ public class ServiceStateStats {
            newState.simSlotIndex = mPhone.getPhoneId();
            newState.isMultiSim = SimSlotState.isMultiSim();
            newState.carrierId = mPhone.getCarrierId();
            newState.isEmergencyOnly = isEmergencyOnly(serviceState);

            TimestampedServiceState prevState =
                    mLastState.getAndSet(new TimestampedServiceState(newState, now));
@@ -212,6 +213,7 @@ public class ServiceStateStats {
        copy.isMultiSim = state.isMultiSim;
        copy.carrierId = state.carrierId;
        copy.totalTimeMillis = state.totalTimeMillis;
        copy.isEmergencyOnly = state.isEmergencyOnly;
        return copy;
    }

@@ -280,6 +282,14 @@ public class ServiceStateStats {
                : TelephonyManager.NETWORK_TYPE_UNKNOWN;
    }

    private static boolean isEmergencyOnly(ServiceState state) {
        NetworkRegistrationInfo regInfo =
                state.getNetworkRegistrationInfo(
                        NetworkRegistrationInfo.DOMAIN_CS,
                        AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
        return regInfo != null && !regInfo.isInService() && regInfo.isEmergencyEnabled();
    }

    private static boolean isEndc(ServiceState state) {
        if (getDataRat(state) != TelephonyManager.NETWORK_TYPE_LTE) {
            return false;
+25 −3
Original line number Diff line number Diff line
@@ -144,6 +144,7 @@ public class PersistAtomsStorageTest extends TelephonyTest {
    private CellularServiceState mServiceState2Proto;
    private CellularServiceState mServiceState3Proto;
    private CellularServiceState mServiceState4Proto;
    private CellularServiceState mServiceState5Proto;

    private CellularDataServiceSwitch[] mServiceSwitches;
    private CellularServiceState[] mServiceStates;
@@ -408,6 +409,7 @@ public class PersistAtomsStorageTest extends TelephonyTest {
        mServiceState1Proto.isMultiSim = true;
        mServiceState1Proto.carrierId = CARRIER1_ID;
        mServiceState1Proto.totalTimeMillis = 5000L;
        mServiceState1Proto.isEmergencyOnly = false;

        // LTE with ENDC on slot 0
        mServiceState2Proto = new CellularServiceState();
@@ -420,6 +422,7 @@ public class PersistAtomsStorageTest extends TelephonyTest {
        mServiceState2Proto.isMultiSim = true;
        mServiceState2Proto.carrierId = CARRIER1_ID;
        mServiceState2Proto.totalTimeMillis = 15000L;
        mServiceState2Proto.isEmergencyOnly = false;

        // LTE with WFC and roaming on slot 1
        mServiceState3Proto = new CellularServiceState();
@@ -432,6 +435,7 @@ public class PersistAtomsStorageTest extends TelephonyTest {
        mServiceState3Proto.isMultiSim = true;
        mServiceState3Proto.carrierId = CARRIER2_ID;
        mServiceState3Proto.totalTimeMillis = 10000L;
        mServiceState3Proto.isEmergencyOnly = false;

        // UMTS with roaming on slot 1
        mServiceState4Proto = new CellularServiceState();
@@ -444,6 +448,20 @@ public class PersistAtomsStorageTest extends TelephonyTest {
        mServiceState4Proto.isMultiSim = true;
        mServiceState4Proto.carrierId = CARRIER2_ID;
        mServiceState4Proto.totalTimeMillis = 10000L;
        mServiceState4Proto.isEmergencyOnly = false;

        // Limited service on slot 0
        mServiceState5Proto = new CellularServiceState();
        mServiceState5Proto.voiceRat = TelephonyManager.NETWORK_TYPE_UNKNOWN;
        mServiceState5Proto.dataRat = TelephonyManager.NETWORK_TYPE_UNKNOWN;
        mServiceState5Proto.voiceRoamingType = ServiceState.ROAMING_TYPE_NOT_ROAMING;
        mServiceState5Proto.dataRoamingType = ServiceState.ROAMING_TYPE_NOT_ROAMING;
        mServiceState5Proto.isEndc = false;
        mServiceState5Proto.simSlotIndex = 0;
        mServiceState5Proto.isMultiSim = true;
        mServiceState5Proto.carrierId = CARRIER1_ID;
        mServiceState5Proto.totalTimeMillis = 15000L;
        mServiceState5Proto.isEmergencyOnly = true;

        mServiceSwitches =
                new CellularDataServiceSwitch[] {mServiceSwitch1Proto, mServiceSwitch2Proto};
@@ -452,7 +470,8 @@ public class PersistAtomsStorageTest extends TelephonyTest {
                    mServiceState1Proto,
                    mServiceState2Proto,
                    mServiceState3Proto,
                    mServiceState4Proto
                    mServiceState4Proto,
                    mServiceState5Proto
                };

        // IMS over LTE on slot 0, registered for 5 seconds
@@ -931,6 +950,7 @@ public class PersistAtomsStorageTest extends TelephonyTest {
        mServiceState2Proto = null;
        mServiceState3Proto = null;
        mServiceState4Proto = null;
        mServiceState5Proto = null;
        mServiceSwitches = null;
        mServiceStates = null;
        mImsRegistrationStatsLte0 = null;
@@ -1368,7 +1388,8 @@ public class PersistAtomsStorageTest extends TelephonyTest {
                    newServiceState1Proto,
                    mServiceState2Proto,
                    mServiceState3Proto,
                    mServiceState4Proto
                    mServiceState4Proto,
                    mServiceState5Proto
                },
                serviceStates);
        CellularDataServiceSwitch[] serviceSwitches =
@@ -1493,7 +1514,8 @@ public class PersistAtomsStorageTest extends TelephonyTest {
                    mServiceState1Proto,
                    mServiceState2Proto,
                    mServiceState3Proto,
                    mServiceState4Proto
                    mServiceState4Proto,
                    mServiceState5Proto
                },
                serviceStates1);
        assertProtoArrayEquals(new CellularServiceState[0], serviceStates2);
Loading