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

Commit 90768353 authored by sqian's avatar sqian
Browse files

Strip emergency number format and check prefix in ecclist

Test: Manual
Bug: 125548678
Change-Id: I17adfe80c7e8bd7c098b288108c096cfa9cbb10f
parent 2f805878
Loading
Loading
Loading
Loading
+51 −2
Original line number Diff line number Diff line
@@ -369,6 +369,7 @@ public class EmergencyNumberTracker extends Handler {
        if (number == null) {
            return false;
        }
        number = PhoneNumberUtils.stripSeparators(number);
        if (!mEmergencyNumberListFromRadio.isEmpty()) {
            for (EmergencyNumber num : mEmergencyNumberList) {
                // According to com.android.i18n.phonenumbers.ShortNumberInfo, in
@@ -404,6 +405,7 @@ public class EmergencyNumberTracker extends Handler {
     * @return the {@link EmergencyNumber} for the corresponding emergency number address.
     */
    public EmergencyNumber getEmergencyNumber(String emergencyNumber) {
        emergencyNumber = PhoneNumberUtils.stripSeparators(emergencyNumber);
        for (EmergencyNumber num : getEmergencyNumberList()) {
            if (num.getNumber().equals(emergencyNumber)) {
                return num;
@@ -422,6 +424,7 @@ public class EmergencyNumberTracker extends Handler {
     * @return the emergency service categories for the corresponding emergency number.
     */
    public @EmergencyServiceCategories int getEmergencyServiceCategories(String emergencyNumber) {
        emergencyNumber = PhoneNumberUtils.stripSeparators(emergencyNumber);
        for (EmergencyNumber num : getEmergencyNumberList()) {
            if (num.getNumber().equals(emergencyNumber)) {
                if (num.isFromSources(EmergencyNumber.EMERGENCY_NUMBER_SOURCE_NETWORK_SIGNALING)
@@ -441,6 +444,7 @@ public class EmergencyNumberTracker extends Handler {
     * @return the emergency call routing for the corresponding emergency number.
     */
    public @EmergencyCallRouting int getEmergencyCallRouting(String emergencyNumber) {
        emergencyNumber = PhoneNumberUtils.stripSeparators(emergencyNumber);
        for (EmergencyNumber num : getEmergencyNumberList()) {
            if (num.getNumber().equals(emergencyNumber)) {
                if (num.isFromSources(EmergencyNumber.EMERGENCY_NUMBER_SOURCE_DATABASE)) {
@@ -482,6 +486,7 @@ public class EmergencyNumberTracker extends Handler {
    }

    private boolean isEmergencyNumberForTest(String number) {
        number = PhoneNumberUtils.stripSeparators(number);
        for (EmergencyNumber num : mEmergencyNumberListFromTestMode) {
            if (num.getNumber().equals(number)) {
                return true;
@@ -491,6 +496,7 @@ public class EmergencyNumberTracker extends Handler {
    }

    private EmergencyNumber getLabeledEmergencyNumberForEcclist(String number) {
        number = PhoneNumberUtils.stripSeparators(number);
        for (EmergencyNumber num : mEmergencyNumberListFromDatabase) {
            if (num.getNumber().equals(number)) {
                return new EmergencyNumber(number, mCountryIso.toLowerCase(), "",
@@ -554,10 +560,22 @@ public class EmergencyNumberTracker extends Handler {
                if (useExactMatch || "br".equalsIgnoreCase(mCountryIso)) {
                    if (number.equals(emergencyNum)) {
                        return true;
                    } else {
                        for (String prefix : mEmergencyNumberPrefix) {
                            if (number.equals(prefix + emergencyNum)) {
                                return true;
                            }
                        }
                    }
                } else {
                    if (number.startsWith(emergencyNum)) {
                        return true;
                    } else {
                        for (String prefix : mEmergencyNumberPrefix) {
                            if (number.equals(prefix + emergencyNum)) {
                                return true;
                            }
                        }
                    }
                }
            }
@@ -577,10 +595,22 @@ public class EmergencyNumberTracker extends Handler {
            if (useExactMatch) {
                if (number.equals(emergencyNum)) {
                    return true;
                } else {
                    for (String prefix : mEmergencyNumberPrefix) {
                        if (number.equals(prefix + emergencyNum)) {
                            return true;
                        }
                    }
                }
            } else {
                if (number.startsWith(emergencyNum)) {
                    return true;
                } else {
                    for (String prefix : mEmergencyNumberPrefix) {
                        if (number.equals(prefix + emergencyNum)) {
                            return true;
                        }
                    }
                }
            }
        }
@@ -589,9 +619,28 @@ public class EmergencyNumberTracker extends Handler {
        if (mCountryIso != null) {
            ShortNumberInfo info = ShortNumberInfo.getInstance();
            if (useExactMatch) {
                return info.isEmergencyNumber(number, mCountryIso.toUpperCase());
                if (info.isEmergencyNumber(number, mCountryIso.toUpperCase())) {
                    return true;
                } else {
                    for (String prefix : mEmergencyNumberPrefix) {
                        if (info.isEmergencyNumber(prefix + number, mCountryIso.toUpperCase())) {
                            return true;
                        }
                    }
                }
                return false;
            } else {
                return info.connectsToEmergencyNumber(number, mCountryIso.toUpperCase());
                if (info.connectsToEmergencyNumber(number, mCountryIso.toUpperCase())) {
                    return true;
                } else {
                    for (String prefix : mEmergencyNumberPrefix) {
                        if (info.connectsToEmergencyNumber(prefix + number,
                                mCountryIso.toUpperCase())) {
                            return true;
                        }
                    }
                }
                return false;
            }
        }