More video related API fixes

android.telecom.Connection.VideoProvider
* onSetPauseImage takes Uri instead of String
* changeCallDataUsage -> setCallDataUsage
* add quality constants to changeVideoQuality() docs

android.telecom.InCallService.VideoCall
* setPauseImage takes Uri instea dof String

android.telecom.VideoProfile.VideoState
* Move constants to VideoProfile, prefix with STATE_

Bug: 21040387
Bug: 21066505
Change-Id: I764e72aced9d1e2d30d6d0cf0862100860d47c79
diff --git a/telecomm/java/android/telecom/Call.java b/telecomm/java/android/telecom/Call.java
index adab00b..d74c61c 100644
--- a/telecomm/java/android/telecom/Call.java
+++ b/telecomm/java/android/telecom/Call.java
@@ -202,7 +202,7 @@
 
         /**
          * For video calls, indicates whether the outgoing video for the call can be paused using
-         * the {@link android.telecom.VideoProfile.VideoState#PAUSED} VideoState.
+         * the {@link android.telecom.VideoProfile#STATE_PAUSED} VideoState.
          */
         public static final int CAPABILITY_CAN_PAUSE_VIDEO = 0x00100000;
 
diff --git a/telecomm/java/android/telecom/Conference.java b/telecomm/java/android/telecom/Conference.java
index e2971f9..6fa94b9 100644
--- a/telecomm/java/android/telecom/Conference.java
+++ b/telecomm/java/android/telecom/Conference.java
@@ -366,10 +366,10 @@
 
     /**
      * Set the video state for the conference.
-     * Valid values: {@link VideoProfile.VideoState#AUDIO_ONLY},
-     * {@link VideoProfile.VideoState#BIDIRECTIONAL},
-     * {@link VideoProfile.VideoState#TX_ENABLED},
-     * {@link VideoProfile.VideoState#RX_ENABLED}.
+     * Valid values: {@link VideoProfile#STATE_AUDIO_ONLY},
+     * {@link VideoProfile#STATE_BIDIRECTIONAL},
+     * {@link VideoProfile#STATE_TX_ENABLED},
+     * {@link VideoProfile#STATE_RX_ENABLED}.
      *
      * @param videoState The new video state.
      */
diff --git a/telecomm/java/android/telecom/Connection.java b/telecomm/java/android/telecom/Connection.java
index 5076c38..2ee5d25 100644
--- a/telecomm/java/android/telecom/Connection.java
+++ b/telecomm/java/android/telecom/Connection.java
@@ -186,7 +186,7 @@
 
     /**
      * For video calls, indicates whether the outgoing video for the call can be paused using
-     * the {@link android.telecom.VideoProfile.VideoState#PAUSED} VideoState.
+     * the {@link android.telecom.VideoProfile#STATE_PAUSED} VideoState.
      */
     public static final int CAPABILITY_CAN_PAUSE_VIDEO = 0x00100000;
 
@@ -484,7 +484,7 @@
                         onRequestConnectionDataUsage();
                         break;
                     case MSG_SET_PAUSE_IMAGE:
-                        onSetPauseImage((String) msg.obj);
+                        onSetPauseImage((Uri) msg.obj);
                         break;
                     default:
                         break;
@@ -547,7 +547,7 @@
                 mMessageHandler.obtainMessage(MSG_REQUEST_CONNECTION_DATA_USAGE).sendToTarget();
             }
 
-            public void setPauseImage(String uri) {
+            public void setPauseImage(Uri uri) {
                 mMessageHandler.obtainMessage(MSG_SET_PAUSE_IMAGE, uri).sendToTarget();
             }
         }
@@ -642,7 +642,7 @@
          *
          * @param uri URI of image to display.
          */
-        public abstract void onSetPauseImage(String uri);
+        public abstract void onSetPauseImage(Uri uri);
 
         /**
          * Invokes callback method defined in listening {@link InCallService} implementations.
@@ -726,7 +726,7 @@
          *
          * @param dataUsage The updated data usage.
          */
-        public void changeCallDataUsage(long dataUsage) {
+        public void setCallDataUsage(long dataUsage) {
             if (mVideoCallbacks != null) {
                 try {
                     for (IVideoCallback callback : mVideoCallbacks.values()) {
@@ -740,6 +740,17 @@
         /**
          * Invokes callback method defined in listening {@link InCallService} implementations.
          *
+         * @param dataUsage The updated data usage.
+         * @deprecated - Use {@link #setCallDataUsage(long)} instead.
+         * @hide
+         */
+        public void changeCallDataUsage(long dataUsage) {
+            setCallDataUsage(dataUsage);
+        }
+
+        /**
+         * Invokes callback method defined in listening {@link InCallService} implementations.
+         *
          * @param cameraCapabilities The changed camera capabilities.
          */
         public void changeCameraCapabilities(VideoProfile.CameraCapabilities cameraCapabilities) {
@@ -756,6 +767,12 @@
         /**
          * Invokes callback method defined in listening {@link InCallService} implementations.
          *
+         * Allowed values:
+         * {@link VideoProfile#QUALITY_HIGH},
+         * {@link VideoProfile#QUALITY_MEDIUM},
+         * {@link VideoProfile#QUALITY_LOW},
+         * {@link VideoProfile#QUALITY_DEFAULT}.
+         *
          * @param videoQuality The updated video quality.
          */
         public void changeVideoQuality(int videoQuality) {
@@ -859,10 +876,10 @@
 
     /**
      * Returns the video state of the connection.
-     * Valid values: {@link VideoProfile.VideoState#AUDIO_ONLY},
-     * {@link VideoProfile.VideoState#BIDIRECTIONAL},
-     * {@link VideoProfile.VideoState#TX_ENABLED},
-     * {@link VideoProfile.VideoState#RX_ENABLED}.
+     * Valid values: {@link VideoProfile#STATE_AUDIO_ONLY},
+     * {@link VideoProfile#STATE_BIDIRECTIONAL},
+     * {@link VideoProfile#STATE_TX_ENABLED},
+     * {@link VideoProfile#STATE_RX_ENABLED}.
      *
      * @return The video state of the connection.
      * @hide
@@ -1027,10 +1044,10 @@
 
     /**
      * Set the video state for the connection.
-     * Valid values: {@link VideoProfile.VideoState#AUDIO_ONLY},
-     * {@link VideoProfile.VideoState#BIDIRECTIONAL},
-     * {@link VideoProfile.VideoState#TX_ENABLED},
-     * {@link VideoProfile.VideoState#RX_ENABLED}.
+     * Valid values: {@link VideoProfile#STATE_AUDIO_ONLY},
+     * {@link VideoProfile#STATE_BIDIRECTIONAL},
+     * {@link VideoProfile#STATE_TX_ENABLED},
+     * {@link VideoProfile#STATE_RX_ENABLED}.
      *
      * @param videoState The new video state.
      */
diff --git a/telecomm/java/android/telecom/ConnectionRequest.java b/telecomm/java/android/telecom/ConnectionRequest.java
index f5cceea..975df5d 100644
--- a/telecomm/java/android/telecom/ConnectionRequest.java
+++ b/telecomm/java/android/telecom/ConnectionRequest.java
@@ -88,10 +88,10 @@
 
     /**
      * Describes the video states supported by the client requesting the connection.
-     * Valid values: {@link VideoProfile.VideoState#AUDIO_ONLY},
-     * {@link VideoProfile.VideoState#BIDIRECTIONAL},
-     * {@link VideoProfile.VideoState#TX_ENABLED},
-     * {@link VideoProfile.VideoState#RX_ENABLED}.
+     * Valid values: {@link VideoProfile#STATE_AUDIO_ONLY},
+     * {@link VideoProfile#STATE_BIDIRECTIONAL},
+     * {@link VideoProfile#STATE_TX_ENABLED},
+     * {@link VideoProfile#STATE_RX_ENABLED}.
      *
      * @return The video state for the connection.
      */
diff --git a/telecomm/java/android/telecom/InCallService.java b/telecomm/java/android/telecom/InCallService.java
index 63a416b..182a7f5 100644
--- a/telecomm/java/android/telecom/InCallService.java
+++ b/telecomm/java/android/telecom/InCallService.java
@@ -20,6 +20,7 @@
 import android.annotation.SystemApi;
 import android.app.Service;
 import android.content.Intent;
+import android.net.Uri;
 import android.os.Handler;
 import android.os.IBinder;
 import android.os.Looper;
@@ -466,7 +467,7 @@
          *
          * @param uri URI of image to display.
          */
-        public abstract void setPauseImage(String uri);
+        public abstract void setPauseImage(Uri uri);
 
         /**
          * Callback class which invokes callbacks after video call actions occur.
diff --git a/telecomm/java/android/telecom/RemoteConnection.java b/telecomm/java/android/telecom/RemoteConnection.java
index f2e6bcb..19bb3f1 100644
--- a/telecomm/java/android/telecom/RemoteConnection.java
+++ b/telecomm/java/android/telecom/RemoteConnection.java
@@ -379,7 +379,7 @@
             }
         }
 
-        public void setPauseImage(String uri) {
+        public void setPauseImage(Uri uri) {
             try {
                 mVideoProviderBinder.setPauseImage(uri);
             } catch (RemoteException e) {
diff --git a/telecomm/java/android/telecom/TelecomManager.java b/telecomm/java/android/telecom/TelecomManager.java
index ebd3f12..b2c036c 100644
--- a/telecomm/java/android/telecom/TelecomManager.java
+++ b/telecomm/java/android/telecom/TelecomManager.java
@@ -142,10 +142,10 @@
      * Optional extra for {@link android.content.Intent#ACTION_CALL} containing an integer that
      * determines the desired video state for an outgoing call.
      * Valid options:
-     * {@link VideoProfile.VideoState#AUDIO_ONLY},
-     * {@link VideoProfile.VideoState#BIDIRECTIONAL},
-     * {@link VideoProfile.VideoState#RX_ENABLED},
-     * {@link VideoProfile.VideoState#TX_ENABLED}.
+     * {@link VideoProfile#STATE_AUDIO_ONLY},
+     * {@link VideoProfile#STATE_BIDIRECTIONAL},
+     * {@link VideoProfile#STATE_RX_ENABLED},
+     * {@link VideoProfile#STATE_TX_ENABLED}.
      */
     public static final String EXTRA_START_CALL_WITH_VIDEO_STATE =
             "android.telecom.extra.START_CALL_WITH_VIDEO_STATE";
diff --git a/telecomm/java/android/telecom/VideoCallImpl.java b/telecomm/java/android/telecom/VideoCallImpl.java
index 5352dfc..c8072d1 100644
--- a/telecomm/java/android/telecom/VideoCallImpl.java
+++ b/telecomm/java/android/telecom/VideoCallImpl.java
@@ -16,6 +16,7 @@
 
 package android.telecom;
 
+import android.net.Uri;
 import android.os.Handler;
 import android.os.IBinder;
 import android.os.Looper;
@@ -302,7 +303,7 @@
     }
 
     /** {@inheritDoc} */
-    public void setPauseImage(String uri) {
+    public void setPauseImage(Uri uri) {
         try {
             mVideoProvider.setPauseImage(uri);
         } catch (RemoteException e) {
diff --git a/telecomm/java/android/telecom/VideoProfile.java b/telecomm/java/android/telecom/VideoProfile.java
index 7ac4090..71de505 100644
--- a/telecomm/java/android/telecom/VideoProfile.java
+++ b/telecomm/java/android/telecom/VideoProfile.java
@@ -48,6 +48,31 @@
      */
     public static final int QUALITY_DEFAULT = 4;
 
+    /**
+     * Call is currently in an audio-only mode with no video transmission or receipt.
+     */
+    public static final int STATE_AUDIO_ONLY = 0x0;
+
+    /**
+     * Video transmission is enabled.
+     */
+    public static final int STATE_TX_ENABLED = 0x1;
+
+    /**
+     * Video reception is enabled.
+     */
+    public static final int STATE_RX_ENABLED = 0x2;
+
+    /**
+     * Video signal is bi-directional.
+     */
+    public static final int STATE_BIDIRECTIONAL = STATE_TX_ENABLED | STATE_RX_ENABLED;
+
+    /**
+     * Video is paused.
+     */
+    public static final int STATE_PAUSED = 0x4;
+
     private final int mVideoState;
 
     private final int mQuality;
@@ -74,11 +99,11 @@
 
     /**
      * The video state of the call.
-     * Valid values: {@link VideoProfile.VideoState#AUDIO_ONLY},
-     * {@link VideoProfile.VideoState#BIDIRECTIONAL},
-     * {@link VideoProfile.VideoState#TX_ENABLED},
-     * {@link VideoProfile.VideoState#RX_ENABLED},
-     * {@link VideoProfile.VideoState#PAUSED}.
+     * Valid values: {@link VideoProfile#STATE_AUDIO_ONLY},
+     * {@link VideoProfile#STATE_BIDIRECTIONAL},
+     * {@link VideoProfile#STATE_TX_ENABLED},
+     * {@link VideoProfile#STATE_RX_ENABLED},
+     * {@link VideoProfile#STATE_PAUSED}.
      */
     public int getVideoState() {
         return mVideoState;
@@ -162,28 +187,41 @@
     public static class VideoState {
         /**
          * Call is currently in an audio-only mode with no video transmission or receipt.
+         * @deprecated Use {@link VideoProfile#STATE_AUDIO_ONLY} instead
+         * @hide
          */
-        public static final int AUDIO_ONLY = 0x0;
+        public static final int AUDIO_ONLY = VideoProfile.STATE_AUDIO_ONLY;
 
         /**
          * Video transmission is enabled.
+         * @deprecated Use {@link VideoProfile#STATE_TX_ENABLED} instead
+         * @hide
          */
-        public static final int TX_ENABLED = 0x1;
+        public static final int TX_ENABLED = VideoProfile.STATE_TX_ENABLED;
 
         /**
          * Video reception is enabled.
+         * @deprecated Use {@link VideoProfile#STATE_RX_ENABLED} instead
+         * @hide
          */
-        public static final int RX_ENABLED = 0x2;
+        public static final int RX_ENABLED = VideoProfile.STATE_RX_ENABLED;
 
         /**
          * Video signal is bi-directional.
+         * @deprecated Use {@link VideoProfile#STATE_BIDIRECTIONAL} instead
+         * @hide
          */
-        public static final int BIDIRECTIONAL = TX_ENABLED | RX_ENABLED;
+        public static final int BIDIRECTIONAL = VideoProfile.STATE_BIDIRECTIONAL;
 
         /**
          * Video is paused.
+         * @deprecated Use {@link VideoProfile#STATE_PAUSED} instead
+         * @hide
          */
-        public static final int PAUSED = 0x4;
+        public static final int PAUSED = VideoProfile.STATE_PAUSED;
+
+        /** @hide */
+        private VideoState() {}
 
         /**
          * Whether the video state is audio only.
@@ -191,7 +229,8 @@
          * @return Returns true if the video state is audio only.
          */
         public static boolean isAudioOnly(int videoState) {
-            return !hasState(videoState, TX_ENABLED) && !hasState(videoState, RX_ENABLED);
+            return !hasState(videoState, VideoProfile.STATE_TX_ENABLED)
+                    && !hasState(videoState, VideoProfile.STATE_RX_ENABLED);
         }
 
         /**
@@ -201,8 +240,9 @@
          * @return Returns true if the video state TX or RX or Bidirectional
          */
         public static boolean isVideo(int videoState) {
-            return hasState(videoState, TX_ENABLED) || hasState(videoState, RX_ENABLED)
-                    || hasState(videoState, BIDIRECTIONAL);
+            return hasState(videoState, VideoProfile.STATE_TX_ENABLED)
+                    || hasState(videoState, VideoProfile.STATE_RX_ENABLED)
+                    || hasState(videoState, VideoProfile.STATE_BIDIRECTIONAL);
         }
 
         /**
@@ -211,7 +251,7 @@
          * @return Returns true if the video transmission is enabled.
          */
         public static boolean isTransmissionEnabled(int videoState) {
-            return hasState(videoState, TX_ENABLED);
+            return hasState(videoState, VideoProfile.STATE_TX_ENABLED);
         }
 
         /**
@@ -220,7 +260,7 @@
          * @return Returns true if the video transmission is enabled.
          */
         public static boolean isReceptionEnabled(int videoState) {
-            return hasState(videoState, RX_ENABLED);
+            return hasState(videoState, VideoProfile.STATE_RX_ENABLED);
         }
 
         /**
@@ -229,7 +269,7 @@
          * @return Returns true if the video signal is bi-directional.
          */
         public static boolean isBidirectional(int videoState) {
-            return hasState(videoState, BIDIRECTIONAL);
+            return hasState(videoState, VideoProfile.STATE_BIDIRECTIONAL);
         }
 
         /**
@@ -238,7 +278,7 @@
          * @return Returns true if the video is paused.
          */
         public static boolean isPaused(int videoState) {
-            return hasState(videoState, PAUSED);
+            return hasState(videoState, VideoProfile.STATE_PAUSED);
         }
 
         /**