diff options
author | Abhijith Shastry <ashastry@google.com> | 2016-03-07 18:11:42 -0800 |
---|---|---|
committer | Abhijith Shastry <ashastry@google.com> | 2016-03-08 14:57:59 -0800 |
commit | 6fe02e3a7b76dc8769b23012d044346f89dea567 (patch) | |
tree | c5d4965604caf3329e1a23b75f2208711125ad22 | |
parent | e8fb491bdf78294024d2013a4177d42b4358a859 (diff) | |
download | BlockedNumberProvider-6fe02e3a7b76dc8769b23012d044346f89dea567.tar.gz |
Update blocked number provider so that emergency numbers are not blocked.
BUG: 27534486
Change-Id: Ie7a0ee11af94b5c89f2fbb6a14f09d775efc65a9
-rw-r--r-- | src/com/android/providers/blockednumber/BlockedNumberProvider.java | 14 | ||||
-rw-r--r-- | tests/src/com/android/providers/blockednumber/BlockedNumberProviderTest.java | 23 |
2 files changed, 33 insertions, 4 deletions
diff --git a/src/com/android/providers/blockednumber/BlockedNumberProvider.java b/src/com/android/providers/blockednumber/BlockedNumberProvider.java index d4fcaa8..69337cd 100644 --- a/src/com/android/providers/blockednumber/BlockedNumberProvider.java +++ b/src/com/android/providers/blockednumber/BlockedNumberProvider.java @@ -40,6 +40,7 @@ import android.provider.BlockedNumberContract; import android.provider.BlockedNumberContract.SystemContract; import android.telecom.TelecomManager; import android.telephony.CarrierConfigManager; +import android.telephony.PhoneNumberUtils; import android.telephony.TelephonyManager; import android.text.TextUtils; import android.util.Log; @@ -326,6 +327,16 @@ public class BlockedNumberProvider extends ContentProvider { return res; } + private boolean isEmergencyNumber(String phoneNumber) { + if (TextUtils.isEmpty(phoneNumber)) { + return false; + } + + final String e164Number = Utils.getE164Number(getContext(), phoneNumber, null); + return PhoneNumberUtils.isEmergencyNumber(phoneNumber) + || PhoneNumberUtils.isEmergencyNumber(e164Number); + } + private boolean isBlocked(String phoneNumber) { if (TextUtils.isEmpty(phoneNumber)) { return false; @@ -394,6 +405,9 @@ public class BlockedNumberProvider extends ContentProvider { if (getBlockSuppressionStatus().isSuppressed) { return false; } + if (isEmergencyNumber(phoneNumber)) { + return false; + } return isBlocked(phoneNumber); } diff --git a/tests/src/com/android/providers/blockednumber/BlockedNumberProviderTest.java b/tests/src/com/android/providers/blockednumber/BlockedNumberProviderTest.java index 8d58222..6839925 100644 --- a/tests/src/com/android/providers/blockednumber/BlockedNumberProviderTest.java +++ b/tests/src/com/android/providers/blockednumber/BlockedNumberProviderTest.java @@ -37,6 +37,7 @@ import android.database.sqlite.SQLiteException; import android.location.Country; import android.net.Uri; import android.os.PersistableBundle; +import android.os.SystemProperties; import android.provider.BlockedNumberContract; import android.provider.BlockedNumberContract.BlockedNumbers; import android.provider.BlockedNumberContract.SystemContract; @@ -45,7 +46,6 @@ import android.telephony.TelephonyManager; import android.test.AndroidTestCase; import android.test.MoreAsserts; import android.test.suitebuilder.annotation.MediumTest; -import android.test.suitebuilder.annotation.SmallTest; import junit.framework.Assert; @@ -55,7 +55,7 @@ import java.util.concurrent.TimeUnit; /** * runtest --path packages/providers/BlockedNumberProvider/tests */ -@SmallTest +@MediumTest public class BlockedNumberProviderTest extends AndroidTestCase { private MyMockContext mMockContext; private ContentResolver mResolver; @@ -256,7 +256,6 @@ public class BlockedNumberProviderTest extends AndroidTestCase { } } - @MediumTest public void testBlockSuppressionAfterEmergencyContact() { int blockSuppressionSeconds = 1000; when(mMockContext.mCarrierConfigManager.getConfig()) @@ -303,7 +302,6 @@ public class BlockedNumberProviderTest extends AndroidTestCase { mMockContext.mIntentsBroadcasted.get(0)); } - @MediumTest public void testBlockSuppressionAfterEmergencyContact_invalidCarrierConfigDefaultValueUsed() { int invalidBlockSuppressionSeconds = 700000; // > 1 week when(mMockContext.mCarrierConfigManager.getConfig()) @@ -481,6 +479,14 @@ public class BlockedNumberProviderTest extends AndroidTestCase { assertIsBlocked(false, "abcdef@gmail.com"); } + public void testEmergencyNumbersAreNotBlockedBySystem() { + String emergencyNumber = getEmergencyNumberFromSystemPropertiesOrDefault(); + insert(cv(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, emergencyNumber)); + + assertIsBlocked(true, emergencyNumber); + assertFalse(SystemContract.shouldSystemBlockNumber(mMockContext, emergencyNumber)); + } + private void assertIsBlocked(boolean expected, String phoneNumber) { assertEquals(expected, BlockedNumberContract.isBlocked(mMockContext, phoneNumber)); } @@ -525,4 +531,13 @@ public class BlockedNumberProviderTest extends AndroidTestCase { c.getString(c.getColumnIndex(BlockedNumbers.COLUMN_E164_NUMBER))); } } + + private String getEmergencyNumberFromSystemPropertiesOrDefault() { + String systemEmergencyNumbers = SystemProperties.get("ril.ecclist"); + if (systemEmergencyNumbers == null) { + return "911"; + } else { + return systemEmergencyNumbers.split(",")[0]; + } + } } |