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

Commit 9893c578 authored by Thomas Stuart's avatar Thomas Stuart
Browse files

merge onReject into onDisconnect; propagate cause

bug:268107048
Test: CTS
Change-Id: Idb736f57924c2770a3c30a800061dfbf209b80e8
parent 79dbb49e
Loading
Loading
Loading
Loading
+8 −4
Original line number Original line Diff line number Diff line
@@ -2701,7 +2701,8 @@ public class Call implements CreateConnectionResponse, EventManager.Loggable,
            // hangup, not reject.
            // hangup, not reject.
            setOverrideDisconnectCauseCode(new DisconnectCause(DisconnectCause.REJECTED));
            setOverrideDisconnectCauseCode(new DisconnectCause(DisconnectCause.REJECTED));
            if (mTransactionalService != null) {
            if (mTransactionalService != null) {
                mTransactionalService.onReject(this, DisconnectCause.REJECTED);
                mTransactionalService.onDisconnect(this,
                        new DisconnectCause(DisconnectCause.REJECTED));
            } else if (mConnectionService != null) {
            } else if (mConnectionService != null) {
                mConnectionService.disconnect(this);
                mConnectionService.disconnect(this);
            } else {
            } else {
@@ -2714,7 +2715,8 @@ public class Call implements CreateConnectionResponse, EventManager.Loggable,
            mVideoStateHistory |= mVideoState;
            mVideoStateHistory |= mVideoState;


            if (mTransactionalService != null) {
            if (mTransactionalService != null) {
                mTransactionalService.onReject(this, DisconnectCause.REJECTED);
                mTransactionalService.onDisconnect(this,
                        new DisconnectCause(DisconnectCause.REJECTED));
            } else if (mConnectionService != null) {
            } else if (mConnectionService != null) {
                mConnectionService.reject(this, rejectWithMessage, textMessage);
                mConnectionService.reject(this, rejectWithMessage, textMessage);
            } else {
            } else {
@@ -2737,7 +2739,8 @@ public class Call implements CreateConnectionResponse, EventManager.Loggable,
            // Since its simulated reason we can't pass along the reject reason.
            // Since its simulated reason we can't pass along the reject reason.
            setOverrideDisconnectCauseCode(new DisconnectCause(DisconnectCause.REJECTED));
            setOverrideDisconnectCauseCode(new DisconnectCause(DisconnectCause.REJECTED));
            if (mTransactionalService != null) {
            if (mTransactionalService != null) {
                mTransactionalService.onReject(this, DisconnectCause.REJECTED);
                mTransactionalService.onDisconnect(this,
                        new DisconnectCause(DisconnectCause.REJECTED));
            } else if (mConnectionService != null) {
            } else if (mConnectionService != null) {
                mConnectionService.disconnect(this);
                mConnectionService.disconnect(this);
            } else {
            } else {
@@ -2749,7 +2752,8 @@ public class Call implements CreateConnectionResponse, EventManager.Loggable,
            // Ensure video state history tracks video state at time of rejection.
            // Ensure video state history tracks video state at time of rejection.
            mVideoStateHistory |= mVideoState;
            mVideoStateHistory |= mVideoState;
            if (mTransactionalService != null) {
            if (mTransactionalService != null) {
                mTransactionalService.onReject(this, rejectReason);
                mTransactionalService.onDisconnect(this,
                        new DisconnectCause(DisconnectCause.REJECTED));
            } else if (mConnectionService != null) {
            } else if (mConnectionService != null) {
                mConnectionService.rejectWithReason(this, rejectReason);
                mConnectionService.rejectWithReason(this, rejectReason);
            } else {
            } else {
+3 −29
Original line number Original line Diff line number Diff line
@@ -388,7 +388,7 @@ public class TransactionalServiceWrapper implements
            Log.i(TAG, String.format(Locale.US, "onSetInactive: callId=[%s]", call.getId()));
            Log.i(TAG, String.format(Locale.US, "onSetInactive: callId=[%s]", call.getId()));
            mTransactionManager.addTransaction(
            mTransactionManager.addTransaction(
                    new CallEventCallbackAckTransaction(mICallEventCallback,
                    new CallEventCallbackAckTransaction(mICallEventCallback,
                            ON_SET_INACTIVE, call.getId(), 0), new OutcomeReceiver<>() {
                            ON_SET_INACTIVE, call.getId()), new OutcomeReceiver<>() {
                        @Override
                        @Override
                        public void onResult(VoipCallTransactionResult result) {
                        public void onResult(VoipCallTransactionResult result) {
                            mCallsManager.markCallAsOnHold(call);
                            mCallsManager.markCallAsOnHold(call);
@@ -411,7 +411,7 @@ public class TransactionalServiceWrapper implements


            mTransactionManager.addTransaction(
            mTransactionManager.addTransaction(
                    new CallEventCallbackAckTransaction(mICallEventCallback, ON_DISCONNECT,
                    new CallEventCallbackAckTransaction(mICallEventCallback, ON_DISCONNECT,
                            call.getId(), 0), new OutcomeReceiver<>() {
                            call.getId(), cause), new OutcomeReceiver<>() {
                        @Override
                        @Override
                        public void onResult(VoipCallTransactionResult result) {
                        public void onResult(VoipCallTransactionResult result) {
                            removeCallFromCallsManager(call, cause);
                            removeCallFromCallsManager(call, cause);
@@ -428,32 +428,6 @@ public class TransactionalServiceWrapper implements
        }
        }
    }
    }


    public void onReject(Call call, @android.telecom.Call.RejectReason int rejectReason) {
        try {
            Log.startSession("TSW.oR");
            Log.d(TAG, String.format(Locale.US, "onReject: callId=[%s]", call.getId()));

            mTransactionManager.addTransaction(
                    new CallEventCallbackAckTransaction(mICallEventCallback, ON_REJECT,
                            call.getId(), 0), new OutcomeReceiver<>() {
                        @Override
                        public void onResult(VoipCallTransactionResult result) {
                            removeCallFromCallsManager(call,
                                    new DisconnectCause(DisconnectCause.REJECTED));
                        }

                        @Override
                        public void onError(CallException exception) {
                            removeCallFromCallsManager(call,
                                    new DisconnectCause(DisconnectCause.REJECTED));
                        }
                    }
            );
        } finally {
            Log.endSession();
        }
    }

    public void onCallStreamingStarted(Call call) {
    public void onCallStreamingStarted(Call call) {
        try {
        try {
            Log.startSession("TSW.oCSS");
            Log.startSession("TSW.oCSS");
@@ -462,7 +436,7 @@ public class TransactionalServiceWrapper implements


            mTransactionManager.addTransaction(
            mTransactionManager.addTransaction(
                    new CallEventCallbackAckTransaction(mICallEventCallback, ON_STREAMING_STARTED,
                    new CallEventCallbackAckTransaction(mICallEventCallback, ON_STREAMING_STARTED,
                            call.getId(), 0), new OutcomeReceiver<>() {
                            call.getId()), new OutcomeReceiver<>() {
                        @Override
                        @Override
                        public void onResult(VoipCallTransactionResult result) {
                        public void onResult(VoipCallTransactionResult result) {
                        }
                        }
+22 −5
Original line number Original line Diff line number Diff line
@@ -22,6 +22,7 @@ import static android.telecom.CallException.CODE_OPERATION_TIMED_OUT;
import android.os.Bundle;
import android.os.Bundle;
import android.os.RemoteException;
import android.os.RemoteException;
import android.os.ResultReceiver;
import android.os.ResultReceiver;
import android.telecom.DisconnectCause;
import android.util.Log;
import android.util.Log;


import com.android.internal.telecom.ICallEventCallback;
import com.android.internal.telecom.ICallEventCallback;
@@ -41,7 +42,10 @@ public class CallEventCallbackAckTransaction extends VoipCallTransaction {
    private final ICallEventCallback mICallEventCallback;
    private final ICallEventCallback mICallEventCallback;
    private final String mAction;
    private final String mAction;
    private final String mCallId;
    private final String mCallId;
    private final int mVideoState;
    // optional values
    private int mVideoState = 0;
    private DisconnectCause mDisconnectCause = null;

    private final VoipCallTransactionResult TRANSACTION_FAILED = new VoipCallTransactionResult(
    private final VoipCallTransactionResult TRANSACTION_FAILED = new VoipCallTransactionResult(
            CODE_OPERATION_TIMED_OUT, "failed to complete the operation before timeout");
            CODE_OPERATION_TIMED_OUT, "failed to complete the operation before timeout");


@@ -61,6 +65,14 @@ public class CallEventCallbackAckTransaction extends VoipCallTransaction {
        }
        }
    }
    }


    public CallEventCallbackAckTransaction(ICallEventCallback service, String action,
            String callId) {
        mICallEventCallback = service;
        mAction = action;
        mCallId = callId;
    }


    public CallEventCallbackAckTransaction(ICallEventCallback service, String action, String callId,
    public CallEventCallbackAckTransaction(ICallEventCallback service, String action, String callId,
            int videoState) {
            int videoState) {
        mICallEventCallback = service;
        mICallEventCallback = service;
@@ -69,6 +81,14 @@ public class CallEventCallbackAckTransaction extends VoipCallTransaction {
        mVideoState = videoState;
        mVideoState = videoState;
    }
    }


    public CallEventCallbackAckTransaction(ICallEventCallback service, String action, String callId,
            DisconnectCause cause) {
        mICallEventCallback = service;
        mAction = action;
        mCallId = callId;
        mDisconnectCause = cause;
    }



    @Override
    @Override
    public CompletionStage<VoipCallTransactionResult> processTransaction(Void v) {
    public CompletionStage<VoipCallTransactionResult> processTransaction(Void v) {
@@ -82,10 +102,7 @@ public class CallEventCallbackAckTransaction extends VoipCallTransaction {
                    mICallEventCallback.onSetInactive(mCallId, receiver);
                    mICallEventCallback.onSetInactive(mCallId, receiver);
                    break;
                    break;
                case TransactionalServiceWrapper.ON_DISCONNECT:
                case TransactionalServiceWrapper.ON_DISCONNECT:
                    mICallEventCallback.onDisconnect(mCallId, receiver);
                    mICallEventCallback.onDisconnect(mCallId, mDisconnectCause, receiver);
                    break;
                case TransactionalServiceWrapper.ON_REJECT:
                    mICallEventCallback.onReject(mCallId, receiver);
                    break;
                    break;
                case TransactionalServiceWrapper.ON_SET_ACTIVE:
                case TransactionalServiceWrapper.ON_SET_ACTIVE:
                    mICallEventCallback.onSetActive(mCallId, receiver);
                    mICallEventCallback.onSetActive(mCallId, receiver);
+3 −7
Original line number Original line Diff line number Diff line
@@ -21,6 +21,7 @@ import android.telecom.CallControlCallback;
import android.telecom.CallEndpoint;
import android.telecom.CallEndpoint;
import android.telecom.CallControl;
import android.telecom.CallControl;
import android.telecom.CallEventCallback;
import android.telecom.CallEventCallback;
import android.telecom.DisconnectCause;
import android.util.Log;
import android.util.Log;


import java.util.List;
import java.util.List;
@@ -62,13 +63,8 @@ public class MyVoipCall implements CallControlCallback, CallEventCallback {
    }
    }


    @Override
    @Override
    public void onReject(@NonNull Consumer<Boolean> wasCompleted) {
    public void onDisconnect(@NonNull DisconnectCause cause,
        Log.i(TAG, String.format("onReject: callId=[%s]", mCallId));
            @NonNull Consumer<Boolean> wasCompleted) {
        wasCompleted.accept(Boolean.TRUE);
    }

    @Override
    public void onDisconnect(@NonNull Consumer<Boolean> wasCompleted) {
        Log.i(TAG, String.format("onDisconnect: callId=[%s]", mCallId));
        Log.i(TAG, String.format("onDisconnect: callId=[%s]", mCallId));
        wasCompleted.accept(Boolean.TRUE);
        wasCompleted.accept(Boolean.TRUE);
    }
    }
+1 −5
Original line number Original line Diff line number Diff line
@@ -26,6 +26,7 @@ import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.argThat;
import static org.mockito.ArgumentMatchers.argThat;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.ArgumentMatchers.isA;
import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.mock;
@@ -426,11 +427,6 @@ public class CallTest extends TelecomTestCase {
        call.answer(0);
        call.answer(0);
        verify(mMockTransactionalService, times(1)).onAnswer(call, 0);
        verify(mMockTransactionalService, times(1)).onAnswer(call, 0);


        // assert CallEventCallback#onReject is called
        call.setState(CallState.RINGING, "test");
        call.reject(0);
        verify(mMockTransactionalService, times(1)).onReject(call, 0);

        // assert CallEventCallback#onDisconnect is called
        // assert CallEventCallback#onDisconnect is called
        call.setState(CallState.ACTIVE, "test");
        call.setState(CallState.ACTIVE, "test");
        call.disconnect();
        call.disconnect();