Loading src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java +3 −5 Original line number Diff line number Diff line Loading @@ -1237,13 +1237,11 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall { ImsPhoneConnection foregroundConnection = mForegroundCall.getFirstConnection(); if (foregroundConnection != null) { foregroundConnection.setConferenceConnectTime(conferenceConnectTime); foregroundConnection.onConnectionEvent(android.telecom.Connection.EVENT_MERGE_START, null); foregroundConnection.handleMergeStart(); } ImsPhoneConnection backgroundConnection = findConnection(bgImsCall); if (backgroundConnection != null) { backgroundConnection.onConnectionEvent(android.telecom.Connection.EVENT_MERGE_START, null); backgroundConnection.handleMergeStart(); } try { Loading Loading @@ -2356,7 +2354,7 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall { ImsPhoneConnection conn = findConnection(call); if (conn != null) { conn.onConferenceMergeFailed(); conn.onConnectionEvent(android.telecom.Connection.EVENT_MERGE_COMPLETE, null); conn.handleMergeComplete(); } } Loading src/java/com/android/internal/telephony/imsphone/ImsPhoneConnection.java +53 −23 Original line number Diff line number Diff line Loading @@ -35,6 +35,8 @@ import android.telephony.Rlog; import android.telephony.ServiceState; import android.text.TextUtils; import com.android.ims.ImsCall; import com.android.ims.ImsCallProfile; import com.android.ims.ImsException; import com.android.ims.ImsStreamMediaProfile; import com.android.ims.internal.ImsVideoCallProviderWrapper; Loading @@ -44,9 +46,6 @@ import com.android.internal.telephony.Phone; import com.android.internal.telephony.PhoneConstants; import com.android.internal.telephony.UUSInfo; import com.android.ims.ImsCall; import com.android.ims.ImsCallProfile; import java.util.Objects; /** Loading Loading @@ -107,6 +106,11 @@ public class ImsPhoneConnection extends Connection implements private ImsRttTextHandler mRttTextHandler; private android.telecom.Connection.RttTextStream mRttTextStream; /** * Used to indicate that this call is in the midst of being merged into a conference. */ private boolean mIsMergeInProcess = false; //***** Event Constants private static final int EVENT_DTMF_DONE = 1; private static final int EVENT_PAUSE_DONE = 2; Loading Loading @@ -761,9 +765,18 @@ public class ImsPhoneConnection extends Connection implements int namep = ImsCallProfile.OIRToPresentation( callProfile.getCallExtraInt(ImsCallProfile.EXTRA_CNAP)); if (Phone.DEBUG_PHONE) { Rlog.d(LOG_TAG, "address = " + Rlog.pii(LOG_TAG, address) + " name = " + name + " nump = " + nump + " namep = " + namep); } Rlog.d(LOG_TAG, "callId = " + getTelecomCallId() + " address = " + Rlog.pii(LOG_TAG, address) + " name = " + name + " nump = " + nump + " namep = " + namep); } if (!mIsMergeInProcess) { // Only process changes to the name and address when a merge is not in process. // When call A initiated a merge with call B to form a conference C, there is a // point in time when the ImsCall transfers the conference call session into A, // at which point the ImsConferenceController creates the conference in Telecom. // For some carriers C will have a unique conference URI address. Swapping the // conference session into A, which is about to be disconnected, to be logged to // the call log using the conference address. To prevent this we suppress updates // to the call address while a merge is in process. if (!equalsBaseDialString(mAddress, address)) { mAddress = address; changed = true; Loading @@ -786,6 +799,7 @@ public class ImsPhoneConnection extends Connection implements changed = true; } } } return changed; } Loading Loading @@ -1172,4 +1186,20 @@ public class ImsPhoneConnection extends Connection implements return mImsVideoCallProviderWrapper.wasVideoPausedFromSource(source); } /** * Mark the call as in the process of being merged and inform the UI of the merge start. */ public void handleMergeStart() { mIsMergeInProcess = true; onConnectionEvent(android.telecom.Connection.EVENT_MERGE_START, null); } /** * Mark the call as done merging and inform the UI of the merge start. */ public void handleMergeComplete() { mIsMergeInProcess = false; onConnectionEvent(android.telecom.Connection.EVENT_MERGE_COMPLETE, null); } } Loading
src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java +3 −5 Original line number Diff line number Diff line Loading @@ -1237,13 +1237,11 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall { ImsPhoneConnection foregroundConnection = mForegroundCall.getFirstConnection(); if (foregroundConnection != null) { foregroundConnection.setConferenceConnectTime(conferenceConnectTime); foregroundConnection.onConnectionEvent(android.telecom.Connection.EVENT_MERGE_START, null); foregroundConnection.handleMergeStart(); } ImsPhoneConnection backgroundConnection = findConnection(bgImsCall); if (backgroundConnection != null) { backgroundConnection.onConnectionEvent(android.telecom.Connection.EVENT_MERGE_START, null); backgroundConnection.handleMergeStart(); } try { Loading Loading @@ -2356,7 +2354,7 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall { ImsPhoneConnection conn = findConnection(call); if (conn != null) { conn.onConferenceMergeFailed(); conn.onConnectionEvent(android.telecom.Connection.EVENT_MERGE_COMPLETE, null); conn.handleMergeComplete(); } } Loading
src/java/com/android/internal/telephony/imsphone/ImsPhoneConnection.java +53 −23 Original line number Diff line number Diff line Loading @@ -35,6 +35,8 @@ import android.telephony.Rlog; import android.telephony.ServiceState; import android.text.TextUtils; import com.android.ims.ImsCall; import com.android.ims.ImsCallProfile; import com.android.ims.ImsException; import com.android.ims.ImsStreamMediaProfile; import com.android.ims.internal.ImsVideoCallProviderWrapper; Loading @@ -44,9 +46,6 @@ import com.android.internal.telephony.Phone; import com.android.internal.telephony.PhoneConstants; import com.android.internal.telephony.UUSInfo; import com.android.ims.ImsCall; import com.android.ims.ImsCallProfile; import java.util.Objects; /** Loading Loading @@ -107,6 +106,11 @@ public class ImsPhoneConnection extends Connection implements private ImsRttTextHandler mRttTextHandler; private android.telecom.Connection.RttTextStream mRttTextStream; /** * Used to indicate that this call is in the midst of being merged into a conference. */ private boolean mIsMergeInProcess = false; //***** Event Constants private static final int EVENT_DTMF_DONE = 1; private static final int EVENT_PAUSE_DONE = 2; Loading Loading @@ -761,9 +765,18 @@ public class ImsPhoneConnection extends Connection implements int namep = ImsCallProfile.OIRToPresentation( callProfile.getCallExtraInt(ImsCallProfile.EXTRA_CNAP)); if (Phone.DEBUG_PHONE) { Rlog.d(LOG_TAG, "address = " + Rlog.pii(LOG_TAG, address) + " name = " + name + " nump = " + nump + " namep = " + namep); } Rlog.d(LOG_TAG, "callId = " + getTelecomCallId() + " address = " + Rlog.pii(LOG_TAG, address) + " name = " + name + " nump = " + nump + " namep = " + namep); } if (!mIsMergeInProcess) { // Only process changes to the name and address when a merge is not in process. // When call A initiated a merge with call B to form a conference C, there is a // point in time when the ImsCall transfers the conference call session into A, // at which point the ImsConferenceController creates the conference in Telecom. // For some carriers C will have a unique conference URI address. Swapping the // conference session into A, which is about to be disconnected, to be logged to // the call log using the conference address. To prevent this we suppress updates // to the call address while a merge is in process. if (!equalsBaseDialString(mAddress, address)) { mAddress = address; changed = true; Loading @@ -786,6 +799,7 @@ public class ImsPhoneConnection extends Connection implements changed = true; } } } return changed; } Loading Loading @@ -1172,4 +1186,20 @@ public class ImsPhoneConnection extends Connection implements return mImsVideoCallProviderWrapper.wasVideoPausedFromSource(source); } /** * Mark the call as in the process of being merged and inform the UI of the merge start. */ public void handleMergeStart() { mIsMergeInProcess = true; onConnectionEvent(android.telecom.Connection.EVENT_MERGE_START, null); } /** * Mark the call as done merging and inform the UI of the merge start. */ public void handleMergeComplete() { mIsMergeInProcess = false; onConnectionEvent(android.telecom.Connection.EVENT_MERGE_COMPLETE, null); } }