summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTyler Gunn <tgunn@google.com>2018-08-22 14:22:27 -0700
committerandroid-build-merger <android-build-merger@google.com>2018-08-22 14:22:27 -0700
commitfc87a41ae575b9d53fd2ecd8cbe5f3e7c4c0c19e (patch)
tree05581925af3112907342b409ccad341619828af3
parentdcf7f074d874badb90f598fc67a1ce966f91a518 (diff)
parentc499afb74fc17108957791157cd9faa824575fc3 (diff)
downloadBlockedNumberProvider-fc87a41ae575b9d53fd2ecd8cbe5f3e7c4c0c19e.tar.gz
Update blocked number provider to return reason for blocking.
am: c499afb74f Change-Id: I7dbf025eb36ab00ccac9246b33c8abe62bc34a92
-rw-r--r--src/com/android/providers/blockednumber/BlockedNumberProvider.java47
-rw-r--r--tests/src/com/android/providers/blockednumber/BlockedNumberContractTest.java6
-rw-r--r--tests/src/com/android/providers/blockednumber/BlockedNumberProviderTest.java20
3 files changed, 49 insertions, 24 deletions
diff --git a/src/com/android/providers/blockednumber/BlockedNumberProvider.java b/src/com/android/providers/blockednumber/BlockedNumberProvider.java
index 44a5f84..69291ff 100644
--- a/src/com/android/providers/blockednumber/BlockedNumberProvider.java
+++ b/src/com/android/providers/blockednumber/BlockedNumberProvider.java
@@ -308,8 +308,11 @@ public class BlockedNumberProvider extends ContentProvider {
switch (method) {
case BlockedNumberContract.METHOD_IS_BLOCKED:
enforceReadPermissionAndPrimaryUser();
-
- res.putBoolean(BlockedNumberContract.RES_NUMBER_IS_BLOCKED, isBlocked(arg));
+ boolean isBlocked = isBlocked(arg);
+ res.putBoolean(BlockedNumberContract.RES_NUMBER_IS_BLOCKED, isBlocked);
+ res.putInt(BlockedNumberContract.RES_BLOCK_STATUS,
+ isBlocked ? BlockedNumberContract.STATUS_BLOCKED_IN_LIST
+ : BlockedNumberContract.STATUS_NOT_BLOCKED);
break;
case BlockedNumberContract.METHOD_CAN_CURRENT_USER_BLOCK_NUMBERS:
// No permission checks: any app should be able to access this API.
@@ -341,8 +344,10 @@ public class BlockedNumberProvider extends ContentProvider {
break;
case SystemContract.METHOD_SHOULD_SYSTEM_BLOCK_NUMBER:
enforceSystemReadPermissionAndPrimaryUser();
+ int blockReason = shouldSystemBlockNumber(arg, extras);
res.putBoolean(BlockedNumberContract.RES_NUMBER_IS_BLOCKED,
- shouldSystemBlockNumber(arg, extras));
+ blockReason != BlockedNumberContract.STATUS_NOT_BLOCKED);
+ res.putInt(BlockedNumberContract.RES_BLOCK_STATUS, blockReason);
break;
case SystemContract.METHOD_SHOULD_SHOW_EMERGENCY_CALL_NOTIFICATION:
enforceSystemReadPermissionAndPrimaryUser();
@@ -474,42 +479,54 @@ public class BlockedNumberProvider extends ContentProvider {
blockSuppressionExpiryTimeMillis);
}
- private boolean shouldSystemBlockNumber(String phoneNumber, Bundle extras) {
+ private int shouldSystemBlockNumber(String phoneNumber, Bundle extras) {
if (getBlockSuppressionStatus().isSuppressed) {
- return false;
+ return BlockedNumberContract.STATUS_NOT_BLOCKED;
}
if (isEmergencyNumber(phoneNumber)) {
- return false;
+ return BlockedNumberContract.STATUS_NOT_BLOCKED;
}
boolean isBlocked = false;
+ int blockReason = BlockedNumberContract.STATUS_NOT_BLOCKED;
if (extras != null && !extras.isEmpty()) {
// check enhanced blocking setting
boolean contactExist = extras.getBoolean(BlockedNumberContract.EXTRA_CONTACT_EXIST);
int presentation = extras.getInt(BlockedNumberContract.EXTRA_CALL_PRESENTATION);
switch (presentation) {
case TelecomManager.PRESENTATION_ALLOWED:
- isBlocked = getEnhancedBlockSetting(
+ if (getEnhancedBlockSetting(
SystemContract.ENHANCED_SETTING_KEY_BLOCK_UNREGISTERED)
- && !contactExist;
+ && !contactExist) {
+ blockReason = BlockedNumberContract.STATUS_BLOCKED_NOT_IN_CONTACTS;
+ }
break;
case TelecomManager.PRESENTATION_RESTRICTED:
- isBlocked = getEnhancedBlockSetting(
- SystemContract.ENHANCED_SETTING_KEY_BLOCK_PRIVATE);
+ if (getEnhancedBlockSetting(
+ SystemContract.ENHANCED_SETTING_KEY_BLOCK_PRIVATE)) {
+ blockReason = BlockedNumberContract.STATUS_BLOCKED_RESTRICTED;
+ }
break;
case TelecomManager.PRESENTATION_PAYPHONE:
- isBlocked = getEnhancedBlockSetting(
- SystemContract.ENHANCED_SETTING_KEY_BLOCK_PAYPHONE);
+ if (getEnhancedBlockSetting(
+ SystemContract.ENHANCED_SETTING_KEY_BLOCK_PAYPHONE)) {
+ blockReason = BlockedNumberContract.STATUS_BLOCKED_PAYPHONE;
+ }
break;
case TelecomManager.PRESENTATION_UNKNOWN:
- isBlocked = getEnhancedBlockSetting(
- SystemContract.ENHANCED_SETTING_KEY_BLOCK_UNKNOWN);
+ if (getEnhancedBlockSetting(
+ SystemContract.ENHANCED_SETTING_KEY_BLOCK_UNKNOWN)) {
+ blockReason = BlockedNumberContract.STATUS_BLOCKED_UNKNOWN_NUMBER;
+ }
break;
default:
break;
}
}
- return isBlocked || isBlocked(phoneNumber);
+ if (blockReason == BlockedNumberContract.STATUS_NOT_BLOCKED && isBlocked(phoneNumber)) {
+ blockReason = BlockedNumberContract.STATUS_BLOCKED_IN_LIST;
+ }
+ return blockReason;
}
private boolean shouldShowEmergencyCallNotification() {
diff --git a/tests/src/com/android/providers/blockednumber/BlockedNumberContractTest.java b/tests/src/com/android/providers/blockednumber/BlockedNumberContractTest.java
index 89cca78..93e9cee 100644
--- a/tests/src/com/android/providers/blockednumber/BlockedNumberContractTest.java
+++ b/tests/src/com/android/providers/blockednumber/BlockedNumberContractTest.java
@@ -16,6 +16,7 @@
package com.android.providers.blockednumber;
+import static android.provider.BlockedNumberContract.STATUS_NOT_BLOCKED;
import static android.provider.BlockedNumberContract.SystemContract
.ENHANCED_SETTING_KEY_BLOCK_PAYPHONE;
@@ -97,8 +98,9 @@ public class BlockedNumberContractTest extends AndroidTestCase {
@SmallTest
@Test
public void testShouldSystemBlockNumberException() {
- assertFalse(BlockedNumberContract.SystemContract.shouldSystemBlockNumber(mMockContext,
- TEST_NUMBER, null));
+ assertEquals(STATUS_NOT_BLOCKED,
+ BlockedNumberContract.SystemContract.shouldSystemBlockNumber(mMockContext,
+ TEST_NUMBER, null));
}
/**
diff --git a/tests/src/com/android/providers/blockednumber/BlockedNumberProviderTest.java b/tests/src/com/android/providers/blockednumber/BlockedNumberProviderTest.java
index 91d2430..828028f 100644
--- a/tests/src/com/android/providers/blockednumber/BlockedNumberProviderTest.java
+++ b/tests/src/com/android/providers/blockednumber/BlockedNumberProviderTest.java
@@ -611,19 +611,24 @@ public class BlockedNumberProviderTest extends AndroidTestCase {
insert(cv(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, emergencyNumber));
assertIsBlocked(true, emergencyNumber);
- assertFalse(SystemContract.shouldSystemBlockNumber(mMockContext, emergencyNumber, null));
+ assertEquals(BlockedNumberContract.STATUS_NOT_BLOCKED,
+ SystemContract.shouldSystemBlockNumber(mMockContext, emergencyNumber, null));
setEnhancedBlockSetting(SystemContract.ENHANCED_SETTING_KEY_BLOCK_UNREGISTERED, true);
- assertFalse(SystemContract.shouldSystemBlockNumber(mMockContext, emergencyNumber,
+ assertEquals(BlockedNumberContract.STATUS_NOT_BLOCKED,
+ SystemContract.shouldSystemBlockNumber(mMockContext, emergencyNumber,
createBundleForEnhancedBlocking(TelecomManager.PRESENTATION_ALLOWED, false)));
setEnhancedBlockSetting(SystemContract.ENHANCED_SETTING_KEY_BLOCK_PRIVATE, true);
- assertFalse(SystemContract.shouldSystemBlockNumber(mMockContext, emergencyNumber,
+ assertEquals(BlockedNumberContract.STATUS_NOT_BLOCKED,
+ SystemContract.shouldSystemBlockNumber(mMockContext, emergencyNumber,
createBundleForEnhancedBlocking(TelecomManager.PRESENTATION_RESTRICTED, false)));
setEnhancedBlockSetting(SystemContract.ENHANCED_SETTING_KEY_BLOCK_PAYPHONE, true);
- assertFalse(SystemContract.shouldSystemBlockNumber(mMockContext, emergencyNumber,
+ assertEquals(BlockedNumberContract.STATUS_NOT_BLOCKED,
+ SystemContract.shouldSystemBlockNumber(mMockContext, emergencyNumber,
createBundleForEnhancedBlocking(TelecomManager.PRESENTATION_PAYPHONE, false)));
setEnhancedBlockSetting(SystemContract.ENHANCED_SETTING_KEY_BLOCK_UNKNOWN, true);
- assertFalse(SystemContract.shouldSystemBlockNumber(mMockContext, emergencyNumber,
+ assertEquals(BlockedNumberContract.STATUS_NOT_BLOCKED,
+ SystemContract.shouldSystemBlockNumber(mMockContext, emergencyNumber,
createBundleForEnhancedBlocking(TelecomManager.PRESENTATION_UNKNOWN, false)));
}
@@ -707,8 +712,9 @@ public class BlockedNumberProviderTest extends AndroidTestCase {
}
private void assertShouldSystemBlock(boolean expected, String phoneNumber, Bundle extras) {
- assertEquals(expected, SystemContract.shouldSystemBlockNumber(mMockContext, phoneNumber,
- extras));
+ assertEquals(expected,
+ SystemContract.shouldSystemBlockNumber(mMockContext, phoneNumber, extras)
+ != BlockedNumberContract.STATUS_NOT_BLOCKED);
}
private void setEnhancedBlockSetting(String key, boolean value) {