diff options
-rw-r--r-- | src/com/android/dialer/database/FilteredNumberAsyncQueryHandler.java | 8 | ||||
-rw-r--r-- | tests/src/com/android/dialer/database/FilteredNumberAsyncQueryHandlerTest.java | 21 |
2 files changed, 28 insertions, 1 deletions
diff --git a/src/com/android/dialer/database/FilteredNumberAsyncQueryHandler.java b/src/com/android/dialer/database/FilteredNumberAsyncQueryHandler.java index 7af1a1339..52ef49ac0 100644 --- a/src/com/android/dialer/database/FilteredNumberAsyncQueryHandler.java +++ b/src/com/android/dialer/database/FilteredNumberAsyncQueryHandler.java @@ -158,7 +158,13 @@ public class FilteredNumberAsyncQueryHandler extends AsyncQueryHandler { new Listener() { @Override protected void onQueryComplete(int token, Object cookie, Cursor cursor) { - if (cursor == null || cursor.getCount() != 1) { + /* + * In the frameworking blocking, numbers can be blocked in both e164 format + * and not, resulting in multiple rows being returned for this query. For + * example, both '16502530000' and '6502530000' can exist at the same time + * and will be returned by this query. + */ + if (cursor == null || cursor.getCount() == 0) { listener.onCheckComplete(null); return; } diff --git a/tests/src/com/android/dialer/database/FilteredNumberAsyncQueryHandlerTest.java b/tests/src/com/android/dialer/database/FilteredNumberAsyncQueryHandlerTest.java index 28fdda0dc..625f3fdb5 100644 --- a/tests/src/com/android/dialer/database/FilteredNumberAsyncQueryHandlerTest.java +++ b/tests/src/com/android/dialer/database/FilteredNumberAsyncQueryHandlerTest.java @@ -47,6 +47,7 @@ public class FilteredNumberAsyncQueryHandlerTest extends InstrumentationTestCase private static final String NUMBER = "6502530000"; private static final String COUNTRY_ISO = "US"; private static final Integer ID = 1; + private static final Integer ID2 = 2; private static final Uri BLOCKED_NUMBER_URI_N = CompatUtils.isNCompatible() ? Uri.withAppendedPath(BlockedNumberContract.AUTHORITY_URI, "blocked") : null; private static final Uri BLOCKED_NUMBER_URI_M = @@ -177,6 +178,26 @@ public class FilteredNumberAsyncQueryHandlerTest extends InstrumentationTestCase mContentProvider.verify(); } + public void testIsBlockedNumber_MultipleResults() throws Throwable { + if (CompatUtils.isNCompatible()) { + newIsBlockedNumberExpectedQuery().returnRow(ID).returnRow(ID2); + } else { + newIsBlockedNumberExpectedQuery().returnRow(ID, FilteredNumberTypes.BLOCKED_NUMBER) + .returnRow(ID2, FilteredNumberTypes.BLOCKED_NUMBER); + } + final CheckBlockedListener listener = new CheckBlockedListener(); + runTestOnUiThread(new Runnable() { + @Override + public void run() { + new FilteredNumberAsyncQueryHandler(mContentResolver) + .isBlockedNumber(listener, NUMBER, COUNTRY_ISO); + } + }); + // When there are multiple matches, the first is returned + assertEquals(ID, listener.waitForCallback()); + mContentProvider.verify(); + } + public void testBlockNumber_Disabled() throws Throwable { if (!CompatUtils.isNCompatible()) { return; |