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

Commit 942d2d28 authored by sqian's avatar sqian
Browse files

Try to label emergency number in ril.ecclist

We want to keep conservative by not simply converting emergency service
types information collected from public website (emergency service
categories from neither 3gpp nor carrier network requirement) to emergency
service categories in vendor-implemented IRadio.emergencyDial.

We do want to support display-purpose of emergency service categories
labels as part of the return value of our TelephonyManager API. This
should also apply to old devices with <=1.3 HAL.

These labels come from the android platform emergency number database;
for old Hal, we cannot merge Android platform emergency number database
due to a complicated consideration of other factors in Emergency Function
Framework Support. To achieve that, we want to merge the labels of
emergency service categories if the number appear in the ril.ecclist.

Bug: 124225645
Test: Treehugger
Change-Id: Iaa6b50b8cecf368f19077f9fde9e189f9ce10823
Merged-In: Iaa6b50b8cecf368f19077f9fde9e189f9ce10823
(cherry picked from commit 6f1afb87)
parent 53da6fd6
Loading
Loading
Loading
Loading
+17 −8
Original line number Diff line number Diff line
@@ -467,18 +467,12 @@ public class EmergencyNumberTracker extends Handler {
            // searches through the comma-separated list for a match,
            // return true if one is found.
            for (String emergencyNum : emergencyNumbers.split(",")) {
                emergencyNumberList.add(new EmergencyNumber(emergencyNum, "", "",
                        EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_UNSPECIFIED,
                        new ArrayList<String>(), 0,
                        EmergencyNumber.EMERGENCY_CALL_ROUTING_UNKNOWN));
                emergencyNumberList.add(getLabeledEmergencyNumberForEcclist(emergencyNum));
            }
        }
        emergencyNumbers = ((slotId < 0) ? "112,911,000,08,110,118,119,999" : "112,911");
        for (String emergencyNum : emergencyNumbers.split(",")) {
            emergencyNumberList.add(new EmergencyNumber(emergencyNum, "", "",
                    EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_UNSPECIFIED,
                    new ArrayList<String>(), 0,
                    EmergencyNumber.EMERGENCY_CALL_ROUTING_UNKNOWN));
            emergencyNumberList.add(getLabeledEmergencyNumberForEcclist(emergencyNum));
        }
        EmergencyNumber.mergeSameNumbersInEmergencyNumberList(emergencyNumberList);
        return emergencyNumberList;
@@ -493,6 +487,21 @@ public class EmergencyNumberTracker extends Handler {
        return false;
    }

    private EmergencyNumber getLabeledEmergencyNumberForEcclist(String number) {
        for (EmergencyNumber num : mEmergencyNumberListFromDatabase) {
            if (num.getNumber().equals(number)) {
                return new EmergencyNumber(number, mCountryIso.toLowerCase(), "",
                        num.getEmergencyServiceCategoryBitmask(),
                        new ArrayList<String>(), EmergencyNumber.EMERGENCY_NUMBER_SOURCE_DATABASE,
                        EmergencyNumber.EMERGENCY_CALL_ROUTING_UNKNOWN);
            }
        }
        return new EmergencyNumber(number, "", "",
                EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_UNSPECIFIED,
                new ArrayList<String>(), 0,
                EmergencyNumber.EMERGENCY_CALL_ROUTING_UNKNOWN);
    }

    /**
     * Back-up old logics for {@link PhoneNumberUtils#isEmergencyNumberInternal} for legacy
     * and deprecate purpose.