diff options
author | Tyler Gunn <tgunn@google.com> | 2018-08-22 14:22:27 -0700 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2018-08-22 14:22:27 -0700 |
commit | fc87a41ae575b9d53fd2ecd8cbe5f3e7c4c0c19e (patch) | |
tree | 05581925af3112907342b409ccad341619828af3 | |
parent | dcf7f074d874badb90f598fc67a1ce966f91a518 (diff) | |
parent | c499afb74fc17108957791157cd9faa824575fc3 (diff) | |
download | BlockedNumberProvider-fc87a41ae575b9d53fd2ecd8cbe5f3e7c4c0c19e.tar.gz |
Update blocked number provider to return reason for blocking.
am: c499afb74f
Change-Id: I7dbf025eb36ab00ccac9246b33c8abe62bc34a92
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) { |