summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbhijith Shastry <ashastry@google.com>2016-03-07 18:11:42 -0800
committerAbhijith Shastry <ashastry@google.com>2016-03-08 14:57:59 -0800
commit6fe02e3a7b76dc8769b23012d044346f89dea567 (patch)
treec5d4965604caf3329e1a23b75f2208711125ad22
parente8fb491bdf78294024d2013a4177d42b4358a859 (diff)
downloadBlockedNumberProvider-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.java14
-rw-r--r--tests/src/com/android/providers/blockednumber/BlockedNumberProviderTest.java23
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];
+ }
+ }
}