Loading src/java/com/android/internal/telephony/GsmCdmaPhone.java +1 −2 Original line number Diff line number Diff line Loading @@ -1446,8 +1446,7 @@ public class GsmCdmaPhone extends Phone { // emergency number list on another SIM, but is not on theirs. In this case we will use the // emergency number list for this carrier's SIM only. if (useOnlyDialedSimEccList) { isEmergency = getEmergencyNumberTracker().isEmergencyNumber(dialString, true /* exactMatch */); isEmergency = getEmergencyNumberTracker().isEmergencyNumber(dialString); logi("dial; isEmergency=" + isEmergency + " (based on this phone only); globalIsEmergency=" + tm.isEmergencyNumber(dialString)); Loading src/java/com/android/internal/telephony/emergency/EmergencyNumberTracker.java +25 −83 Original line number Diff line number Diff line Loading @@ -712,7 +712,7 @@ public class EmergencyNumberTracker extends Handler { * * @return {@code true} if it is; {@code false} otherwise. */ public boolean isEmergencyNumber(String number, boolean exactMatch) { public boolean isEmergencyNumber(String number) { if (number == null) { return false; } Loading @@ -728,31 +728,14 @@ public class EmergencyNumberTracker extends Handler { if (!mEmergencyNumberListFromRadio.isEmpty()) { for (EmergencyNumber num : mEmergencyNumberList) { // 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. String countryIso = getLastKnownEmergencyCountryIso(); if (countryIso.equals("br") || countryIso.equals("cl") || countryIso.equals("ni")) { exactMatch = true; } else { exactMatch = false || exactMatch; } if (exactMatch) { if (num.getNumber().equals(number)) { logd("Found in mEmergencyNumberList [exact match] "); return true; } } else { if (number.startsWith(num.getNumber())) { logd("Found in mEmergencyNumberList [not exact match] "); logd("Found in mEmergencyNumberList"); return true; } } } return false; } else { boolean inEccList = isEmergencyNumberFromEccList(number, exactMatch); boolean inEccList = isEmergencyNumberFromEccList(number); boolean inEmergencyNumberDb = isEmergencyNumberFromDatabase(number); boolean inEmergencyNumberTestList = isEmergencyNumberForTest(number); logd("Search results - inRilEccList:" + inEccList Loading Loading @@ -954,7 +937,7 @@ public class EmergencyNumberTracker extends Handler { * Back-up old logics for {@link PhoneNumberUtils#isEmergencyNumberInternal} for legacy * and deprecate purpose. */ private boolean isEmergencyNumberFromEccList(String number, boolean useExactMatch) { private boolean isEmergencyNumberFromEccList(String number) { // If the number passed in is null, just return false: if (number == null) return false; Loading Loading @@ -1001,11 +984,6 @@ 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(",")) { // 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. if (useExactMatch || countryIso.equals("br") || countryIso.equals("cl") || countryIso.equals("ni")) { if (number.equals(emergencyNum)) { return true; } else { Loading @@ -1015,17 +993,7 @@ public class EmergencyNumberTracker extends Handler { } } } } else { if (number.startsWith(emergencyNum)) { return true; } else { for (String prefix : mEmergencyNumberPrefix) { if (number.startsWith(prefix + emergencyNum)) { return true; } } } } } // no matches found against the list! return false; Loading @@ -1040,7 +1008,6 @@ public class EmergencyNumberTracker extends Handler { emergencyNumbers = ((isSimAbsent()) ? "112,911,000,08,110,118,119,999" : "112,911"); for (String emergencyNum : emergencyNumbers.split(",")) { if (useExactMatch) { if (number.equals(emergencyNum)) { return true; } else { Loading @@ -1050,24 +1017,12 @@ public class EmergencyNumberTracker extends Handler { } } } } else { if (number.startsWith(emergencyNum)) { return true; } else { for (String prefix : mEmergencyNumberPrefix) { if (number.equals(prefix + emergencyNum)) { return true; } } } } } if (isSimAbsent()) { // No ecclist system property, so use our own list. if (countryIso != null) { ShortNumberInfo info = ShortNumberInfo.getInstance(); if (useExactMatch) { if (info.isEmergencyNumber(number, countryIso.toUpperCase())) { return true; } else { Loading @@ -1078,19 +1033,6 @@ public class EmergencyNumberTracker extends Handler { } } return false; } else { if (info.connectsToEmergencyNumber(number, countryIso.toUpperCase())) { return true; } else { for (String prefix : mEmergencyNumberPrefix) { if (info.connectsToEmergencyNumber(prefix + number, countryIso.toUpperCase())) { return true; } } } return false; } } } Loading @@ -1109,7 +1051,7 @@ public class EmergencyNumberTracker extends Handler { */ private void updateEmergencyNumberListTestModeAndNotify(int action, EmergencyNumber num) { if (action == ADD_EMERGENCY_NUMBER_TEST_MODE) { if (!isEmergencyNumber(num.getNumber(), true)) { if (!isEmergencyNumber(num.getNumber())) { mEmergencyNumberListFromTestMode.add(num); } } else if (action == RESET_EMERGENCY_NUMBER_TEST_MODE) { Loading tests/telephonytests/src/com/android/internal/telephony/GsmCdmaPhoneTest.java +1 −1 Original line number Diff line number Diff line Loading @@ -1606,7 +1606,7 @@ public class GsmCdmaPhoneTest extends TelephonyTest { doReturn(true).when(mTelephonyManager).isEmergencyNumber(anyString()); doReturn(isEmergencyPerDialedSim).when(mEmergencyNumberTracker).isEmergencyNumber( anyString(), anyBoolean()); anyString()); mPhoneUT.setImsPhone(mImsPhone); } Loading tests/telephonytests/src/com/android/internal/telephony/PhoneNumberUtilsTest.java +8 −36 Original line number Diff line number Diff line Loading @@ -645,55 +645,27 @@ public class PhoneNumberUtilsTest { @Test @Ignore public void testIsEmergencyNumber() { // There are two parallel sets of tests here: one for the // regular isEmergencyNumber() method, and the other for // isPotentialEmergencyNumber(). // // (The difference is that isEmergencyNumber() will return true // only if the specified number exactly matches an actual // emergency number, but isPotentialEmergencyNumber() will // return true if the specified number simply starts with the // same digits as any actual emergency number.) // emergency number // Tests for isEmergencyNumber(): assertTrue(PhoneNumberUtils.isEmergencyNumber("911", "US")); assertTrue(PhoneNumberUtils.isEmergencyNumber("112", "US")); assertTrue(PhoneNumberUtils.isEmergencyNumber("911")); assertTrue(PhoneNumberUtils.isEmergencyNumber("112")); // The next two numbers are not valid phone numbers in the US, // so do not count as emergency numbers (but they *are* "potential" // emergency numbers; see below.) assertFalse(PhoneNumberUtils.isEmergencyNumber("91112345", "US")); assertFalse(PhoneNumberUtils.isEmergencyNumber("11212345", "US")); assertFalse(PhoneNumberUtils.isEmergencyNumber("91112345")); assertFalse(PhoneNumberUtils.isEmergencyNumber("11212345")); // A valid mobile phone number from Singapore shouldn't be classified as an emergency number // in Singapore, as 911 is not an emergency number there. assertFalse(PhoneNumberUtils.isEmergencyNumber("91121234", "SG")); // A valid fixed-line phone number from Brazil shouldn't be classified as an emergency number // in Brazil, as 112 is not an emergency number there. assertFalse(PhoneNumberUtils.isEmergencyNumber("1121234567", "BR")); // A valid local phone number from Brazil shouldn't be classified as an emergency number in // Brazil. assertFalse(PhoneNumberUtils.isEmergencyNumber("91112345", "BR")); // Tests for isPotentialEmergencyNumber(): // These first two are obviously emergency numbers: assertTrue(PhoneNumberUtils.isPotentialEmergencyNumber("911", "US")); assertTrue(PhoneNumberUtils.isPotentialEmergencyNumber("112", "US")); // The next two numbers are not valid phone numbers in the US, but can be used to trick the // system to dial 911 and 112, which are emergency numbers in the US. For the purpose of // addressing that, they are also classified as "potential" emergency numbers in the US. assertTrue(PhoneNumberUtils.isPotentialEmergencyNumber("91112345", "US")); assertTrue(PhoneNumberUtils.isPotentialEmergencyNumber("11212345", "US")); // A valid mobile phone number from Singapore shouldn't be classified as an emergency number // in Singapore, as 911 is not an emergency number there. // This test fails on devices that have ecclist property preloaded with 911. // assertFalse(PhoneNumberUtils.isPotentialEmergencyNumber("91121234", "SG")); assertFalse(PhoneNumberUtils.isEmergencyNumber("91121234")); // A valid fixed-line phone number from Brazil shouldn't be classified as an emergency number // in Brazil, as 112 is not an emergency number there. assertFalse(PhoneNumberUtils.isPotentialEmergencyNumber("1121234567", "BR")); assertFalse(PhoneNumberUtils.isEmergencyNumber("1121234567")); // A valid local phone number from Brazil shouldn't be classified as an emergency number in // Brazil. assertFalse(PhoneNumberUtils.isPotentialEmergencyNumber("91112345", "BR")); assertFalse(PhoneNumberUtils.isEmergencyNumber("91112345")); } @SmallTest Loading tests/telephonytests/src/com/android/internal/telephony/emergency/EmergencyNumberTrackerTest.java +2 −2 Original line number Diff line number Diff line Loading @@ -388,7 +388,7 @@ public class EmergencyNumberTrackerTest extends TelephonyTest { processAllMessages(); replaceInstance(ShortNumberInfo.class, "INSTANCE", null, mShortNumberInfo); mEmergencyNumberTrackerMock.isEmergencyNumber(NON_3GPP_EMERGENCY_TEST_NUMBER, true); mEmergencyNumberTrackerMock.isEmergencyNumber(NON_3GPP_EMERGENCY_TEST_NUMBER); //verify that we fall back to shortnumber xml when there are no SIMs verify(mShortNumberInfo).isEmergencyNumber(NON_3GPP_EMERGENCY_TEST_NUMBER, "JP"); Loading Loading @@ -436,7 +436,7 @@ public class EmergencyNumberTrackerTest extends TelephonyTest { processAllMessages(); replaceInstance(ShortNumberInfo.class, "INSTANCE", null, mShortNumberInfo); mEmergencyNumberTrackerMock.isEmergencyNumber(NON_3GPP_EMERGENCY_TEST_NUMBER, true); mEmergencyNumberTrackerMock.isEmergencyNumber(NON_3GPP_EMERGENCY_TEST_NUMBER); //verify we do not use ShortNumber xml verify(mShortNumberInfo, never()).isEmergencyNumber(anyString(), anyString()); Loading Loading
src/java/com/android/internal/telephony/GsmCdmaPhone.java +1 −2 Original line number Diff line number Diff line Loading @@ -1446,8 +1446,7 @@ public class GsmCdmaPhone extends Phone { // emergency number list on another SIM, but is not on theirs. In this case we will use the // emergency number list for this carrier's SIM only. if (useOnlyDialedSimEccList) { isEmergency = getEmergencyNumberTracker().isEmergencyNumber(dialString, true /* exactMatch */); isEmergency = getEmergencyNumberTracker().isEmergencyNumber(dialString); logi("dial; isEmergency=" + isEmergency + " (based on this phone only); globalIsEmergency=" + tm.isEmergencyNumber(dialString)); Loading
src/java/com/android/internal/telephony/emergency/EmergencyNumberTracker.java +25 −83 Original line number Diff line number Diff line Loading @@ -712,7 +712,7 @@ public class EmergencyNumberTracker extends Handler { * * @return {@code true} if it is; {@code false} otherwise. */ public boolean isEmergencyNumber(String number, boolean exactMatch) { public boolean isEmergencyNumber(String number) { if (number == null) { return false; } Loading @@ -728,31 +728,14 @@ public class EmergencyNumberTracker extends Handler { if (!mEmergencyNumberListFromRadio.isEmpty()) { for (EmergencyNumber num : mEmergencyNumberList) { // 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. String countryIso = getLastKnownEmergencyCountryIso(); if (countryIso.equals("br") || countryIso.equals("cl") || countryIso.equals("ni")) { exactMatch = true; } else { exactMatch = false || exactMatch; } if (exactMatch) { if (num.getNumber().equals(number)) { logd("Found in mEmergencyNumberList [exact match] "); return true; } } else { if (number.startsWith(num.getNumber())) { logd("Found in mEmergencyNumberList [not exact match] "); logd("Found in mEmergencyNumberList"); return true; } } } return false; } else { boolean inEccList = isEmergencyNumberFromEccList(number, exactMatch); boolean inEccList = isEmergencyNumberFromEccList(number); boolean inEmergencyNumberDb = isEmergencyNumberFromDatabase(number); boolean inEmergencyNumberTestList = isEmergencyNumberForTest(number); logd("Search results - inRilEccList:" + inEccList Loading Loading @@ -954,7 +937,7 @@ public class EmergencyNumberTracker extends Handler { * Back-up old logics for {@link PhoneNumberUtils#isEmergencyNumberInternal} for legacy * and deprecate purpose. */ private boolean isEmergencyNumberFromEccList(String number, boolean useExactMatch) { private boolean isEmergencyNumberFromEccList(String number) { // If the number passed in is null, just return false: if (number == null) return false; Loading Loading @@ -1001,11 +984,6 @@ 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(",")) { // 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. if (useExactMatch || countryIso.equals("br") || countryIso.equals("cl") || countryIso.equals("ni")) { if (number.equals(emergencyNum)) { return true; } else { Loading @@ -1015,17 +993,7 @@ public class EmergencyNumberTracker extends Handler { } } } } else { if (number.startsWith(emergencyNum)) { return true; } else { for (String prefix : mEmergencyNumberPrefix) { if (number.startsWith(prefix + emergencyNum)) { return true; } } } } } // no matches found against the list! return false; Loading @@ -1040,7 +1008,6 @@ public class EmergencyNumberTracker extends Handler { emergencyNumbers = ((isSimAbsent()) ? "112,911,000,08,110,118,119,999" : "112,911"); for (String emergencyNum : emergencyNumbers.split(",")) { if (useExactMatch) { if (number.equals(emergencyNum)) { return true; } else { Loading @@ -1050,24 +1017,12 @@ public class EmergencyNumberTracker extends Handler { } } } } else { if (number.startsWith(emergencyNum)) { return true; } else { for (String prefix : mEmergencyNumberPrefix) { if (number.equals(prefix + emergencyNum)) { return true; } } } } } if (isSimAbsent()) { // No ecclist system property, so use our own list. if (countryIso != null) { ShortNumberInfo info = ShortNumberInfo.getInstance(); if (useExactMatch) { if (info.isEmergencyNumber(number, countryIso.toUpperCase())) { return true; } else { Loading @@ -1078,19 +1033,6 @@ public class EmergencyNumberTracker extends Handler { } } return false; } else { if (info.connectsToEmergencyNumber(number, countryIso.toUpperCase())) { return true; } else { for (String prefix : mEmergencyNumberPrefix) { if (info.connectsToEmergencyNumber(prefix + number, countryIso.toUpperCase())) { return true; } } } return false; } } } Loading @@ -1109,7 +1051,7 @@ public class EmergencyNumberTracker extends Handler { */ private void updateEmergencyNumberListTestModeAndNotify(int action, EmergencyNumber num) { if (action == ADD_EMERGENCY_NUMBER_TEST_MODE) { if (!isEmergencyNumber(num.getNumber(), true)) { if (!isEmergencyNumber(num.getNumber())) { mEmergencyNumberListFromTestMode.add(num); } } else if (action == RESET_EMERGENCY_NUMBER_TEST_MODE) { Loading
tests/telephonytests/src/com/android/internal/telephony/GsmCdmaPhoneTest.java +1 −1 Original line number Diff line number Diff line Loading @@ -1606,7 +1606,7 @@ public class GsmCdmaPhoneTest extends TelephonyTest { doReturn(true).when(mTelephonyManager).isEmergencyNumber(anyString()); doReturn(isEmergencyPerDialedSim).when(mEmergencyNumberTracker).isEmergencyNumber( anyString(), anyBoolean()); anyString()); mPhoneUT.setImsPhone(mImsPhone); } Loading
tests/telephonytests/src/com/android/internal/telephony/PhoneNumberUtilsTest.java +8 −36 Original line number Diff line number Diff line Loading @@ -645,55 +645,27 @@ public class PhoneNumberUtilsTest { @Test @Ignore public void testIsEmergencyNumber() { // There are two parallel sets of tests here: one for the // regular isEmergencyNumber() method, and the other for // isPotentialEmergencyNumber(). // // (The difference is that isEmergencyNumber() will return true // only if the specified number exactly matches an actual // emergency number, but isPotentialEmergencyNumber() will // return true if the specified number simply starts with the // same digits as any actual emergency number.) // emergency number // Tests for isEmergencyNumber(): assertTrue(PhoneNumberUtils.isEmergencyNumber("911", "US")); assertTrue(PhoneNumberUtils.isEmergencyNumber("112", "US")); assertTrue(PhoneNumberUtils.isEmergencyNumber("911")); assertTrue(PhoneNumberUtils.isEmergencyNumber("112")); // The next two numbers are not valid phone numbers in the US, // so do not count as emergency numbers (but they *are* "potential" // emergency numbers; see below.) assertFalse(PhoneNumberUtils.isEmergencyNumber("91112345", "US")); assertFalse(PhoneNumberUtils.isEmergencyNumber("11212345", "US")); assertFalse(PhoneNumberUtils.isEmergencyNumber("91112345")); assertFalse(PhoneNumberUtils.isEmergencyNumber("11212345")); // A valid mobile phone number from Singapore shouldn't be classified as an emergency number // in Singapore, as 911 is not an emergency number there. assertFalse(PhoneNumberUtils.isEmergencyNumber("91121234", "SG")); // A valid fixed-line phone number from Brazil shouldn't be classified as an emergency number // in Brazil, as 112 is not an emergency number there. assertFalse(PhoneNumberUtils.isEmergencyNumber("1121234567", "BR")); // A valid local phone number from Brazil shouldn't be classified as an emergency number in // Brazil. assertFalse(PhoneNumberUtils.isEmergencyNumber("91112345", "BR")); // Tests for isPotentialEmergencyNumber(): // These first two are obviously emergency numbers: assertTrue(PhoneNumberUtils.isPotentialEmergencyNumber("911", "US")); assertTrue(PhoneNumberUtils.isPotentialEmergencyNumber("112", "US")); // The next two numbers are not valid phone numbers in the US, but can be used to trick the // system to dial 911 and 112, which are emergency numbers in the US. For the purpose of // addressing that, they are also classified as "potential" emergency numbers in the US. assertTrue(PhoneNumberUtils.isPotentialEmergencyNumber("91112345", "US")); assertTrue(PhoneNumberUtils.isPotentialEmergencyNumber("11212345", "US")); // A valid mobile phone number from Singapore shouldn't be classified as an emergency number // in Singapore, as 911 is not an emergency number there. // This test fails on devices that have ecclist property preloaded with 911. // assertFalse(PhoneNumberUtils.isPotentialEmergencyNumber("91121234", "SG")); assertFalse(PhoneNumberUtils.isEmergencyNumber("91121234")); // A valid fixed-line phone number from Brazil shouldn't be classified as an emergency number // in Brazil, as 112 is not an emergency number there. assertFalse(PhoneNumberUtils.isPotentialEmergencyNumber("1121234567", "BR")); assertFalse(PhoneNumberUtils.isEmergencyNumber("1121234567")); // A valid local phone number from Brazil shouldn't be classified as an emergency number in // Brazil. assertFalse(PhoneNumberUtils.isPotentialEmergencyNumber("91112345", "BR")); assertFalse(PhoneNumberUtils.isEmergencyNumber("91112345")); } @SmallTest Loading
tests/telephonytests/src/com/android/internal/telephony/emergency/EmergencyNumberTrackerTest.java +2 −2 Original line number Diff line number Diff line Loading @@ -388,7 +388,7 @@ public class EmergencyNumberTrackerTest extends TelephonyTest { processAllMessages(); replaceInstance(ShortNumberInfo.class, "INSTANCE", null, mShortNumberInfo); mEmergencyNumberTrackerMock.isEmergencyNumber(NON_3GPP_EMERGENCY_TEST_NUMBER, true); mEmergencyNumberTrackerMock.isEmergencyNumber(NON_3GPP_EMERGENCY_TEST_NUMBER); //verify that we fall back to shortnumber xml when there are no SIMs verify(mShortNumberInfo).isEmergencyNumber(NON_3GPP_EMERGENCY_TEST_NUMBER, "JP"); Loading Loading @@ -436,7 +436,7 @@ public class EmergencyNumberTrackerTest extends TelephonyTest { processAllMessages(); replaceInstance(ShortNumberInfo.class, "INSTANCE", null, mShortNumberInfo); mEmergencyNumberTrackerMock.isEmergencyNumber(NON_3GPP_EMERGENCY_TEST_NUMBER, true); mEmergencyNumberTrackerMock.isEmergencyNumber(NON_3GPP_EMERGENCY_TEST_NUMBER); //verify we do not use ShortNumber xml verify(mShortNumberInfo, never()).isEmergencyNumber(anyString(), anyString()); Loading