Merge "Dialer's fab in EmergencyDialer" into lmp-dev
diff --git a/sip/src/com/android/services/telephony/sip/SipUtil.java b/sip/src/com/android/services/telephony/sip/SipUtil.java
index c16714d..7186c6c 100644
--- a/sip/src/com/android/services/telephony/sip/SipUtil.java
+++ b/sip/src/com/android/services/telephony/sip/SipUtil.java
@@ -30,8 +30,7 @@
import android.telecomm.PhoneAccountHandle;
import android.telecomm.TelecommManager;
-import java.util.Arrays;
-import java.util.List;
+import java.util.ArrayList;
public class SipUtil {
static final String LOG_TAG = "SIP";
@@ -102,7 +101,8 @@
PhoneAccountHandle accountHandle =
SipUtil.createAccountHandle(context, profile.getUriString());
- List supportedUriSchemes = Arrays.asList(PhoneAccount.SCHEME_SIP);
+ final ArrayList<String> supportedUriSchemes = new ArrayList<String>();
+ supportedUriSchemes.add(PhoneAccount.SCHEME_SIP);
if (useSipForPstnCalls(context)) {
supportedUriSchemes.add(PhoneAccount.SCHEME_TEL);
}
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) {