Refactor functions into EmergencyNumberTracker

Test: Treehugger
Bug: 112657134
Change-Id: Ibb5187d245ba9518cf517a64eee26f4169d4bf38
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index 7cbf80d..3760f24 100755
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -69,7 +69,6 @@
 import android.telephony.NeighboringCellInfo;
 import android.telephony.NetworkScanRequest;
 import android.telephony.PhoneNumberRange;
-import android.telephony.PhoneNumberUtils;
 import android.telephony.RadioAccessFamily;
 import android.telephony.Rlog;
 import android.telephony.ServiceState;
@@ -153,11 +152,9 @@
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
-import java.util.Set;
 
 /**
  * Implementation of the ITelephony interface.
@@ -5973,12 +5970,16 @@
         }
         final long identity = Binder.clearCallingIdentity();
         try {
-            Map<Integer, List<EmergencyNumber>> results = getEmergencyNumberListInternal();
-            // Use ecclist to construct Emergency number list for backward compatibality
-            if (results.isEmpty()) {
-                results = getEmergencyNumberListFromEccList();
+            Map<Integer, List<EmergencyNumber>> emergencyNumberListInternal = new HashMap<>();
+            for (Phone phone: PhoneFactory.getPhones()) {
+                if (phone.getEmergencyNumberTracker() != null
+                        && phone.getEmergencyNumberTracker().getEmergencyNumberList() != null) {
+                    emergencyNumberListInternal.put(
+                            phone.getSubId(),
+                            phone.getEmergencyNumberTracker().getEmergencyNumberList());
+                }
             }
-            return results;
+            return emergencyNumberListInternal;
         } finally {
             Binder.restoreCallingIdentity(identity);
         }
@@ -5994,40 +5995,14 @@
         }
         final long identity = Binder.clearCallingIdentity();
         try {
-            Map<Integer, List<EmergencyNumber>> emergencyNumberLists =
-                    getEmergencyNumberListInternal();
-
-            String defaultCountryIso = getNetworkCountryIsoForPhone(defaultPhone.getPhoneId());
-
-            if (!emergencyNumberLists.isEmpty()) {
-                for (List<EmergencyNumber> emergencyNumberList : emergencyNumberLists.values()) {
-                    if (emergencyNumberList != null) {
-                        for (EmergencyNumber num : emergencyNumberList) {
-                            // According to com.android.i18n.phonenumbers.ShortNumberInfo, in
-                            // these countries, if extra digits are added to an emergency number,
-                            // it no longer connects to the emergency service.
-                            Set<String> countriesRequiredForExactMatch = new HashSet<>();
-                            countriesRequiredForExactMatch.add("br");
-                            countriesRequiredForExactMatch.add("cl");
-                            countriesRequiredForExactMatch.add("ni");
-                            if (exactMatch || countriesRequiredForExactMatch.contains(
-                                    defaultCountryIso)) {
-                                if (num.getNumber().equals(number)) {
-                                    return true;
-                                }
-                            } else {
-                                if (number.startsWith(num.getNumber())) {
-                                    return true;
-                                }
-                            }
-
-                        }
+            for (Phone phone: PhoneFactory.getPhones()) {
+                if (phone.getEmergencyNumberTracker() != null
+                        && phone.getEmergencyNumberTracker() != null) {
+                    if (phone.getEmergencyNumberTracker().isEmergencyNumber(
+                            number, exactMatch)) {
+                        return true;
                     }
                 }
-            } else {
-                // For backward compatibility for devices launched before Q
-                return PhoneNumberUtils.isEmergencyNumberInternal(number, exactMatch,
-                        defaultCountryIso);
             }
             return false;
         } finally {