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 {