Permit re-inserting an existing blocked number.
BUG: 27779600
Change-Id: I8fa3657e211fde1fc95ea9ef9773cc2490d0883a
diff --git a/src/com/android/providers/blockednumber/BlockedNumberProvider.java b/src/com/android/providers/blockednumber/BlockedNumberProvider.java
index a71a0b1..04d463b 100644
--- a/src/com/android/providers/blockednumber/BlockedNumberProvider.java
+++ b/src/com/android/providers/blockednumber/BlockedNumberProvider.java
@@ -155,8 +155,9 @@
}
// Then insert.
- final long id = mDbHelper.getWritableDatabase().insertOrThrow(
- BlockedNumberDatabaseHelper.Tables.BLOCKED_NUMBERS, null, cv);
+ final long id = mDbHelper.getWritableDatabase().insertWithOnConflict(
+ BlockedNumberDatabaseHelper.Tables.BLOCKED_NUMBERS, null, cv,
+ SQLiteDatabase.CONFLICT_REPLACE);
return ContentUris.withAppendedId(BlockedNumberContract.BlockedNumbers.CONTENT_URI, id);
}
diff --git a/tests/src/com/android/providers/blockednumber/BlockedNumberProviderTest.java b/tests/src/com/android/providers/blockednumber/BlockedNumberProviderTest.java
index 217a7d0..70f5170 100644
--- a/tests/src/com/android/providers/blockednumber/BlockedNumberProviderTest.java
+++ b/tests/src/com/android/providers/blockednumber/BlockedNumberProviderTest.java
@@ -134,12 +134,9 @@
insert(cv(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, "+1-2-3"));
insert(cv(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, "+1-408-454-1111"));
insert(cv(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, "1-408-454-2222"));
-
- try {
- insert(cv(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, "1-408-454-2222"));
- fail("SQLiteConstraintException expected");
- } catch (SQLiteConstraintException expected) {
- }
+ // Re-inserting the same number should be ok, but the E164 number is replaced.
+ insert(cv(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, "1-408-454-2222",
+ BlockedNumbers.COLUMN_E164_NUMBER, "+814084542222"));
insert(cv(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, "1-408-4542222"));
@@ -148,15 +145,18 @@
insert(cv(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, "12345"));
+
+
assertRowCount(7, BlockedNumbers.CONTENT_URI);
assertContents(1, "123", "");
assertContents(2, "+1-2-3", "");
assertContents(3, "+1-408-454-1111", "+14084541111");
- assertContents(4, "1-408-454-2222", "+14084542222");
- assertContents(5, "1-408-4542222", "+14084542222");
- assertContents(6, "045-381-1111", "+81453811111");
- assertContents(7, "12345", "");
+ // Missing 4 due to re-insertion of the same number.
+ assertContents(5, "1-408-454-2222", "+814084542222");
+ assertContents(6, "1-408-4542222", "+14084542222");
+ assertContents(7, "045-381-1111", "+81453811111");
+ assertContents(8, "12345", "");
}
public void testChangesNotified() throws Exception {