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 {