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

Commit c4bf83fe authored by Chinmay Dhodapkar's avatar Chinmay Dhodapkar
Browse files

remove in-exact matching for emergency numbers

-remove in-exact matching related code from emergencynumtracker
-remove api exposed by emergency num tracker
-update tests

Bug: 238360124
Test: unit tests

Change-Id: Ie8c3e7f674c8d430a2afb7024a8d18386fb68717
parent 0a6dbf64
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -1434,8 +1434,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));
+25 −83
Original line number Diff line number Diff line
@@ -710,7 +710,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;
        }
@@ -726,31 +726,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
@@ -952,7 +935,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;

@@ -999,11 +982,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 {
@@ -1013,17 +991,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;
@@ -1038,7 +1006,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 {
@@ -1048,24 +1015,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 {
@@ -1076,19 +1031,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;
                }
            }
        }

@@ -1107,7 +1049,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) {
+1 −1
Original line number Diff line number Diff line
@@ -1599,7 +1599,7 @@ public class GsmCdmaPhoneTest extends TelephonyTest {

        doReturn(true).when(mTelephonyManager).isEmergencyNumber(anyString());
        doReturn(isEmergencyPerDialedSim).when(mEmergencyNumberTracker).isEmergencyNumber(
                anyString(), anyBoolean());
                anyString());

        mPhoneUT.setImsPhone(mImsPhone);
    }
+8 −36
Original line number Diff line number Diff line
@@ -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
+2 −2
Original line number Diff line number Diff line
@@ -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");
@@ -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());