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

Commit 72d54ac6 authored by Michele Berionne's avatar Michele Berionne Committed by Automerger Merge Worker
Browse files

Merge "Fix handling of TelephonySettings in metrics" am: 980ad483

Original change: https://android-review.googlesource.com/c/platform/frameworks/opt/telephony/+/1637547

Change-Id: Iee0d44dc05905e7f9ca7bed208f012c68c5bd210
parents 4108bac1 980ad483
Loading
Loading
Loading
Loading
+21 −5
Original line number Original line Diff line number Diff line
@@ -57,6 +57,7 @@ import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyHistogram;
import android.telephony.TelephonyHistogram;
import android.telephony.TelephonyManager;
import android.telephony.TelephonyManager;
import android.telephony.TelephonyManager.PrefNetworkMode;
import android.telephony.data.DataCallResponse;
import android.telephony.data.DataCallResponse;
import android.telephony.data.DataService;
import android.telephony.data.DataService;
import android.telephony.emergency.EmergencyNumber;
import android.telephony.emergency.EmergencyNumber;
@@ -1227,6 +1228,20 @@ public class TelephonyMetrics {
                .setSignalStrength(signalStrength).build());
                .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
     * Write IMS feature settings changed event
     *
     *
@@ -1235,8 +1250,9 @@ public class TelephonyMetrics {
     * @param network The IMS network type
     * @param network The IMS network type
     * @param value The settings. 0 indicates disabled, otherwise enabled.
     * @param value The settings. 0 indicates disabled, otherwise enabled.
     */
     */
    public void writeImsSetFeatureValue(int phoneId, int feature, int network, int value) {
    public synchronized void writeImsSetFeatureValue(int phoneId, int feature, int network,
        TelephonySettings s = new TelephonySettings();
            int value) {
        TelephonySettings s = cloneCurrentTelephonySettings(phoneId);
        if (network == ImsRegistrationImplBase.REGISTRATION_TECH_LTE) {
        if (network == ImsRegistrationImplBase.REGISTRATION_TECH_LTE) {
            switch (feature) {
            switch (feature) {
                case MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE:
                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 the settings don't change, we don't log the event.
        if (mLastSettings.get(phoneId) != null &&
        if (mLastSettings.get(phoneId) != null &&
                Arrays.equals(TelephonySettings.toByteArray(mLastSettings.get(phoneId)),
                Arrays.equals(TelephonySettings.toByteArray(mLastSettings.get(phoneId)),
@@ -1284,8 +1299,9 @@ public class TelephonyMetrics {
     * @param phoneId Phone id
     * @param phoneId Phone id
     * @param networkType The preferred network
     * @param networkType The preferred network
     */
     */
    public void writeSetPreferredNetworkType(int phoneId, int networkType) {
    public synchronized void writeSetPreferredNetworkType(int phoneId,
        TelephonySettings s = new TelephonySettings();
            @PrefNetworkMode int networkType) {
        TelephonySettings s = cloneCurrentTelephonySettings(phoneId);
        s.preferredNetworkMode = networkType + 1;
        s.preferredNetworkMode = networkType + 1;


        // If the settings don't change, we don't log the event.
        // If the settings don't change, we don't log the event.
+31 −0
Original line number Original line 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.FrequencyRange;
import com.android.internal.telephony.nano.TelephonyProto.TelephonyServiceState.NrState;
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.TelephonyServiceState.RoamingType;
import com.android.internal.telephony.nano.TelephonyProto.TelephonySettings.RilNetworkMode;


import org.junit.After;
import org.junit.After;
import org.junit.Before;
import org.junit.Before;
@@ -419,6 +420,36 @@ public class TelephonyMetricsTest extends TelephonyTest {
        assertTrue(log.callSessions[0].events[1].settings.isEnhanced4GLteModeEnabled);
        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 write on ims call handover event
    @Test
    @Test
    @SmallTest
    @SmallTest