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

Commit f6a7fceb authored by Parvathy Shanmugam's avatar Parvathy Shanmugam Committed by Android (Google) Code Review
Browse files

Merge "Send routing type as unknown in oos"

parents 2f8bce23 da5a0757
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.
     */