Merge "Add CarrierConfig option for removing Hold during Ims Calls" into nyc-mr1-dev
diff --git a/src/com/android/services/telephony/GsmConnection.java b/src/com/android/services/telephony/GsmConnection.java
index dd47e8d..eec0951 100644
--- a/src/com/android/services/telephony/GsmConnection.java
+++ b/src/com/android/services/telephony/GsmConnection.java
@@ -60,6 +60,9 @@
protected int buildConnectionCapabilities() {
int capabilities = super.buildConnectionCapabilities();
capabilities |= CAPABILITY_MUTE;
+ // Overwrites TelephonyConnection.buildConnectionCapabilities() and resets the hold options
+ // because all GSM calls should hold, even if the carrier config option is set to not show
+ // hold for IMS calls.
if (!shouldTreatAsEmergencyCall()) {
capabilities |= CAPABILITY_SUPPORT_HOLD;
if (getState() == STATE_ACTIVE || getState() == STATE_HOLDING) {
diff --git a/src/com/android/services/telephony/TelephonyConnection.java b/src/com/android/services/telephony/TelephonyConnection.java
index f4b98f0..71f52f4 100644
--- a/src/com/android/services/telephony/TelephonyConnection.java
+++ b/src/com/android/services/telephony/TelephonyConnection.java
@@ -662,12 +662,10 @@
if (mOriginalConnection != null && mOriginalConnection.isIncoming()) {
callCapabilities |= CAPABILITY_SPEED_UP_MT_AUDIO;
}
- if (isImsConnection()) {
- if (!shouldTreatAsEmergencyCall()) {
- callCapabilities |= CAPABILITY_SUPPORT_HOLD;
- if (getState() == STATE_ACTIVE || getState() == STATE_HOLDING) {
- callCapabilities |= CAPABILITY_HOLD;
- }
+ if (!shouldTreatAsEmergencyCall() && isImsConnection() && canHoldImsCalls()) {
+ callCapabilities |= CAPABILITY_SUPPORT_HOLD;
+ if (getState() == STATE_ACTIVE || getState() == STATE_HOLDING) {
+ callCapabilities |= CAPABILITY_HOLD;
}
}
@@ -901,6 +899,12 @@
return true;
}
+ private boolean canHoldImsCalls() {
+ PersistableBundle b = getCarrierConfig();
+ // Return true if the CarrierConfig is unavailable
+ return b == null || b.getBoolean(CarrierConfigManager.KEY_ALLOW_HOLD_IN_IMS_CALL_BOOL);
+ }
+
private PersistableBundle getCarrierConfig() {
Phone phone = getPhone();
if (phone == null) {