Merge "Expose data_usage_stat table in ContactsContract" into jb-mr2-dev
diff --git a/api/current.txt b/api/current.txt
index 5ab97ea..d1a904a 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -18274,7 +18274,7 @@
     field public static final java.lang.String SYNC4 = "data_sync4";
   }
 
-  protected static abstract interface ContactsContract.DataColumnsWithJoins implements android.provider.BaseColumns android.provider.ContactsContract.ContactNameColumns android.provider.ContactsContract.ContactOptionsColumns android.provider.ContactsContract.ContactStatusColumns android.provider.ContactsContract.ContactsColumns android.provider.ContactsContract.DataColumns android.provider.ContactsContract.RawContactsColumns android.provider.ContactsContract.StatusColumns {
+  protected static abstract interface ContactsContract.DataColumnsWithJoins implements android.provider.BaseColumns android.provider.ContactsContract.ContactNameColumns android.provider.ContactsContract.ContactOptionsColumns android.provider.ContactsContract.ContactStatusColumns android.provider.ContactsContract.ContactsColumns android.provider.ContactsContract.DataColumns android.provider.ContactsContract.DataUsageStatColumns android.provider.ContactsContract.RawContactsColumns android.provider.ContactsContract.StatusColumns {
   }
 
   public static final class ContactsContract.DataUsageFeedback {
@@ -18287,6 +18287,15 @@
     field public static final java.lang.String USAGE_TYPE_SHORT_TEXT = "short_text";
   }
 
+  protected static abstract interface ContactsContract.DataUsageStatColumns {
+    field public static final java.lang.String LAST_TIME_USED = "last_time_used";
+    field public static final java.lang.String TIMES_USED = "times_used";
+    field public static final java.lang.String USAGE_TYPE = "usage_type";
+    field public static final int USAGE_TYPE_CALL = 0; // 0x0
+    field public static final int USAGE_TYPE_LONG_TEXT = 1; // 0x1
+    field public static final int USAGE_TYPE_SHORT_TEXT = 2; // 0x2
+  }
+
   public static final class ContactsContract.Directory implements android.provider.BaseColumns {
     method public static void notifyDirectoryChange(android.content.ContentResolver);
     field public static final java.lang.String ACCOUNT_NAME = "accountName";
diff --git a/core/java/android/provider/ContactsContract.java b/core/java/android/provider/ContactsContract.java
index a4c4411..90bcf1c 100644
--- a/core/java/android/provider/ContactsContract.java
+++ b/core/java/android/provider/ContactsContract.java
@@ -3793,13 +3793,63 @@
     }
 
     /**
+     * Columns in the Data_Usage_Stat table
+     */
+    protected interface DataUsageStatColumns {
+        /** What the referenced {@link Data} was used for.
+         * @see DataUsageStatColumns#USAGE_TYPE_CALL
+         * @see DataUsageStatColumns#USAGE_TYPE_LONG_TEXT
+         * @see DataUsageStatColumns#USAGE_TYPE_SHORT_TEXT
+         */
+        public static final String USAGE_TYPE = "usage_type";
+
+        /** The last time (in milliseconds) this {@link Data} was used. */
+        public static final String LAST_TIME_USED = "last_time_used";
+
+        /** The number of times the referenced {@link Data} has been used for the purpose described
+         * in {@link DataUsageStatColumns#USAGE_TYPE}.
+         */
+        public static final String TIMES_USED = "times_used";
+
+        /**
+         * Integer value for USAGE_TYPE.
+         * This type of usage refers to voice interaction, which includes phone calls, voice chat,
+         * and video chat.
+         *
+         * @see DataUsageFeedback#USAGE_TYPE
+         * @see DataUsageStatColumns#USAGE_TYPE
+         */
+        public static final int USAGE_TYPE_CALL = 0;
+
+        /**
+         * Integer value for USAGE_TYPE.
+         * This type of usage refers to text interaction involving longer messages, which includes
+         * email.
+         *
+         * @see DataUsageFeedback#USAGE_TYPE
+         * @see DataUsageStatColumns#USAGE_TYPE
+         */
+        public static final int USAGE_TYPE_LONG_TEXT = 1;
+
+        /**
+         * Integer value for USAGE_TYPE.
+         * This type of usage for text interaction involving shorter messages, which includes SMS
+         * and text chat with email addresses.
+         *
+         * @see DataUsageFeedback#USAGE_TYPE
+         * @see DataUsageStatColumns#USAGE_TYPE
+         */
+        public static final int USAGE_TYPE_SHORT_TEXT = 2;
+    }
+
+    /**
      * Combines all columns returned by {@link ContactsContract.Data} table queries.
      *
      * @see ContactsContract.Data
      */
     protected interface DataColumnsWithJoins extends BaseColumns, DataColumns, StatusColumns,
             RawContactsColumns, ContactsColumns, ContactNameColumns, ContactOptionsColumns,
-            ContactStatusColumns {
+            ContactStatusColumns, DataUsageStatColumns {
     }
 
     /**