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

Commit da5a0757 authored by sparvathy's avatar sparvathy
Browse files

Send routing type as unknown in oos

For normal routing numbers based on per mnc routing type will be sent as unknown during OOS.
As it cannot be decided that ec call should be triggered on emergency or normal.

Test: atest EmergencyNumberTest & emergency call test in device
Bug: 238359415
Change-Id: I0a8a52510dff6614df182121f388313199f7daff
parent 6901dfc3
Loading
Loading
Loading
Loading
+19 −25
Original line number Diff line number Diff line
@@ -510,7 +510,7 @@ public class EmergencyNumberTracker extends Handler {

            if (((eccInfo.normalRoutingMncs).length != 0)
                    && (eccInfo.normalRoutingMncs[0].length() > 0)) {
                emergencyCallRouting = EmergencyNumber.EMERGENCY_CALL_ROUTING_EMERGENCY;
                emergencyCallRouting = EmergencyNumber.EMERGENCY_CALL_ROUTING_UNKNOWN;

                for (String routingMnc : eccInfo.normalRoutingMncs) {
                    boolean mncExist = normalRoutedNumbers.containsKey(routingMnc);
@@ -815,17 +815,8 @@ public class EmergencyNumberTracker extends Handler {
     */
    private boolean shouldAdjustForRouting() {
        if (!shouldEmergencyNumberRoutingFromDbBeIgnored() && !mNormalRoutedNumbers.isEmpty()) {
            CellIdentity cellIdentity = mPhone.getCurrentCellIdentity();
            if (cellIdentity != null) {
                String networkMnc = cellIdentity.getMncString();
                if (mNormalRoutedNumbers.containsKey(networkMnc)) {
                    Set<String> phoneNumbers = mNormalRoutedNumbers.get(networkMnc);
                    if (phoneNumbers != null && !phoneNumbers.isEmpty()) {
            return true;
        }
                }
            }
        }
        return false;
    }

@@ -837,30 +828,33 @@ public class EmergencyNumberTracker extends Handler {
        CellIdentity cellIdentity = mPhone.getCurrentCellIdentity();
        if (cellIdentity != null) {
            String networkMnc = cellIdentity.getMncString();

            Set<String> normalRoutedPhoneNumbers = mNormalRoutedNumbers.get(networkMnc);
            if (normalRoutedPhoneNumbers == null || normalRoutedPhoneNumbers.isEmpty()) {
                return emergencyNumbers;
            }
            Set<String> normalRoutedPhoneNumbersWithPrefix = new ArraySet<String>();

            if (normalRoutedPhoneNumbers != null && !normalRoutedPhoneNumbers.isEmpty()) {
                for (String num : normalRoutedPhoneNumbers) {
                    Set<String> phoneNumbersWithPrefix = addPrefixToEmergencyNumber(num);
                    if (phoneNumbersWithPrefix != null && !phoneNumbersWithPrefix.isEmpty()) {
                        normalRoutedPhoneNumbersWithPrefix.addAll(phoneNumbersWithPrefix);
                    }
                }
            }
            List<EmergencyNumber> adjustedEmergencyNumberList = new ArrayList<>();
            int routing;
            String mnc;
            for (EmergencyNumber num : emergencyNumbers) {
                routing = num.getEmergencyCallRouting();
                mnc = num.getMnc();
                if (num.isFromSources(EmergencyNumber.EMERGENCY_NUMBER_SOURCE_DATABASE)
                        && (normalRoutedPhoneNumbers.contains(num.getNumber())
                        || (normalRoutedPhoneNumbersWithPrefix.contains(num.getNumber())))) {
                if (num.isFromSources(EmergencyNumber.EMERGENCY_NUMBER_SOURCE_DATABASE)) {
                    if ((normalRoutedPhoneNumbers != null
                            && normalRoutedPhoneNumbers.contains(num.getNumber()))
                            || normalRoutedPhoneNumbersWithPrefix.contains(num.getNumber())) {
                        routing = EmergencyNumber.EMERGENCY_CALL_ROUTING_NORMAL;
                        mnc = networkMnc;
                        logd("adjustRoutingForEmergencyNumbers for number" + num.getNumber());
                    } else if (routing == EmergencyNumber.EMERGENCY_CALL_ROUTING_UNKNOWN) {
                        routing = EmergencyNumber.EMERGENCY_CALL_ROUTING_EMERGENCY;
                    }
                }
                adjustedEmergencyNumberList.add(new EmergencyNumber(num.getNumber(),
                        num.getCountryIso(), mnc,
+53 −0
Original line number Diff line number Diff line
@@ -711,6 +711,59 @@ public class EmergencyNumberTrackerTest extends TelephonyTest {
                emergencyNumberTrackerMock.getEmergencyNumberList()));
    }

    @Test
    public void testUsingEmergencyNumberDatabaseWithRoutingInOOS() {
        doReturn(mMockContext).when(mPhone).getContext();
        doReturn(mContext.getAssets()).when(mMockContext).getAssets();
        doReturn(mResources).when(mMockContext).getResources();
        doReturn(false).when(mResources).getBoolean(
                com.android.internal.R.bool.ignore_emergency_number_routing_from_db);

        EmergencyNumberTracker emergencyNumberTrackerMock = new EmergencyNumberTracker(
                mPhone, mSimulatedCommands);
        emergencyNumberTrackerMock.sendMessage(
                emergencyNumberTrackerMock.obtainMessage(
                        1 /* EVENT_UNSOL_EMERGENCY_NUMBER_LIST */,
                        new AsyncResult(null, mEmergencyNumberListTestSample, null)));
        sendEmergencyNumberPrefix(emergencyNumberTrackerMock);
        emergencyNumberTrackerMock.updateEmergencyCountryIsoAllPhones("us");
        processAllMessages();

        // Check routing when cellidentity is null, which is oos
        doReturn(null).when(mPhone).getCurrentCellIdentity();
        EmergencyNumber emergencyNumber = new EmergencyNumber(
                CONFIG_EMERGENCY_NUMBER_ADDRESS, CONFIG_EMERGENCY_NUMBER_COUNTRY,
                    "", CONFIG_EMERGENCY_NUMBER_SERVICE_CATEGORIES,
                            CONFIG_EMERGENCY_NUMBER_SERVICE_URNS,
                                    EmergencyNumber.EMERGENCY_NUMBER_SOURCE_DATABASE,
                                            EmergencyNumber.EMERGENCY_CALL_ROUTING_UNKNOWN);
        assertTrue(hasDbEmergencyNumber(emergencyNumber,
                emergencyNumberTrackerMock.getEmergencyNumberList()));

        // Check routing when cellidentity is 04, which is not part of normal routing mncs
        doReturn(mCellIdentity).when(mPhone).getCurrentCellIdentity();
        doReturn("04").when(mCellIdentity).getMncString();
        emergencyNumber = new EmergencyNumber(
                CONFIG_EMERGENCY_NUMBER_ADDRESS, CONFIG_EMERGENCY_NUMBER_COUNTRY,
                    "", CONFIG_EMERGENCY_NUMBER_SERVICE_CATEGORIES,
                            CONFIG_EMERGENCY_NUMBER_SERVICE_URNS,
                                    EmergencyNumber.EMERGENCY_NUMBER_SOURCE_DATABASE,
                                            EmergencyNumber.EMERGENCY_CALL_ROUTING_EMERGENCY);
        assertTrue(hasDbEmergencyNumber(emergencyNumber,
                emergencyNumberTrackerMock.getEmergencyNumberList()));

        // Check routing when cellidentity is 05, which is part of normal routing mncs
        doReturn("05").when(mCellIdentity).getMncString();
        emergencyNumber = new EmergencyNumber(
                CONFIG_EMERGENCY_NUMBER_ADDRESS, CONFIG_EMERGENCY_NUMBER_COUNTRY,
                    "05", CONFIG_EMERGENCY_NUMBER_SERVICE_CATEGORIES,
                            CONFIG_EMERGENCY_NUMBER_SERVICE_URNS,
                                    EmergencyNumber.EMERGENCY_NUMBER_SOURCE_DATABASE,
                                            EmergencyNumber.EMERGENCY_CALL_ROUTING_NORMAL);
        assertTrue(hasDbEmergencyNumber(emergencyNumber,
                emergencyNumberTrackerMock.getEmergencyNumberList()));
    }

    /**
     * Test OTA Emergency Number Database Update Status.
     */