Remove local_dedupe_key from picker db

Since we are removing MEDIA_STORE_DEDUPLICATION_KEY from the
CloudMediaProvider API, we need to remove the equivalent key from the
picker db.

Now, deduping is only based on the local_id instead of <local_id,
local_dedupe_key>

Bug: 190713331
Test: PickerDatabaseHelperTest
Change-Id: I3b3bf2c570b02f5aaba818b4d0396ffef77ee01f
Merged-In: I3b3bf2c570b02f5aaba818b4d0396ffef77ee01f
(cherry picked from commit 7684ed24dbfc55a49f05ed1d33d22b10d3cd8c4c)
diff --git a/src/com/android/providers/media/photopicker/data/PickerDatabaseHelper.java b/src/com/android/providers/media/photopicker/data/PickerDatabaseHelper.java
index 53e7d85..23a96bd 100644
--- a/src/com/android/providers/media/photopicker/data/PickerDatabaseHelper.java
+++ b/src/com/android/providers/media/photopicker/data/PickerDatabaseHelper.java
@@ -93,16 +93,13 @@
         makePristineSchema(db);
 
         db.execSQL("CREATE TABLE media (_id INTEGER PRIMARY KEY AUTOINCREMENT,"
-                + "local_id INTEGER,cloud_id TEXT UNIQUE,is_local_verified INTEGER DEFAULT 0,"
+                + "local_id INTEGER UNIQUE,cloud_id TEXT UNIQUE,is_local_verified INTEGER DEFAULT 0,"
                 + "date_taken_ms INTEGER NOT NULL CHECK(date_taken_ms >= 0),"
-                + "local_dedupe_key TEXT,"
                 + "size_bytes INTEGER NOT NULL CHECK(size_bytes > 0),"
                 + "duration_ms INTEGER CHECK(duration_ms >= 0),"
                 + "mime_type TEXT NOT NULL,"
                 + "CHECK((is_local_verified = 0 AND cloud_id IS NOT NULL) OR "
-                + "(is_local_verified != 0 AND local_id IS NOT NULL AND "
-                + "local_dedupe_key IS NOT NULL)),"
-                + "UNIQUE(local_id, local_dedupe_key))");
+                + "(is_local_verified != 0 AND local_id IS NOT NULL)))");
     }
 
     private static void createLatestIndexes(SQLiteDatabase db) {
@@ -110,7 +107,6 @@
 
         db.execSQL("CREATE INDEX local_id_index on media(local_id)");
         db.execSQL("CREATE INDEX cloud_id_index on media(cloud_id)");
-        db.execSQL("CREATE INDEX local_dedupe_key_index on media(local_dedupe_key)");
         db.execSQL("CREATE INDEX date_taken_index on media(date_taken_ms)");
         db.execSQL("CREATE INDEX size_index on media(size_bytes)");
         db.execSQL("CREATE INDEX mime_type_index on media(mime_type)");
diff --git a/tests/src/com/android/providers/media/photopicker/data/PickerDatabaseHelperTest.java b/tests/src/com/android/providers/media/photopicker/data/PickerDatabaseHelperTest.java
index f7d9616..6c925af 100644
--- a/tests/src/com/android/providers/media/photopicker/data/PickerDatabaseHelperTest.java
+++ b/tests/src/com/android/providers/media/photopicker/data/PickerDatabaseHelperTest.java
@@ -45,15 +45,12 @@
     private static final String KEY_LOCAL_ID = "local_id";
     private static final String KEY_CLOUD_ID = "cloud_id";
     private static final String KEY_IS_LOCAL_VERIFIED = "is_local_verified";
-    private static final String KEY_LOCAL_DEDUPE_KEY = "local_dedupe_key";
     private static final String KEY_DATE_TAKEN_MS = "date_taken_ms";
     private static final String KEY_SIZE_BYTES = "size_bytes";
     private static final String KEY_DURATION_MS = "duration_ms";
     private static final String KEY_MIME_TYPE = "mime_type";
 
     private static final long LOCAL_ID = 50;
-    // date_modified_ms+size
-    private static final String LOCAL_DEDUPE_KEY = "1623852851911+7000";
     private static final long SIZE_BYTES = 7000;
     private static final long DATE_TAKEN_MS = 1623852851911L;
     private static final String CLOUD_ID = "asdfghjkl;";
@@ -74,7 +71,6 @@
             KEY_LOCAL_ID,
             KEY_CLOUD_ID,
             KEY_IS_LOCAL_VERIFIED,
-            KEY_LOCAL_DEDUPE_KEY,
             KEY_DATE_TAKEN_MS,
             KEY_SIZE_BYTES,
             KEY_DURATION_MS,
@@ -89,7 +85,6 @@
             values.put(KEY_LOCAL_ID, LOCAL_ID);
             values.put(KEY_CLOUD_ID, CLOUD_ID);
             values.put(KEY_IS_LOCAL_VERIFIED, 1);
-            values.put(KEY_LOCAL_DEDUPE_KEY, LOCAL_DEDUPE_KEY);
             assertThat(db.insert(MEDIA_TABLE, null, values)).isNotEqualTo(-1);
 
             try (Cursor cr = db.query(MEDIA_TABLE, projection, null, null, null, null, null)) {
@@ -98,26 +93,12 @@
                     assertThat(cr.getLong(0)).isEqualTo(LOCAL_ID);
                     assertThat(cr.getString(1)).isEqualTo(CLOUD_ID);
                     assertThat(cr.getInt(2)).isEqualTo(1);
-                    assertThat(cr.getString(3)).isEqualTo(LOCAL_DEDUPE_KEY);
-                    assertThat(cr.getLong(4)).isEqualTo(DATE_TAKEN_MS);
-                    assertThat(cr.getLong(5)).isEqualTo(SIZE_BYTES);
-                    assertThat(cr.getLong(6)).isEqualTo(DURATION_MS);
-                    assertThat(cr.getString(7)).isEqualTo(MIME_TYPE);
+                    assertThat(cr.getLong(3)).isEqualTo(DATE_TAKEN_MS);
+                    assertThat(cr.getLong(4)).isEqualTo(SIZE_BYTES);
+                    assertThat(cr.getLong(5)).isEqualTo(DURATION_MS);
+                    assertThat(cr.getString(6)).isEqualTo(MIME_TYPE);
                 }
             }
-
-            // Remove cloud_id to avoid hitting cloud_id unique constraint
-            values.remove(KEY_CLOUD_ID);
-
-            // Same local_dedupe_key with different local_id can be inserted
-            ContentValues valuesLocalId = new ContentValues(values);
-            valuesLocalId.put(KEY_LOCAL_ID, LOCAL_ID + 1);
-            assertThat(db.insert(MEDIA_TABLE, null, valuesLocalId)).isNotEqualTo(-1);
-
-            // Same local_id with different local_dedupe_key can be inserted
-            ContentValues valuesLocalDateModifiedMs = new ContentValues(values);
-            valuesLocalDateModifiedMs.put(KEY_LOCAL_DEDUPE_KEY, LOCAL_DEDUPE_KEY + "1");
-            assertThat(db.insert(MEDIA_TABLE, null, valuesLocalDateModifiedMs)).isNotEqualTo(-1);
         }
     }
 
@@ -135,7 +116,6 @@
             values = getBasicContentValues();
             values.put(KEY_LOCAL_ID, LOCAL_ID);
             values.put(KEY_IS_LOCAL_VERIFIED, 1);
-            values.put(KEY_LOCAL_DEDUPE_KEY, LOCAL_DEDUPE_KEY);
             assertThat(db.insert(MEDIA_TABLE, null, values)).isNotEqualTo(-1);
         }
     }
@@ -213,14 +193,6 @@
             ContentValues values = getBasicContentValues();
             values.put(KEY_CLOUD_ID, CLOUD_ID);
             values.put(KEY_IS_LOCAL_VERIFIED, 1);
-            values.put(KEY_LOCAL_DEDUPE_KEY, LOCAL_DEDUPE_KEY);
-            assertThat(db.insert(MEDIA_TABLE, null, values)).isEqualTo(-1);
-
-            // is_local_verified=1 && local_dedupe_key=NULL
-            values = getBasicContentValues();
-            values.put(KEY_CLOUD_ID, CLOUD_ID);
-            values.put(KEY_IS_LOCAL_VERIFIED, 1);
-            values.put(KEY_LOCAL_ID, LOCAL_ID);
             assertThat(db.insert(MEDIA_TABLE, null, values)).isEqualTo(-1);
         }
     }
@@ -234,13 +206,11 @@
             ContentValues values = getBasicContentValues();
             values.put(KEY_IS_LOCAL_VERIFIED, 0);
             values.put(KEY_LOCAL_ID, LOCAL_ID);
-            values.put(KEY_LOCAL_DEDUPE_KEY, LOCAL_DEDUPE_KEY);
             assertThat(db.insert(MEDIA_TABLE, null, values)).isEqualTo(-1);
 
             // is_local_verified=NULL && cloud_id=NULL
             values = getBasicContentValues();
             values.put(KEY_LOCAL_ID, LOCAL_ID);
-            values.put(KEY_LOCAL_DEDUPE_KEY, LOCAL_DEDUPE_KEY);
             assertThat(db.insert(MEDIA_TABLE, null, values)).isEqualTo(-1);
         }
     }
@@ -253,12 +223,11 @@
             final ContentValues values = getBasicContentValues();
             values.put(KEY_LOCAL_ID, LOCAL_ID);
             values.put(KEY_IS_LOCAL_VERIFIED, 1);
-            values.put(KEY_LOCAL_DEDUPE_KEY, LOCAL_DEDUPE_KEY);
 
-            // Insert <local_id, local_dedupe_key>: success
+            // Insert <local_id>: success
             assertThat(db.insert(MEDIA_TABLE, null, values)).isNotEqualTo(-1);
 
-            // Insert <local_id, local_dedupe_key, size> again: failure
+            // Insert <local_id> again: failure
             assertThat(db.insert(MEDIA_TABLE, null, values)).isEqualTo(-1);
         }
     }