Merge "DSDA: Resolve missed call not received for 2nd MT." into main
diff --git a/src/com/android/server/telecom/CallsManager.java b/src/com/android/server/telecom/CallsManager.java
index abcdd18..3c10f4e 100644
--- a/src/com/android/server/telecom/CallsManager.java
+++ b/src/com/android/server/telecom/CallsManager.java
@@ -1828,6 +1828,24 @@
} else {
notifyCreateConnectionFailed(phoneAccountHandle, call);
}
+ } else if (mFeatureFlags.enableCallSequencing() && (hasMaximumManagedRingingCalls(call)
+ || hasMaximumManagedDialingCalls(call))) {
+ // Fail incoming call if there's already a ringing or dialing call present.
+ boolean maxRinging = hasMaximumManagedRingingCalls(call);
+ if (maxRinging) {
+ call.setMissedReason(AUTO_MISSED_MAXIMUM_RINGING);
+ call.setStartFailCause(CallFailureCause.MAX_RINGING_CALLS);
+ } else {
+ call.setMissedReason(AUTO_MISSED_MAXIMUM_DIALING);
+ }
+ call.getAnalytics().setMissedReason(call.getMissedReason());
+ mCallLogManager.logCall(call, Calls.MISSED_TYPE,
+ true /*showNotificationForMissedCall*/, null /*CallFilteringResult*/);
+ if (isConference) {
+ notifyCreateConferenceFailed(phoneAccountHandle, call);
+ } else {
+ notifyCreateConnectionFailed(phoneAccountHandle, call);
+ }
} else if (call.isTransactionalCall()) {
// transactional calls should skip Call#startCreateConnection below
// as that is meant for Call objects with a ConnectionServiceWrapper
@@ -3544,6 +3562,9 @@
*/
public void disconnectCallOld(Call call, int previousState) {
call.disconnect();
+ for (CallsManagerListener listener : mListeners) {
+ listener.onCallStateChanged(call, previousState, call.getState());
+ }
processDisconnectCallAndCleanup(call, previousState);
}
@@ -3554,9 +3575,6 @@
* @param previousState The previous call state before the call is disconnected.
*/
public void processDisconnectCallAndCleanup(Call call, int previousState) {
- for (CallsManagerListener listener : mListeners) {
- listener.onCallStateChanged(call, previousState, call.getState());
- }
// Cancel any of the outgoing call futures if they're still around.
if (mPendingCallConfirm != null && !mPendingCallConfirm.isDone()) {
mPendingCallConfirm.complete(null);