Change UI to represent conferenced IMS connections (2/3)
IMS conferenced connnections cannot individually hold or disconnect.
Bug: 17451623
Change-Id: I12dd39f5d0ee21af350d55750262be7848957849
diff --git a/src/com/android/services/telephony/TelephonyConnection.java b/src/com/android/services/telephony/TelephonyConnection.java
index 531e1e2..91fd49e 100644
--- a/src/com/android/services/telephony/TelephonyConnection.java
+++ b/src/com/android/services/telephony/TelephonyConnection.java
@@ -30,6 +30,7 @@
import com.android.internal.telephony.CallStateException;
import com.android.internal.telephony.Connection.PostDialListener;
import com.android.internal.telephony.Phone;
+import com.android.internal.telephony.imsphone.ImsPhoneConnection;
import java.lang.Override;
import java.util.Objects;
@@ -326,6 +327,7 @@
int newCallCapabilities = buildCallCapabilities();
newCallCapabilities = applyVideoCapabilities(newCallCapabilities);
newCallCapabilities = applyAudioQualityCapabilities(newCallCapabilities);
+ newCallCapabilities = applyConferenceTerminationCapabilities(newCallCapabilities);
if (getCallCapabilities() != newCallCapabilities) {
setCallCapabilities(newCallCapabilities);
@@ -580,6 +582,27 @@
}
/**
+ * Applies capabilities specific to conferences termination to the
+ * {@code CallCapabilities} bit-mask.
+ *
+ * @param callCapabilities The {@code CallCapabilities} bit-mask.
+ * @return The capabilities with the IMS conference capabilities applied.
+ */
+ private int applyConferenceTerminationCapabilities(int callCapabilities) {
+ int currentCapabilities = callCapabilities;
+
+ // An IMS call cannot be individually disconnected or separated from its parent conference
+ boolean isImsCall = getOriginalConnection() instanceof ImsPhoneConnection;
+ if (!isImsCall) {
+ currentCapabilities |=
+ PhoneCapabilities.DISCONNECT_FROM_CONFERENCE
+ | PhoneCapabilities.SEPARATE_FROM_CONFERENCE;
+ }
+
+ return currentCapabilities;
+ }
+
+ /**
* Returns the local video capability state for the connection.
*
* @return {@code True} if the connection has local video capabilities.
@@ -630,6 +653,13 @@
updateCallCapabilities();
}
+ /**
+ * Obtains the current call audio quality.
+ */
+ public int getAudioQuality() {
+ return mAudioQuality;
+ }
+
private static Uri getAddressFromNumber(String number) {
// Address can be null for blocked calls.
if (number == null) {