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

Commit be0ca6ff authored by Tyler Gunn's avatar Tyler Gunn Committed by Gerrit Code Review
Browse files

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

parents d217974c 0769fae8
Loading
Loading
Loading
Loading
+0 −32
Original line number Diff line number Diff line
@@ -70,7 +70,6 @@ import android.os.Build;
import android.os.Handler;
import android.os.HwBinder;
import android.os.Message;
import android.os.PersistableBundle;
import android.os.PowerManager;
import android.os.PowerManager.WakeLock;
import android.os.RemoteException;
@@ -80,7 +79,6 @@ import android.provider.Settings;
import android.service.carrier.CarrierIdentifier;
import android.sysprop.TelephonyProperties;
import android.telephony.AccessNetworkConstants.AccessNetworkType;
import android.telephony.CarrierConfigManager;
import android.telephony.CarrierRestrictionRules;
import android.telephony.CellInfo;
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.uicc.IccCardApplicationStatus.PersoSubState;
import com.android.internal.telephony.uicc.IccUtils;
import com.android.internal.telephony.util.ArrayUtils;
import com.android.internal.telephony.util.TelephonyUtils;
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
    public void dial(String address, boolean isEmergencyCall, EmergencyNumber emergencyNumberInfo,
                     boolean hasKnownUserIntentEmergency, int clirMode, UUSInfo uusInfo,
                     Message result) {
        // Remove prefix while dialing emergency number with modem
        if (isEmergencyCall) {
            address = getEmergencyNumberAddressWithoutPrefix(address);
        }
        if (isEmergencyCall && mRadioVersion.greaterOrEqual(RADIO_HAL_VERSION_1_4)
                && emergencyNumberInfo != null) {
            emergencyDial(address, emergencyNumberInfo, hasKnownUserIntentEmergency, clirMode,
+0 −62
Original line number Diff line number Diff line
@@ -106,7 +106,6 @@ import android.content.pm.ApplicationInfo;
import android.hardware.radio.V1_0.Carrier;
import android.hardware.radio.V1_0.CdmaSmsMessage;
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.ImsSmsMessage;
import android.hardware.radio.V1_0.NvWriteItem;
@@ -115,7 +114,6 @@ import android.hardware.radio.V1_0.RadioResponseInfo;
import android.hardware.radio.V1_0.RadioResponseType;
import android.hardware.radio.V1_0.RadioTechnologyFamily;
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.deprecated.V1_0.IOemHook;
import android.net.ConnectivityManager;
@@ -126,12 +124,10 @@ import android.os.IPowerManager;
import android.os.IThermalService;
import android.os.Looper;
import android.os.Message;
import android.os.PersistableBundle;
import android.os.PowerManager;
import android.os.WorkSource;
import android.service.carrier.CarrierIdentifier;
import android.telephony.AccessNetworkConstants;
import android.telephony.CarrierConfigManager;
import android.telephony.CellIdentityCdma;
import android.telephony.CellIdentityGsm;
import android.telephony.CellIdentityLte;
@@ -157,7 +153,6 @@ import android.telephony.RadioAccessSpecifier;
import android.telephony.ServiceState;
import android.telephony.SignalStrength;
import android.telephony.SmsManager;
import android.telephony.SubscriptionInfo;
import android.telephony.TelephonyManager;
import android.telephony.data.ApnSetting;
import android.telephony.data.DataCallResponse;
@@ -166,7 +161,6 @@ import android.telephony.data.EpsQos;
import android.telephony.data.QosBearerFilter;
import android.telephony.data.QosBearerSession;
import android.telephony.data.TrafficDescriptor;
import android.telephony.emergency.EmergencyNumber;
import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper;

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

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

    // Constants
    private static final String ALPHA_LONG = "long";
@@ -311,10 +300,6 @@ public class RILTest extends TelephonyTest {
        Context context = new ContextFixture().getTestDouble();
        doReturn(true).when(mConnectionManager)
            .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)
            .getSystemService(Context.CONNECTIVITY_SERVICE);
        doReturn(mTelephonyManager).when(context)
@@ -765,53 +750,6 @@ public class RILTest extends TelephonyTest {
        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
    @Test
    public void testSendSMS() throws Exception {