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

Commit 9d086a54 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Revert "Remove prefix for emergency number address while dialing per...

Merge "Revert "Remove prefix for emergency number address while dialing per carrier requirement"" into sc-dev
parents 5b121e70 c731520e
Loading
Loading
Loading
Loading
+0 −32
Original line number Original line Diff line number Diff line
@@ -70,7 +70,6 @@ import android.os.Build;
import android.os.Handler;
import android.os.Handler;
import android.os.HwBinder;
import android.os.HwBinder;
import android.os.Message;
import android.os.Message;
import android.os.PersistableBundle;
import android.os.PowerManager;
import android.os.PowerManager;
import android.os.PowerManager.WakeLock;
import android.os.PowerManager.WakeLock;
import android.os.RemoteException;
import android.os.RemoteException;
@@ -80,7 +79,6 @@ import android.provider.Settings;
import android.service.carrier.CarrierIdentifier;
import android.service.carrier.CarrierIdentifier;
import android.sysprop.TelephonyProperties;
import android.sysprop.TelephonyProperties;
import android.telephony.AccessNetworkConstants.AccessNetworkType;
import android.telephony.AccessNetworkConstants.AccessNetworkType;
import android.telephony.CarrierConfigManager;
import android.telephony.CarrierRestrictionRules;
import android.telephony.CarrierRestrictionRules;
import android.telephony.CellInfo;
import android.telephony.CellInfo;
import android.telephony.CellSignalStrengthCdma;
import android.telephony.CellSignalStrengthCdma;
@@ -131,7 +129,6 @@ import com.android.internal.telephony.metrics.TelephonyMetrics;
import com.android.internal.telephony.nano.TelephonyProto.SmsSession;
import com.android.internal.telephony.nano.TelephonyProto.SmsSession;
import com.android.internal.telephony.uicc.IccCardApplicationStatus.PersoSubState;
import com.android.internal.telephony.uicc.IccCardApplicationStatus.PersoSubState;
import com.android.internal.telephony.uicc.IccUtils;
import com.android.internal.telephony.uicc.IccUtils;
import com.android.internal.telephony.util.ArrayUtils;
import com.android.internal.telephony.util.TelephonyUtils;
import com.android.internal.telephony.util.TelephonyUtils;
import com.android.telephony.Rlog;
import com.android.telephony.Rlog;


@@ -1303,39 +1300,10 @@ public class RIL extends BaseCommands implements CommandsInterface {
        }
        }
    }
    }


    private String getEmergencyNumberAddressWithoutPrefix(String address) {
        SubscriptionManager subscriptionManager = mContext.getSystemService(
                SubscriptionManager.class);
        int subId = subscriptionManager.getActiveSubscriptionInfoForSimSlotIndex(
                mPhoneId).getSubscriptionId();
        CarrierConfigManager configMgr = mContext.getSystemService(CarrierConfigManager.class);
        if (configMgr == null) {
            return null;
        }
        PersistableBundle b = configMgr.getConfigForSubId(subId);
        String[] prefixes = b == null ? null : b.getStringArray(
                CarrierConfigManager.KEY_EMERGENCY_NUMBER_PREFIX_STRING_ARRAY);
        if (ArrayUtils.isEmpty(prefixes)) {
            return address;
        }
        for (String prefix : prefixes) {
            // If emergencyNumber starts with this prefix, remove this prefix to retrieve the
            // actual emergency number.
            if (!TextUtils.isEmpty(prefix) && address.startsWith(prefix)) {
                return address.substring(prefix.length());
            }
        }
        return address;
    }

    @Override
    @Override
    public void dial(String address, boolean isEmergencyCall, EmergencyNumber emergencyNumberInfo,
    public void dial(String address, boolean isEmergencyCall, EmergencyNumber emergencyNumberInfo,
                     boolean hasKnownUserIntentEmergency, int clirMode, UUSInfo uusInfo,
                     boolean hasKnownUserIntentEmergency, int clirMode, UUSInfo uusInfo,
                     Message result) {
                     Message result) {
        // Remove prefix while dialing emergency number with modem
        if (isEmergencyCall) {
            address = getEmergencyNumberAddressWithoutPrefix(address);
        }
        if (isEmergencyCall && mRadioVersion.greaterOrEqual(RADIO_HAL_VERSION_1_4)
        if (isEmergencyCall && mRadioVersion.greaterOrEqual(RADIO_HAL_VERSION_1_4)
                && emergencyNumberInfo != null) {
                && emergencyNumberInfo != null) {
            emergencyDial(address, emergencyNumberInfo, hasKnownUserIntentEmergency, clirMode,
            emergencyDial(address, emergencyNumberInfo, hasKnownUserIntentEmergency, clirMode,
+0 −62
Original line number Original line Diff line number Diff line
@@ -107,7 +107,6 @@ import android.content.pm.ApplicationInfo;
import android.hardware.radio.V1_0.Carrier;
import android.hardware.radio.V1_0.Carrier;
import android.hardware.radio.V1_0.CdmaSmsMessage;
import android.hardware.radio.V1_0.CdmaSmsMessage;
import android.hardware.radio.V1_0.DataProfileInfo;
import android.hardware.radio.V1_0.DataProfileInfo;
import android.hardware.radio.V1_0.Dial;
import android.hardware.radio.V1_0.GsmSmsMessage;
import android.hardware.radio.V1_0.GsmSmsMessage;
import android.hardware.radio.V1_0.ImsSmsMessage;
import android.hardware.radio.V1_0.ImsSmsMessage;
import android.hardware.radio.V1_0.NvWriteItem;
import android.hardware.radio.V1_0.NvWriteItem;
@@ -116,7 +115,6 @@ import android.hardware.radio.V1_0.RadioResponseInfo;
import android.hardware.radio.V1_0.RadioResponseType;
import android.hardware.radio.V1_0.RadioResponseType;
import android.hardware.radio.V1_0.RadioTechnologyFamily;
import android.hardware.radio.V1_0.RadioTechnologyFamily;
import android.hardware.radio.V1_0.SmsWriteArgs;
import android.hardware.radio.V1_0.SmsWriteArgs;
import android.hardware.radio.V1_0.UusInfo;
import android.hardware.radio.V1_6.IRadio;
import android.hardware.radio.V1_6.IRadio;
import android.hardware.radio.deprecated.V1_0.IOemHook;
import android.hardware.radio.deprecated.V1_0.IOemHook;
import android.net.ConnectivityManager;
import android.net.ConnectivityManager;
@@ -127,12 +125,10 @@ import android.os.IPowerManager;
import android.os.IThermalService;
import android.os.IThermalService;
import android.os.Looper;
import android.os.Looper;
import android.os.Message;
import android.os.Message;
import android.os.PersistableBundle;
import android.os.PowerManager;
import android.os.PowerManager;
import android.os.WorkSource;
import android.os.WorkSource;
import android.service.carrier.CarrierIdentifier;
import android.service.carrier.CarrierIdentifier;
import android.telephony.AccessNetworkConstants;
import android.telephony.AccessNetworkConstants;
import android.telephony.CarrierConfigManager;
import android.telephony.CellIdentityCdma;
import android.telephony.CellIdentityCdma;
import android.telephony.CellIdentityGsm;
import android.telephony.CellIdentityGsm;
import android.telephony.CellIdentityLte;
import android.telephony.CellIdentityLte;
@@ -158,7 +154,6 @@ import android.telephony.RadioAccessSpecifier;
import android.telephony.ServiceState;
import android.telephony.ServiceState;
import android.telephony.SignalStrength;
import android.telephony.SignalStrength;
import android.telephony.SmsManager;
import android.telephony.SmsManager;
import android.telephony.SubscriptionInfo;
import android.telephony.TelephonyManager;
import android.telephony.TelephonyManager;
import android.telephony.data.ApnSetting;
import android.telephony.data.ApnSetting;
import android.telephony.data.DataCallResponse;
import android.telephony.data.DataCallResponse;
@@ -167,7 +162,6 @@ import android.telephony.data.EpsQos;
import android.telephony.data.QosBearerFilter;
import android.telephony.data.QosBearerFilter;
import android.telephony.data.QosBearerSession;
import android.telephony.data.QosBearerSession;
import android.telephony.data.TrafficDescriptor;
import android.telephony.data.TrafficDescriptor;
import android.telephony.emergency.EmergencyNumber;
import android.testing.AndroidTestingRunner;
import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper;
import android.testing.TestableLooper;


@@ -203,10 +197,6 @@ public class RILTest extends TelephonyTest {
    // refer to RIL#DEFAULT_WAKE_LOCK_TIMEOUT_MS
    // refer to RIL#DEFAULT_WAKE_LOCK_TIMEOUT_MS
    private static final int DEFAULT_WAKE_LOCK_TIMEOUT_MS = 60000;
    private static final int DEFAULT_WAKE_LOCK_TIMEOUT_MS = 60000;


    @Mock
    private CarrierConfigManager mMockCarrierConfigManager;
    @Mock
    private SubscriptionInfo mSubscriptionInfo;
    @Mock
    @Mock
    private ConnectivityManager mConnectionManager;
    private ConnectivityManager mConnectionManager;
    @Mock
    @Mock
@@ -227,7 +217,6 @@ public class RILTest extends TelephonyTest {
    private RIL mRILInstance;
    private RIL mRILInstance;
    private RIL mRILUnderTest;
    private RIL mRILUnderTest;
    ArgumentCaptor<Integer> mSerialNumberCaptor = ArgumentCaptor.forClass(Integer.class);
    ArgumentCaptor<Integer> mSerialNumberCaptor = ArgumentCaptor.forClass(Integer.class);
    ArgumentCaptor<Dial> mDialArgumentCaptor = ArgumentCaptor.forClass(Dial.class);


    // Constants
    // Constants
    private static final String ALPHA_LONG = "long";
    private static final String ALPHA_LONG = "long";
@@ -312,10 +301,6 @@ public class RILTest extends TelephonyTest {
        Context context = new ContextFixture().getTestDouble();
        Context context = new ContextFixture().getTestDouble();
        doReturn(true).when(mConnectionManager)
        doReturn(true).when(mConnectionManager)
            .isNetworkSupported(ConnectivityManager.TYPE_MOBILE);
            .isNetworkSupported(ConnectivityManager.TYPE_MOBILE);
        doReturn(mSubscriptionManager).when(context)
                .getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);
        doReturn(mMockCarrierConfigManager).when(context)
                .getSystemService(Context.CARRIER_CONFIG_SERVICE);
        doReturn(mConnectionManager).when(context)
        doReturn(mConnectionManager).when(context)
            .getSystemService(Context.CONNECTIVITY_SERVICE);
            .getSystemService(Context.CONNECTIVITY_SERVICE);
        doReturn(mTelephonyManager).when(context)
        doReturn(mTelephonyManager).when(context)
@@ -766,53 +751,6 @@ public class RILTest extends TelephonyTest {
        verifyRILResponse(mRILUnderTest, mSerialNumberCaptor.getValue(), RIL_REQUEST_DTMF);
        verifyRILResponse(mRILUnderTest, mSerialNumberCaptor.getValue(), RIL_REQUEST_DTMF);
    }
    }


    private void setEmergencyNumberPrefixCarrierConfig(String[] prefixes) {
        doReturn(mSubscriptionInfo).when(mSubscriptionManager)
                .getActiveSubscriptionInfoForSimSlotIndex(anyInt());
        doReturn(0).when(mSubscriptionInfo).getSubscriptionId();

        final PersistableBundle bundle = new PersistableBundle();
        bundle.putStringArray(
                CarrierConfigManager.KEY_EMERGENCY_NUMBER_PREFIX_STRING_ARRAY, prefixes);
        doReturn(bundle).when(mMockCarrierConfigManager).getConfigForSubId(anyInt());
    }

    @FlakyTest
    @Test
    public void testDialEmergencyNumberWithoutPrefix() throws Exception {
        String[] prefixes = {"999"};
        setEmergencyNumberPrefixCarrierConfig(prefixes);

        String addressWithPrefix = "99912345";
        boolean isEmergencyCall = true;
        EmergencyNumber emergencyNumber = new EmergencyNumber(
                "99912345",
                "us",
                "30",
                EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_UNSPECIFIED,
                new ArrayList<String>(),
                EmergencyNumber.EMERGENCY_NUMBER_SOURCE_NETWORK_SIGNALING,
                EmergencyNumber.EMERGENCY_CALL_ROUTING_NORMAL);
        boolean hasKnownUserIntentEmergency = true;
        int clirMode = 0;
        UUSInfo uusInfo = null;
        Message result = obtainMessage();

        Dial dialInfo = new Dial();
        dialInfo.address = "12345";
        dialInfo.clir = clirMode;
        if (uusInfo != null) {
            UusInfo info = new UusInfo();
            dialInfo.uusInfo.add(info);
        }

        mRILUnderTest.dial(addressWithPrefix, isEmergencyCall, emergencyNumber,
                hasKnownUserIntentEmergency, clirMode, uusInfo, result);
        verify(mRadioProxy).dial(mSerialNumberCaptor.capture(),
                mDialArgumentCaptor.capture());
        assertEquals(mDialArgumentCaptor.getValue().address, "12345");
    }

    @FlakyTest
    @FlakyTest
    @Test
    @Test
    public void testSendSMS() throws Exception {
    public void testSendSMS() throws Exception {