Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d08c7213 authored by Hunsuk Choi's avatar Hunsuk Choi Committed by Cherrypicker Worker
Browse files

Hangup CS waiting calls when call waiting is disabled

Bug: 202463005
Test: atest
Change-Id: I3106919844bd4d8aa6528423f4948b6e3412f8e7
(cherry picked from commit ca2c7d4ec0bbd3e4470b69e604b845b7a054fb43)
Merged-In: I3106919844bd4d8aa6528423f4948b6e3412f8e7
parent d337dba0
Loading
Loading
Loading
Loading
+22 −4
Original line number Diff line number Diff line
@@ -967,10 +967,7 @@ public class GsmCdmaCallTracker extends CallTracker {
                            } else {
                                newUnknownConnectionCdma = mConnections[i];
                            }
                        } else if (mPhone.getTerminalBasedCallWaitingState()
                                    == CallWaitingController.TERMINAL_BASED_NOT_ACTIVATED
                                && newRinging.getState() == Call.State.WAITING) {
                            mCi.hangupWaitingOrBackground(obtainCompleteMessage());
                        } else if (hangupWaitingCallSilently(i)) {
                            return;
                        }
                    }
@@ -1023,6 +1020,9 @@ public class GsmCdmaCallTracker extends CallTracker {

                if (mConnections[i].getCall() == mRingingCall) {
                    newRinging = mConnections[i];
                    if (hangupWaitingCallSilently(i)) {
                        return;
                    }
                } // else something strange happened
                hasNonHangupStateChanged = true;
            } else if (conn != null && dc != null) { /* implicit conn.compareTo(dc) */
@@ -1914,4 +1914,22 @@ public class GsmCdmaCallTracker extends CallTracker {
    public void cleanupCalls() {
        pollCallsWhenSafe();
    }

    private boolean hangupWaitingCallSilently(int index) {
        if (index < 0 || index >= mConnections.length) return false;

        GsmCdmaConnection newRinging = mConnections[index];
        if (newRinging == null) return false;

        if ((mPhone.getTerminalBasedCallWaitingState()
                        == CallWaitingController.TERMINAL_BASED_NOT_ACTIVATED)
                && (newRinging.getState() == Call.State.WAITING)) {
            Rlog.d(LOG_TAG, "hangupWaitingCallSilently");
            newRinging.dispose();
            mConnections[index] = null;
            mCi.hangupWaitingOrBackground(obtainCompleteMessage());
            return true;
        }
        return false;
    }
}