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

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

Merge "(Emergency Call Improvement) Seperated codes related to hal version below & above 1.4"

parents 4f3470c3 2a31e7f3
Loading
Loading
Loading
Loading
+58 −48
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.internal.telephony.emergency;

import android.annotation.NonNull;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
@@ -100,6 +101,7 @@ public class EmergencyNumberTracker extends Handler {
    private String mCountryIso;
    private String mLastKnownEmergencyCountryIso = "";
    private int mCurrentDatabaseVersion = INVALID_DATABASE_VERSION;
    private boolean mIsHalVersionLessThan1Dot4 = false;
    /**
     * Indicates if the country iso is set by another subscription.
     * @hide
@@ -188,6 +190,8 @@ public class EmergencyNumberTracker extends Handler {
            filter.addAction(TelephonyManager.ACTION_NETWORK_COUNTRY_CHANGED);

            mPhone.getContext().registerReceiver(mIntentReceiver, filter);

            mIsHalVersionLessThan1Dot4 = mPhone.getHalVersion().lessOrEqual(new HalVersion(1, 3));
        } else {
            loge("mPhone is null.");
        }
@@ -841,29 +845,44 @@ public class EmergencyNumberTracker extends Handler {
     */
    private List<EmergencyNumber> getEmergencyNumberListFromEccList() {
        List<EmergencyNumber> emergencyNumberList = new ArrayList<>();

        if (mIsHalVersionLessThan1Dot4) {
            emergencyNumberList.addAll(getEmergencyNumberListFromEccListForHalv1_3());
        }
        String emergencyNumbers = ((isSimAbsent()) ? "112,911,000,08,110,118,119,999" : "112,911");
        for (String emergencyNum : emergencyNumbers.split(",")) {
            emergencyNumberList.add(getLabeledEmergencyNumberForEcclist(emergencyNum));
        }
        if (mEmergencyNumberPrefix.length != 0) {
            emergencyNumberList.addAll(getEmergencyNumberListWithPrefix(emergencyNumberList));
        }
        EmergencyNumber.mergeSameNumbersInEmergencyNumberList(emergencyNumberList);
        return emergencyNumberList;
    }

    private String getEmergencyNumberListForHalv1_3() {
        int slotId = SubscriptionController.getInstance().getSlotIndex(mPhone.getSubId());

        String ecclist = (slotId <= 0) ? "ril.ecclist" : ("ril.ecclist" + slotId);
        String emergencyNumbers = SystemProperties.get(ecclist, "");

        if (TextUtils.isEmpty(emergencyNumbers)) {
            // then read-only ecclist property since old RIL only uses this
            emergencyNumbers = SystemProperties.get("ro.ril.ecclist");
        }
        if (!TextUtils.isEmpty(emergencyNumbers)) {
            // searches through the comma-separated list for a match,
            // return true if one is found.
            for (String emergencyNum : emergencyNumbers.split(",")) {
                emergencyNumberList.add(getLabeledEmergencyNumberForEcclist(emergencyNum));
            }
        logd(ecclist + " emergencyNumbers: " + emergencyNumbers);
        return emergencyNumbers;
    }
        emergencyNumbers = ((isSimAbsent()) ? "112,911,000,08,110,118,119,999" : "112,911");

    private List<EmergencyNumber> getEmergencyNumberListFromEccListForHalv1_3() {
        List<EmergencyNumber> emergencyNumberList = new ArrayList<>();
        String emergencyNumbers = getEmergencyNumberListForHalv1_3();

        if (!TextUtils.isEmpty(emergencyNumbers)) {
            for (String emergencyNum : emergencyNumbers.split(",")) {
                emergencyNumberList.add(getLabeledEmergencyNumberForEcclist(emergencyNum));
            }
        if (mEmergencyNumberPrefix.length != 0) {
            emergencyNumberList.addAll(getEmergencyNumberListWithPrefix(emergencyNumberList));
        }
        EmergencyNumber.mergeSameNumbersInEmergencyNumberList(emergencyNumberList);
        return emergencyNumberList;
    }

@@ -899,7 +918,7 @@ public class EmergencyNumberTracker extends Handler {
    }

    private boolean isEmergencyNumberFromDatabase(String number) {
        if (!mPhone.getHalVersion().greaterOrEqual(new HalVersion(1, 4))) {
        if (mEmergencyNumberListFromDatabase.isEmpty()) {
            return false;
        }
        number = PhoneNumberUtils.stripSeparators(number);
@@ -962,42 +981,14 @@ public class EmergencyNumberTracker extends Handler {
        /// @}

        String emergencyNumbers = "";
        int slotId = SubscriptionController.getInstance().getSlotIndex(mPhone.getSubId());

        String ecclist = null;
        String countryIso = getLastKnownEmergencyCountryIso();
        logd("country:" + countryIso);

        if (!mPhone.getHalVersion().greaterOrEqual(new HalVersion(1, 4))) {
            //only use ril ecc list for older devices with HAL < 1.4
            // check read-write ecclist property first
            ecclist = (slotId <= 0) ? "ril.ecclist" : ("ril.ecclist" + slotId);
            emergencyNumbers = SystemProperties.get(ecclist, "");

            logd("slotId:" + slotId + " country:" + countryIso + " emergencyNumbers: "
                + emergencyNumbers);

            if (TextUtils.isEmpty(emergencyNumbers)) {
                // then read-only ecclist property since old RIL only uses this
                emergencyNumbers = SystemProperties.get("ro.ril.ecclist");
            }
        if (mIsHalVersionLessThan1Dot4) {
            emergencyNumbers = getEmergencyNumberListForHalv1_3();

            if (!TextUtils.isEmpty(emergencyNumbers)) {
                // searches through the comma-separated list for a match,
                // return true if one is found.
                for (String emergencyNum : emergencyNumbers.split(",")) {
                    if (number.equals(emergencyNum)) {
                        return true;
                    } else {
                        for (String prefix : mEmergencyNumberPrefix) {
                            if (number.equals(prefix + emergencyNum)) {
                                return true;
                            }
                        }
                    }

                }
                // no matches found against the list!
                return false;
                return isEmergencyNumberFromEccListForHalv1_3(number, emergencyNumbers);
            }
        }

@@ -1041,6 +1032,25 @@ public class EmergencyNumberTracker extends Handler {
        return false;
    }

    private boolean isEmergencyNumberFromEccListForHalv1_3(@NonNull String number,
            @NonNull String emergencyNumbers) {
        // searches through the comma-separated list for a match,
        // return true if one is found.
        for (String emergencyNum : emergencyNumbers.split(",")) {
            if (number.equals(emergencyNum)) {
                return true;
            } else {
                for (String prefix : mEmergencyNumberPrefix) {
                    if (number.equals(prefix + emergencyNum)) {
                        return true;
                    }
                }
            }
        }
        // no matches found against the list!
        return false;
    }

    /**
     * Execute command for updating emergency number for test mode.
     */
@@ -1080,7 +1090,7 @@ public class EmergencyNumberTracker extends Handler {

    private List<EmergencyNumber> getEmergencyNumberListFromEccListDatabaseAndTest() {
        List<EmergencyNumber> mergedEmergencyNumberList = getEmergencyNumberListFromEccList();
        if (mPhone.getHalVersion().greaterOrEqual(new HalVersion(1, 4))) {
        if (!mEmergencyNumberListFromDatabase.isEmpty()) {
            loge("getEmergencyNumberListFromEccListDatabaseAndTest: radio indication is"
                    + " unavailable in 1.4 HAL.");
            mergedEmergencyNumberList.addAll(mEmergencyNumberListFromDatabase);
@@ -1175,10 +1185,10 @@ public class EmergencyNumberTracker extends Handler {
        ipw.decreaseIndent();
        ipw.println(" ========================================= ");

        int slotId = SubscriptionController.getInstance().getSlotIndex(mPhone.getSubId());
        String ecclist = (slotId <= 0) ? "ril.ecclist" : ("ril.ecclist" + slotId);
        ipw.println(" ril.ecclist: " + SystemProperties.get(ecclist, ""));
        if (mIsHalVersionLessThan1Dot4) {
            getEmergencyNumberListForHalv1_3();
            ipw.println(" ========================================= ");
        }

        ipw.println("Emergency Number List for Phone" + "(" + mPhone.getPhoneId() + ")");
        ipw.increaseIndent();
+15 −3
Original line number Diff line number Diff line
@@ -26,6 +26,8 @@ import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;

import android.content.Context;
import android.content.res.AssetManager;
import android.os.AsyncResult;
import android.os.Environment;
import android.os.ParcelFileDescriptor;
@@ -115,6 +117,7 @@ public class EmergencyNumberTrackerTest extends TelephonyTest {

    private File mLocalDownloadDirectory;
    private ShortNumberInfo mShortNumberInfo;
    private Context mMockContext;

    @Before
    public void setUp() throws Exception {
@@ -124,14 +127,17 @@ public class EmergencyNumberTrackerTest extends TelephonyTest {
        mSubControllerMock = mock(SubscriptionController.class);
        mPhone2 = mock(Phone.class);
        mContext = InstrumentationRegistry.getTargetContext();
        mMockContext = mock(Context.class);

        doReturn(mContext).when(mPhone).getContext();
        doReturn(0).when(mPhone).getPhoneId();
        doReturn(SUB_ID_PHONE_1).when(mPhone).getSubId();
        doReturn(new HalVersion(1, 4)).when(mPhone).getHalVersion();

        doReturn(mContext).when(mPhone2).getContext();
        doReturn(1).when(mPhone2).getPhoneId();
        doReturn(SUB_ID_PHONE_2).when(mPhone2).getSubId();
        doReturn(new HalVersion(1, 4)).when(mPhone2).getHalVersion();

        initializeEmergencyNumberListTestSamples();
        mEmergencyNumberTrackerMock = new EmergencyNumberTracker(mPhone, mSimulatedCommands);
@@ -142,6 +148,9 @@ public class EmergencyNumberTrackerTest extends TelephonyTest {
        // Copy an OTA file to the test directory to similate the OTA mechanism
        simulateOtaEmergencyNumberDb(mPhone);

        AssetManager am = new AssetManager.Builder().build();
        doReturn(am).when(mMockContext).getAssets();

        processAllMessages();
        logd("EmergencyNumberTrackerTest -Setup!");
    }
@@ -481,13 +490,16 @@ public class EmergencyNumberTrackerTest extends TelephonyTest {
    @Test
    public void testUsingEmergencyNumberDatabaseWheneverHal_1_3() {
        doReturn(new HalVersion(1, 3)).when(mPhone).getHalVersion();
        doReturn(mMockContext).when(mPhone).getContext();
        EmergencyNumberTracker emergencyNumberTracker = new EmergencyNumberTracker(
                mPhone, mSimulatedCommands);

        sendEmergencyNumberPrefix(mEmergencyNumberTrackerMock);
        mEmergencyNumberTrackerMock.updateEmergencyCountryIsoAllPhones("us");
        sendEmergencyNumberPrefix(emergencyNumberTracker);
        emergencyNumberTracker.updateEmergencyCountryIsoAllPhones("us");
        processAllMessages();

        boolean hasDatabaseNumber = false;
        for (EmergencyNumber number : mEmergencyNumberTrackerMock.getEmergencyNumberList()) {
        for (EmergencyNumber number : emergencyNumberTracker.getEmergencyNumberList()) {
            if (number.isFromSources(EmergencyNumber.EMERGENCY_NUMBER_SOURCE_DATABASE)) {
                hasDatabaseNumber = true;
                break;