Set disable add call during video call extra from carrier config
Bug: 29047863
Change-Id: Ic32f01c40337eccd197cc2573f5a01f81b35f3ea
diff --git a/src/java/com/android/internal/telephony/Connection.java b/src/java/com/android/internal/telephony/Connection.java
index e0b5bb8..35a0f01 100644
--- a/src/java/com/android/internal/telephony/Connection.java
+++ b/src/java/com/android/internal/telephony/Connection.java
@@ -186,6 +186,7 @@
private Bundle mExtras;
private int mPhoneType;
private boolean mAnsweringDisconnectsActiveCall;
+ private boolean mAllowAddCallDuringVideoCall;
protected Connection(int phoneType) {
mPhoneType = phoneType;
@@ -758,11 +759,12 @@
* listeners.
*/
public void setConnectionExtras(Bundle extras) {
- if(extras != null) {
+ if (extras != null) {
mExtras = new Bundle(extras);
} else {
mExtras = null;
}
+
for (Listener l : mListeners) {
l.onExtrasChanged(mExtras);
}
@@ -773,7 +775,7 @@
* @return the connection extras.
*/
public Bundle getConnectionExtras() {
- return mExtras;
+ return mExtras == null ? null : new Bundle(mExtras);
}
/**
@@ -796,6 +798,14 @@
mAnsweringDisconnectsActiveCall = answeringDisconnectsActiveCall;
}
+ public boolean shouldAllowAddCallDuringVideoCall() {
+ return mAllowAddCallDuringVideoCall;
+ }
+
+ public void setAllowAddCallDuringVideoCall(boolean allowAddCallDuringVideoCall) {
+ mAllowAddCallDuringVideoCall = allowAddCallDuringVideoCall;
+ }
+
/**
* Sets the call substate for the current connection and reports the changes to all listeners.
* Valid call substates are defined in {@link android.telecom.Connection}.
diff --git a/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java b/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java
index 8f96305..deeb5e5 100644
--- a/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java
+++ b/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java
@@ -137,6 +137,7 @@
shouldDisconnectActiveCallOnAnswer(activeCall, imsCall);
conn.setActiveCallDisconnectedOnAnswer(answeringWillDisconnect);
}
+ conn.setAllowAddCallDuringVideoCall(mAllowAddCallDuringVideoCall);
addConnection(conn);
setVideoCallProvider(conn, imsCall);
@@ -240,6 +241,12 @@
*/
private boolean mDropVideoCallWhenAnsweringAudioCall = false;
+ /**
+ * Carrier configuration option which determines whether adding a call during a video call
+ * should be allowed.
+ */
+ private boolean mAllowAddCallDuringVideoCall = true;
+
//***** Events
@@ -483,6 +490,9 @@
mDropVideoCallWhenAnsweringAudioCall =
carrierConfig.getBoolean(
CarrierConfigManager.KEY_DROP_VIDEO_CALL_WHEN_ANSWERING_AUDIO_CALL_BOOL);
+ mAllowAddCallDuringVideoCall =
+ carrierConfig.getBoolean(
+ CarrierConfigManager.KEY_ALLOW_ADD_CALL_DURING_VIDEO_CALL_BOOL);
}
private void handleEcmTimer(int action) {
@@ -557,6 +567,7 @@
mEventLog.writeOnImsCallStart(imsCall.getSession(), callees[0]);
setVideoCallProvider(conn, imsCall);
+ conn.setAllowAddCallDuringVideoCall(mAllowAddCallDuringVideoCall);
} catch (ImsException e) {
loge("dialInternal : " + e);
conn.setDisconnectCause(DisconnectCause.ERROR_UNSPECIFIED);