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

Commit 980ad483 authored by Michele Berionne's avatar Michele Berionne Committed by Gerrit Code Review
Browse files

Merge "Fix handling of TelephonySettings in metrics"

parents dba0b177 0f5031a2
Loading
Loading
Loading
Loading
+21 −5
Original line number Diff line number Diff line
@@ -57,6 +57,7 @@ import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyHistogram;
import android.telephony.TelephonyManager;
import android.telephony.TelephonyManager.PrefNetworkMode;
import android.telephony.data.DataCallResponse;
import android.telephony.data.DataService;
import android.telephony.emergency.EmergencyNumber;
@@ -1227,6 +1228,20 @@ public class TelephonyMetrics {
                .setSignalStrength(signalStrength).build());
    }

    private TelephonySettings cloneCurrentTelephonySettings(int phoneId) {
        TelephonySettings newSettings = new TelephonySettings();
        TelephonySettings lastSettings = mLastSettings.get(phoneId);
        if (lastSettings != null) {
            // No clone method available, so each relevant field is copied individually.
            newSettings.preferredNetworkMode = lastSettings.preferredNetworkMode;
            newSettings.isEnhanced4GLteModeEnabled = lastSettings.isEnhanced4GLteModeEnabled;
            newSettings.isVtOverLteEnabled = lastSettings.isVtOverLteEnabled;
            newSettings.isWifiCallingEnabled = lastSettings.isWifiCallingEnabled;
            newSettings.isVtOverWifiEnabled = lastSettings.isVtOverWifiEnabled;
        }
        return newSettings;
    }

    /**
     * Write IMS feature settings changed event
     *
@@ -1235,8 +1250,9 @@ public class TelephonyMetrics {
     * @param network The IMS network type
     * @param value The settings. 0 indicates disabled, otherwise enabled.
     */
    public void writeImsSetFeatureValue(int phoneId, int feature, int network, int value) {
        TelephonySettings s = new TelephonySettings();
    public synchronized void writeImsSetFeatureValue(int phoneId, int feature, int network,
            int value) {
        TelephonySettings s = cloneCurrentTelephonySettings(phoneId);
        if (network == ImsRegistrationImplBase.REGISTRATION_TECH_LTE) {
            switch (feature) {
                case MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE:
@@ -1257,7 +1273,6 @@ public class TelephonyMetrics {
            }
        }


        // If the settings don't change, we don't log the event.
        if (mLastSettings.get(phoneId) != null &&
                Arrays.equals(TelephonySettings.toByteArray(mLastSettings.get(phoneId)),
@@ -1284,8 +1299,9 @@ public class TelephonyMetrics {
     * @param phoneId Phone id
     * @param networkType The preferred network
     */
    public void writeSetPreferredNetworkType(int phoneId, int networkType) {
        TelephonySettings s = new TelephonySettings();
    public synchronized void writeSetPreferredNetworkType(int phoneId,
            @PrefNetworkMode int networkType) {
        TelephonySettings s = cloneCurrentTelephonySettings(phoneId);
        s.preferredNetworkMode = networkType + 1;

        // If the settings don't change, we don't log the event.
+31 −0
Original line number Diff line number Diff line
@@ -73,6 +73,7 @@ import com.android.internal.telephony.nano.TelephonyProto.TelephonyServiceState;
import com.android.internal.telephony.nano.TelephonyProto.TelephonyServiceState.FrequencyRange;
import com.android.internal.telephony.nano.TelephonyProto.TelephonyServiceState.NrState;
import com.android.internal.telephony.nano.TelephonyProto.TelephonyServiceState.RoamingType;
import com.android.internal.telephony.nano.TelephonyProto.TelephonySettings.RilNetworkMode;

import org.junit.After;
import org.junit.Before;
@@ -419,6 +420,36 @@ public class TelephonyMetricsTest extends TelephonyTest {
        assertTrue(log.callSessions[0].events[1].settings.isEnhanced4GLteModeEnabled);
    }

    // Test multiple events impacting TelephonySettings.
    @Test
    @SmallTest
    public void testTelephonySettingsEvents() throws Exception {
        mMetrics.writeImsSetFeatureValue(mPhone.getPhoneId(),
                MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE,
                ImsRegistrationImplBase.REGISTRATION_TECH_LTE, 1);
        mMetrics.writeSetPreferredNetworkType(mPhone.getPhoneId(),
                TelephonyManager.NETWORK_MODE_LTE_ONLY);
        mMetrics.writeImsSetFeatureValue(mPhone.getPhoneId(),
                MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE,
                ImsRegistrationImplBase.REGISTRATION_TECH_IWLAN, 1);

        TelephonyLog log = buildProto();

        assertEquals(3, log.events.length);
        assertTrue(log.events[0].settings.isEnhanced4GLteModeEnabled);
        assertFalse(log.events[0].settings.isWifiCallingEnabled);
        assertEquals(log.events[0].settings.preferredNetworkMode,
                RilNetworkMode.NETWORK_MODE_UNKNOWN);
        assertTrue(log.events[1].settings.isEnhanced4GLteModeEnabled);
        assertFalse(log.events[1].settings.isWifiCallingEnabled);
        assertEquals(log.events[1].settings.preferredNetworkMode,
                RilNetworkMode.NETWORK_MODE_LTE_ONLY);
        assertTrue(log.events[2].settings.isEnhanced4GLteModeEnabled);
        assertTrue(log.events[2].settings.isWifiCallingEnabled);
        assertEquals(log.events[2].settings.preferredNetworkMode,
                RilNetworkMode.NETWORK_MODE_LTE_ONLY);
    }

    // Test write on ims call handover event
    @Test
    @SmallTest