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

Commit f0eb60b1 authored by Aswin Sankar's avatar Aswin Sankar Committed by Android (Google) Code Review
Browse files

Merge "PerSimStatus: add field for cross-SIM calling" into udc-qpr-dev

parents a9a65ee0 685a9db2
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -777,7 +777,8 @@ public class MetricsCollector implements StatsManager.StatsPullAtomCallback {
                    perSimStatus.minimumVoltageClass, // simVoltageClass
                    perSimStatus.userModifiedApnTypes, // userModifiedApnTypeBitmask
                    perSimStatus.unmeteredNetworks, // unmeteredNetworks
                    perSimStatus.vonrEnabled); // vonrEnabled
                    perSimStatus.vonrEnabled, // vonrEnabled
                    perSimStatus.crossSimCallingEnabled); // crossSimCallingEnabled
            data.add(statsEvent);
            result = StatsManager.PULL_SUCCESS;
        }
+27 −2
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ import android.annotation.Nullable;
import android.database.Cursor;
import android.net.Uri;
import android.provider.Telephony;
import android.telephony.AnomalyReporter;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.telephony.data.ApnSetting;
@@ -46,9 +47,14 @@ import com.android.internal.telephony.subscription.SubscriptionInfoInternal;
import com.android.internal.telephony.subscription.SubscriptionManagerService;
import com.android.internal.telephony.uicc.UiccController;
import com.android.internal.telephony.uicc.UiccSlot;
import com.android.telephony.Rlog;

import java.util.UUID;

/** Stores the per SIM status. */
public class PerSimStatus {
    private static final String TAG = "PerSimStatus";

    private static final long BITMASK_2G =
            TelephonyManager.NETWORK_TYPE_BITMASK_GSM
                    | TelephonyManager.NETWORK_TYPE_BITMASK_GPRS
@@ -56,6 +62,9 @@ public class PerSimStatus {
                    | TelephonyManager.NETWORK_TYPE_BITMASK_CDMA
                    | TelephonyManager.NETWORK_TYPE_BITMASK_1xRTT;

    private static final UUID CROSS_SIM_CALLING_STATUS_ANOMALY_UUID =
            UUID.fromString("377e1a33-d4ac-4039-9cc0-f0d8396757f3");

    public final int carrierId;
    public final int phoneNumberSourceUicc;
    public final int phoneNumberSourceCarrier;
@@ -74,6 +83,8 @@ public class PerSimStatus {
    public final long unmeteredNetworks;
    public final boolean vonrEnabled;

    public final boolean crossSimCallingEnabled;

    /** Returns the current sim status of the given {@link Phone}. */
    @Nullable
    public static PerSimStatus getCurrentState(Phone phone) {
@@ -105,7 +116,8 @@ public class PerSimStatus {
                getMinimumVoltageClass(phone),
                getUserModifiedApnTypes(phone),
                persistAtomsStorage.getUnmeteredNetworks(phone.getPhoneId(), carrierId),
                isVonrEnabled(phone));
                isVonrEnabled(phone),
                isCrossSimCallingEnabled(imsMmTelManager));
    }

    private PerSimStatus(
@@ -125,7 +137,8 @@ public class PerSimStatus {
            int minimumVoltageClass,
            int userModifiedApnTypes,
            long unmeteredNetworks,
            boolean vonrEnabled) {
            boolean vonrEnabled,
            boolean crossSimCallingEnabled) {
        this.carrierId = carrierId;
        this.phoneNumberSourceUicc = phoneNumberSourceUicc;
        this.phoneNumberSourceCarrier = phoneNumberSourceCarrier;
@@ -143,6 +156,18 @@ public class PerSimStatus {
        this.userModifiedApnTypes = userModifiedApnTypes;
        this.unmeteredNetworks = unmeteredNetworks;
        this.vonrEnabled = vonrEnabled;
        this.crossSimCallingEnabled = crossSimCallingEnabled;
    }

    private static boolean isCrossSimCallingEnabled(ImsMmTelManager imsMmTelManager) {
        try {
            return imsMmTelManager != null && imsMmTelManager.isCrossSimCallingEnabled();
        } catch (Exception e) {
            AnomalyReporter.reportAnomaly(CROSS_SIM_CALLING_STATUS_ANOMALY_UUID,
                    "Failed to query ImsMmTelManager for cross-SIM calling status!");
            Rlog.e(TAG, e.getMessage());
        }
        return false;
    }

    @Nullable
+8 −0
Original line number Diff line number Diff line
@@ -107,6 +107,7 @@ public class PerSimStatusTest extends TelephonyTest {
                .when(imsMmTelManager1)
                .getVoWiFiRoamingModeSetting();
        doReturn(false).when(imsMmTelManager1).isVtSettingEnabled();
        doReturn(true).when(imsMmTelManager1).isCrossSimCallingEnabled();
        doReturn(false).when(mPhone).getDataRoamingEnabled();
        doReturn(1L)
                .when(mPhone)
@@ -152,6 +153,7 @@ public class PerSimStatusTest extends TelephonyTest {
                .when(imsMmTelManager2)
                .getVoWiFiRoamingModeSetting();
        doReturn(true).when(imsMmTelManager2).isVtSettingEnabled();
        doReturn(false).when(imsMmTelManager2).isCrossSimCallingEnabled();
        doReturn(false).when(mSecondPhone).getDataRoamingEnabled();
        doReturn(1L)
                .when(mSecondPhone)
@@ -191,6 +193,8 @@ public class PerSimStatusTest extends TelephonyTest {
                perSimStatus1.minimumVoltageClass);
        assertEquals(NETWORK_TYPE_BITMASK_GSM, perSimStatus1.unmeteredNetworks);
        assertEquals(false, perSimStatus1.vonrEnabled);
        assertEquals(true, perSimStatus1.crossSimCallingEnabled);

        assertEquals(101, perSimStatus2.carrierId);
        assertEquals(1, perSimStatus2.phoneNumberSourceUicc);
        assertEquals(2, perSimStatus2.phoneNumberSourceCarrier);
@@ -210,6 +214,7 @@ public class PerSimStatusTest extends TelephonyTest {
                perSimStatus2.minimumVoltageClass);
        assertEquals(NETWORK_TYPE_BITMASK_GSM, perSimStatus2.unmeteredNetworks);
        assertEquals(false, perSimStatus2.vonrEnabled);
        assertEquals(false, perSimStatus2.crossSimCallingEnabled);
    }

    @Test
@@ -279,6 +284,7 @@ public class PerSimStatusTest extends TelephonyTest {
                perSimStatus.minimumVoltageClass);
        assertEquals(NETWORK_TYPE_BITMASK_GSM, perSimStatus.unmeteredNetworks);
        assertEquals(true, perSimStatus.vonrEnabled);
        assertEquals(false, perSimStatus.crossSimCallingEnabled);
    }

    @Test
@@ -340,6 +346,7 @@ public class PerSimStatusTest extends TelephonyTest {
                perSimStatus.minimumVoltageClass);
        assertEquals(NETWORK_TYPE_BITMASK_GSM, perSimStatus.unmeteredNetworks);
        assertEquals(true, perSimStatus.vonrEnabled);
        assertEquals(false, perSimStatus.crossSimCallingEnabled);
    }

    @Test
@@ -397,5 +404,6 @@ public class PerSimStatusTest extends TelephonyTest {
                perSimStatus.minimumVoltageClass);
        assertEquals(NETWORK_TYPE_BITMASK_GSM, perSimStatus.unmeteredNetworks);
        assertEquals(true, perSimStatus.vonrEnabled);
        assertEquals(false, perSimStatus.crossSimCallingEnabled);
    }
}