From a3fc54f0d879cbf0bdbb5bd2fe5043dd19232191 Mon Sep 17 00:00:00 2001 From: Tyler Gunn Date: Tue, 19 Jan 2016 15:59:34 -0800 Subject: [PATCH] DO NOT MERGE Add capability to determine if downgrade to audio is denied. By default we assume downgrade to audio is permitted; this capability probides a means for a carrier to specifically deny that. Bug: 22728624 Change-Id: I75e0a5b9e5ad2d970003a4691b6fc0ac0dcfe9e0 --- api/current.txt | 2 ++ api/system-current.txt | 2 ++ telecomm/java/android/telecom/Call.java | 21 +++++++++++++++++-- telecomm/java/android/telecom/Connection.java | 20 +++++++++++++++++- 4 files changed, 42 insertions(+), 3 deletions(-) diff --git a/api/current.txt b/api/current.txt index e29d5ec285431..369127083d2fc 100644 --- a/api/current.txt +++ b/api/current.txt @@ -30003,6 +30003,7 @@ package android.telecom { method public static boolean hasProperty(int, int); method public boolean hasProperty(int); method public static java.lang.String propertiesToString(int); + field public static final int CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO = 4194304; // 0x400000 field public static final int CAPABILITY_CAN_PAUSE_VIDEO = 1048576; // 0x100000 field public static final int CAPABILITY_DISCONNECT_FROM_CONFERENCE = 8192; // 0x2000 field public static final int CAPABILITY_HOLD = 1; // 0x1 @@ -30142,6 +30143,7 @@ package android.telecom { method public final void setVideoProvider(android.telecom.Connection.VideoProvider); method public final void setVideoState(int); method public static java.lang.String stateToString(int); + field public static final int CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO = 8388608; // 0x800000 field public static final int CAPABILITY_CAN_PAUSE_VIDEO = 1048576; // 0x100000 field public static final int CAPABILITY_CAN_UPGRADE_TO_VIDEO = 524288; // 0x80000 field public static final int CAPABILITY_DISCONNECT_FROM_CONFERENCE = 8192; // 0x2000 diff --git a/api/system-current.txt b/api/system-current.txt index 47aeee3944a5b..b09a4a2afcfd5 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -32179,6 +32179,7 @@ package android.telecom { method public static boolean hasProperty(int, int); method public boolean hasProperty(int); method public static java.lang.String propertiesToString(int); + field public static final int CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO = 4194304; // 0x400000 field public static final int CAPABILITY_CAN_PAUSE_VIDEO = 1048576; // 0x100000 field public static final int CAPABILITY_DISCONNECT_FROM_CONFERENCE = 8192; // 0x2000 field public static final int CAPABILITY_HOLD = 1; // 0x1 @@ -32329,6 +32330,7 @@ package android.telecom { method public final void setVideoProvider(android.telecom.Connection.VideoProvider); method public final void setVideoState(int); method public static java.lang.String stateToString(int); + field public static final int CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO = 8388608; // 0x800000 field public static final int CAPABILITY_CAN_PAUSE_VIDEO = 1048576; // 0x100000 field public static final int CAPABILITY_CAN_UPGRADE_TO_VIDEO = 524288; // 0x80000 field public static final int CAPABILITY_DISCONNECT_FROM_CONFERENCE = 8192; // 0x2000 diff --git a/telecomm/java/android/telecom/Call.java b/telecomm/java/android/telecom/Call.java index 65117055045ce..270c8ceb84f10 100644 --- a/telecomm/java/android/telecom/Call.java +++ b/telecomm/java/android/telecom/Call.java @@ -24,7 +24,6 @@ import android.os.Handler; import java.lang.String; import java.util.ArrayList; import java.util.Collections; -import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Objects; @@ -210,7 +209,22 @@ public final class Call { * Call sends responses through connection. * @hide */ - public static final int CAPABILITY_CAN_SEND_RESPONSE_VIA_CONNECTION = 0x00400000; + public static final int CAPABILITY_CAN_SEND_RESPONSE_VIA_CONNECTION = 0x00200000; + + /** + * When set, prevents a video {@code Call} from being downgraded to an audio-only call. + *

+ * Should be set when the VideoState has the {@link VideoProfile#STATE_TX_ENABLED} or + * {@link VideoProfile#STATE_RX_ENABLED} bits set to indicate that the connection cannot be + * downgraded from a video call back to a VideoState of + * {@link VideoProfile#STATE_AUDIO_ONLY}. + *

+ * Intuitively, a call which can be downgraded to audio should also have local and remote + * video + * capabilities (see {@link #CAPABILITY_SUPPORTS_VT_LOCAL_BIDIRECTIONAL} and + * {@link #CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL}). + */ + public static final int CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO = 0x00400000; //****************************************************************************************** // Next CAPABILITY value: 0x00800000 @@ -327,6 +341,9 @@ public final class Call { if (can(capabilities, CAPABILITY_SUPPORTS_VT_REMOTE_TX)) { builder.append(" CAPABILITY_SUPPORTS_VT_REMOTE_TX"); } + if (can(capabilities, CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO)) { + builder.append(" CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO"); + } if (can(capabilities, CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL)) { builder.append(" CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL"); } diff --git a/telecomm/java/android/telecom/Connection.java b/telecomm/java/android/telecom/Connection.java index 41157565bfddc..c9fc51e5ddcd8 100644 --- a/telecomm/java/android/telecom/Connection.java +++ b/telecomm/java/android/telecom/Connection.java @@ -255,8 +255,23 @@ public abstract class Connection extends Conferenceable { */ public static final int CAPABILITY_CAN_SEND_RESPONSE_VIA_CONNECTION = 0x00400000; + /** + * When set, prevents a video call from being downgraded to an audio-only call. + *

+ * Should be set when the VideoState has the {@link VideoProfile#STATE_TX_ENABLED} or + * {@link VideoProfile#STATE_RX_ENABLED} bits set to indicate that the connection cannot be + * downgraded from a video call back to a VideoState of + * {@link VideoProfile#STATE_AUDIO_ONLY}. + *

+ * Intuitively, a call which can be downgraded to audio should also have local and remote + * video + * capabilities (see {@link #CAPABILITY_SUPPORTS_VT_LOCAL_BIDIRECTIONAL} and + * {@link #CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL}). + */ + public static final int CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO = 0x00800000; + //********************************************************************************************** - // Next CAPABILITY value: 0x00800000 + // Next CAPABILITY value: 0x01000000 //********************************************************************************************** /** @@ -371,6 +386,9 @@ public abstract class Connection extends Conferenceable { if (can(capabilities, CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL)) { builder.append(" CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL"); } + if (can(capabilities, CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO)) { + builder.append(" CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO"); + } if (can(capabilities, CAPABILITY_HIGH_DEF_AUDIO)) { builder.append(" CAPABILITY_HIGH_DEF_AUDIO"); }