Add SOURCE_TYPE field to VoicemailStatus table

+ Bump callog database version to 3

Bug:26944391
Change-Id: Ie4d7e67658247445c45f9f413902eda205bf2541
diff --git a/src/com/android/providers/contacts/CallLogDatabaseHelper.java b/src/com/android/providers/contacts/CallLogDatabaseHelper.java
index 76c0432..67c548a 100644
--- a/src/com/android/providers/contacts/CallLogDatabaseHelper.java
+++ b/src/com/android/providers/contacts/CallLogDatabaseHelper.java
@@ -24,6 +24,7 @@
 import android.database.sqlite.SQLiteOpenHelper;
 import android.provider.CallLog.Calls;
 import android.provider.VoicemailContract;
+import android.provider.VoicemailContract.Status;
 import android.provider.VoicemailContract.Voicemails;
 import android.util.Log;
 
@@ -36,7 +37,7 @@
 public class CallLogDatabaseHelper {
     private static final String TAG = "CallLogDatabaseHelper";
 
-    private static final int DATABASE_VERSION = 2;
+    private static final int DATABASE_VERSION = 3;
 
     private static final boolean DEBUG = false; // DON'T SUBMIT WITH TRUE
 
@@ -164,7 +165,8 @@
                     VoicemailContract.Status.DATA_CHANNEL_STATE + " INTEGER," +
                     VoicemailContract.Status.NOTIFICATION_CHANNEL_STATE + " INTEGER," +
                     VoicemailContract.Status.QUOTA_OCCUPIED + " INTEGER DEFAULT -1," +
-                    VoicemailContract.Status.QUOTA_TOTAL + " INTEGER DEFAULT -1" +
+                    VoicemailContract.Status.QUOTA_TOTAL + " INTEGER DEFAULT -1," +
+                    VoicemailContract.Status.SOURCE_TYPE + " TEXT" +
                     ");");
 
             migrateFromLegacyTables(db);
@@ -179,6 +181,10 @@
             if (oldVersion < 2) {
                 upgradeToVersion2(db);
             }
+
+            if (oldVersion < 3) {
+                upgradeToVersion3(db);
+            }
         }
     }
 
@@ -229,6 +235,14 @@
     }
 
     /**
+     * Add the {@link Status.SOURCE_TYPE} Column to the VoicemailStatus Database.
+     */
+    private void upgradeToVersion3(SQLiteDatabase db) {
+        db.execSQL("ALTER TABLE " + Tables.VOICEMAIL_STATUS + " ADD " + Status.SOURCE_TYPE +
+                " TEXT");
+    }
+
+    /**
      * 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/VoicemailStatusTable.java b/src/com/android/providers/contacts/VoicemailStatusTable.java
index c07d4b1..963df07 100644
--- a/src/com/android/providers/contacts/VoicemailStatusTable.java
+++ b/src/com/android/providers/contacts/VoicemailStatusTable.java
@@ -49,6 +49,7 @@
             .add(Status.VOICEMAIL_ACCESS_URI)
             .add(Status.QUOTA_OCCUPIED)
             .add(Status.QUOTA_TOTAL)
+            .add(Status.SOURCE_TYPE)
             .build();
 
     private static final Object DATABASE_LOCK = new Object();
diff --git a/tests/src/com/android/providers/contacts/VoicemailProviderTest.java b/tests/src/com/android/providers/contacts/VoicemailProviderTest.java
index 27e72c2..b4c9e04 100644
--- a/tests/src/com/android/providers/contacts/VoicemailProviderTest.java
+++ b/tests/src/com/android/providers/contacts/VoicemailProviderTest.java
@@ -29,7 +29,6 @@
 import android.test.MoreAsserts;
 import android.test.suitebuilder.annotation.SmallTest;
 
-import android.test.suitebuilder.annotation.Suppress;
 import com.android.common.io.MoreCloseables;
 
 import java.io.FileNotFoundException;
@@ -572,6 +571,8 @@
         values.put(Status.DATA_CHANNEL_STATE, Status.DATA_CHANNEL_STATE_NO_CONNECTION);
         values.put(Status.NOTIFICATION_CHANNEL_STATE,
                 Status.NOTIFICATION_CHANNEL_STATE_MESSAGE_WAITING);
+        values.put(Status.SOURCE_TYPE,
+                "vvm_type_test2");
         int count = mResolver.update(uri, values, null, null);
         assertEquals(1, count);
         assertStoredValues(uri, values);
@@ -753,6 +754,7 @@
         values.put(Status.CONFIGURATION_STATE, Status.CONFIGURATION_STATE_OK);
         values.put(Status.DATA_CHANNEL_STATE, Status.DATA_CHANNEL_STATE_OK);
         values.put(Status.NOTIFICATION_CHANNEL_STATE, Status.NOTIFICATION_CHANNEL_STATE_OK);
+        values.put(Status.SOURCE_TYPE, "vvm_type_test");
         return values;
     }