Add voicemail backup/restore columns

BACKED_UP and RESTORED are required for dialer voicemail backup/restore
feature for N MR2. As there are no API bump the fields will be hidden
in NMR2. These fields will be made public in O.

ARCHIVED and IS_OMTP_VOICEMAIL is not used for NMR2, but added in
advance to avoid multiple database upgrades.

Test: VoicemailProviderTest
Bug: 34463609
Change-Id: I95ef21950337ca1f8bc79cc0493f7c302ec05617
diff --git a/src/com/android/providers/contacts/CallLogDatabaseHelper.java b/src/com/android/providers/contacts/CallLogDatabaseHelper.java
index 67c548a..c88b742 100644
--- a/src/com/android/providers/contacts/CallLogDatabaseHelper.java
+++ b/src/com/android/providers/contacts/CallLogDatabaseHelper.java
@@ -37,7 +37,7 @@
 public class CallLogDatabaseHelper {
     private static final String TAG = "CallLogDatabaseHelper";
 
-    private static final int DATABASE_VERSION = 3;
+    private static final int DATABASE_VERSION = 4;
 
     private static final boolean DEBUG = false; // DON'T SUBMIT WITH TRUE
 
@@ -151,7 +151,11 @@
                     Voicemails.TRANSCRIPTION + " TEXT," +
                     Voicemails.STATE + " INTEGER," +
                     Voicemails.DIRTY + " INTEGER NOT NULL DEFAULT 0," +
-                    Voicemails.DELETED + " INTEGER NOT NULL DEFAULT 0" +
+                    Voicemails.DELETED + " INTEGER NOT NULL DEFAULT 0," +
+                    Voicemails.BACKED_UP + " INTEGER NOT NULL DEFAULT 0," +
+                    Voicemails.RESTORED + " INTEGER NOT NULL DEFAULT 0," +
+                    Voicemails.ARCHIVED + " INTEGER NOT NULL DEFAULT 0," +
+                    Voicemails.IS_OMTP_VOICEMAIL + " INTEGER NOT NULL DEFAULT 0" +
                     ");");
 
             db.execSQL("CREATE TABLE " + Tables.VOICEMAIL_STATUS + " (" +
@@ -185,6 +189,10 @@
             if (oldVersion < 3) {
                 upgradeToVersion3(db);
             }
+
+            if (oldVersion < 4) {
+                upgradeToVersion4(db);
+            }
         }
     }
 
@@ -243,6 +251,17 @@
     }
 
     /**
+     * Add {@link Voicemails.BACKED_UP} {@link Voicemails.ARCHIVE} {@link
+     * Voicemails.IS_OMTP_VOICEMAIL} column to the CallLog database.
+     */
+    private void upgradeToVersion4(SQLiteDatabase db) {
+        db.execSQL("ALTER TABLE calls ADD backed_up INTEGER NOT NULL DEFAULT 0");
+        db.execSQL("ALTER TABLE calls ADD restored INTEGER NOT NULL DEFAULT 0");
+        db.execSQL("ALTER TABLE calls ADD archived INTEGER NOT NULL DEFAULT 0");
+        db.execSQL("ALTER TABLE calls ADD is_omtp_voicemail INTEGER NOT NULL DEFAULT 0");
+    }
+
+    /**
      * Perform the migration from the contacts2.db (of the latest version) to the current calllog/
      * voicemail status tables.
      */
diff --git a/src/com/android/providers/contacts/VoicemailContentTable.java b/src/com/android/providers/contacts/VoicemailContentTable.java
index 24a02bc..75f9574 100644
--- a/src/com/android/providers/contacts/VoicemailContentTable.java
+++ b/src/com/android/providers/contacts/VoicemailContentTable.java
@@ -70,6 +70,10 @@
             .add(Voicemails.DIRTY)
             .add(Voicemails.DELETED)
             .add(Voicemails.LAST_MODIFIED)
+            .add(Voicemails.BACKED_UP)
+            .add(Voicemails.RESTORED)
+            .add(Voicemails.ARCHIVED)
+            .add(Voicemails.IS_OMTP_VOICEMAIL)
             .add(OpenableColumns.DISPLAY_NAME)
             .add(OpenableColumns.SIZE)
             .build();
@@ -105,6 +109,10 @@
                 .add(Voicemails.DIRTY)
                 .add(Voicemails.DELETED)
                 .add(Voicemails.LAST_MODIFIED)
+                .add(Voicemails.BACKED_UP)
+                .add(Voicemails.RESTORED)
+                .add(Voicemails.ARCHIVED)
+                .add(Voicemails.IS_OMTP_VOICEMAIL)
                 .add(OpenableColumns.DISPLAY_NAME, createDisplayName(context))
                 .add(OpenableColumns.SIZE, "NULL")
                 .build();
diff --git a/tests/src/com/android/providers/contacts/VoicemailProviderTest.java b/tests/src/com/android/providers/contacts/VoicemailProviderTest.java
index b4c9e04..ea86c37 100644
--- a/tests/src/com/android/providers/contacts/VoicemailProviderTest.java
+++ b/tests/src/com/android/providers/contacts/VoicemailProviderTest.java
@@ -142,6 +142,10 @@
         values.put(Voicemails.SOURCE_DATA, "foo");
         values.put(Voicemails.PHONE_ACCOUNT_COMPONENT_NAME, "dummy_name");
         values.put(Voicemails.PHONE_ACCOUNT_ID, "dummy_account");
+        values.put(Voicemails.BACKED_UP, 1);
+        values.put(Voicemails.RESTORED, 1);
+        values.put(Voicemails.ARCHIVED, 1);
+        values.put(Voicemails.IS_OMTP_VOICEMAIL, 1);
         int count = mResolver.update(uri, values, null, null);
         assertEquals(1, count);
         assertStoredValues(uri, values);
@@ -733,6 +737,10 @@
         values.put(Voicemails.HAS_CONTENT, 0);
         values.put(Voicemails.SOURCE_DATA, "1234");
         values.put(Voicemails.STATE, Voicemails.STATE_INBOX);
+        values.put(Voicemails.BACKED_UP, 0);
+        values.put(Voicemails.RESTORED, 0);
+        values.put(Voicemails.ARCHIVED, 0);
+        values.put(Voicemails.IS_OMTP_VOICEMAIL, 0);
         return values;
     }