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

Commit dfda4c60 authored by Junyeong Bak's avatar Junyeong Bak
Browse files

Modified to operated when acceptRingingCall or endCall in TelecomManager are...


Modified to operated when acceptRingingCall or endCall in TelecomManager are called with SIMULATED_RING state

After STATE_AUDIO_PROCESSING state is changed to SIMULATED_RING,
when TelecomManager#acceptRingingCall, TelecomManager#endCall are called,
answer & reject would be operated.

Test: Added unit tests
Bug: 151188751

Signed-off-by: default avatarJunyeong Bak <junyeong.bak@samsung.com>
Change-Id: I12493b3d5781439bba66c9ecdc5def1a4a358ffa
parent 31067ae2
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -1930,12 +1930,12 @@ public class TelecomServiceImpl {
    }

    private void acceptRingingCallInternal(int videoState) {
        Call call = mCallsManager.getFirstCallWithState(CallState.RINGING);
        Call call = mCallsManager.getFirstCallWithState(CallState.RINGING, CallState.SIMULATED_RINGING);
        if (call != null) {
            if (videoState == DEFAULT_VIDEO_STATE || !isValidAcceptVideoState(videoState)) {
                videoState = call.getVideoState();
            }
            call.answer(videoState);
            mCallsManager.answerCall(call, videoState);
        }
    }

@@ -1949,6 +1949,7 @@ public class TelecomServiceImpl {
                    CallState.DIALING,
                    CallState.PULLING,
                    CallState.RINGING,
                    CallState.SIMULATED_RINGING,
                    CallState.ON_HOLD);
        }

@@ -1958,10 +1959,11 @@ public class TelecomServiceImpl {
                return false;
            }

            if (call.getState() == CallState.RINGING) {
                call.reject(false /* rejectWithMessage */, null, callingPackage);
            if (call.getState() == CallState.RINGING
                    || call.getState() == CallState.SIMULATED_RINGING) {
                mCallsManager.rejectCall(call, false /* rejectWithMessage */, null);
            } else {
                call.disconnect(0 /* disconnectionTimeout */, callingPackage);
                mCallsManager.disconnectCall(call);
            }
            return true;
        }
+17 −7
Original line number Diff line number Diff line
@@ -899,7 +899,17 @@ public class TelecomServiceImplTest extends TelecomTestCase {
        when(call.getState()).thenReturn(CallState.RINGING);
        when(mFakeCallsManager.getForegroundCall()).thenReturn(call);
        assertTrue(mTSIBinder.endCall(TEST_PACKAGE));
        verify(call).reject(eq(false), isNull(), eq(TEST_PACKAGE));
        verify(mFakeCallsManager).rejectCall(eq(call), eq(false), isNull());
    }

    @SmallTest
    @Test
    public void testEndCallWithSimulatedRingingForegroundCall() throws Exception {
        Call call = mock(Call.class);
        when(call.getState()).thenReturn(CallState.SIMULATED_RINGING);
        when(mFakeCallsManager.getForegroundCall()).thenReturn(call);
        assertTrue(mTSIBinder.endCall(TEST_PACKAGE));
        verify(mFakeCallsManager).rejectCall(eq(call), eq(false), isNull());
    }

    @SmallTest
@@ -909,7 +919,7 @@ public class TelecomServiceImplTest extends TelecomTestCase {
        when(call.getState()).thenReturn(CallState.ACTIVE);
        when(mFakeCallsManager.getForegroundCall()).thenReturn(call);
        assertTrue(mTSIBinder.endCall(TEST_PACKAGE));
        verify(call).disconnect(eq(0L), eq(TEST_PACKAGE));
        verify(mFakeCallsManager).disconnectCall(eq(call));
    }

    @SmallTest
@@ -920,7 +930,7 @@ public class TelecomServiceImplTest extends TelecomTestCase {
        when(mFakeCallsManager.getFirstCallWithState(any()))
                .thenReturn(call);
        assertTrue(mTSIBinder.endCall(TEST_PACKAGE));
        verify(call).disconnect(eq(0L), eq(TEST_PACKAGE));
        verify(mFakeCallsManager).disconnectCall(eq(call));
    }

    @SmallTest
@@ -933,27 +943,27 @@ public class TelecomServiceImplTest extends TelecomTestCase {
    @Test
    public void testAcceptRingingCall() throws Exception {
        Call call = mock(Call.class);
        when(mFakeCallsManager.getFirstCallWithState(anyInt())).thenReturn(call);
        when(mFakeCallsManager.getFirstCallWithState(anyInt(), anyInt())).thenReturn(call);
        // Not intended to be a real video state. Here to ensure that the call will be answered
        // with whatever video state it's currently in.
        int fakeVideoState = 29578215;
        when(call.getVideoState()).thenReturn(fakeVideoState);
        mTSIBinder.acceptRingingCall("");
        verify(call).answer(eq(fakeVideoState));
        verify(mFakeCallsManager).answerCall(eq(call), eq(fakeVideoState));
    }

    @SmallTest
    @Test
    public void testAcceptRingingCallWithValidVideoState() throws Exception {
        Call call = mock(Call.class);
        when(mFakeCallsManager.getFirstCallWithState(anyInt())).thenReturn(call);
        when(mFakeCallsManager.getFirstCallWithState(anyInt(), anyInt())).thenReturn(call);
        // Not intended to be a real video state. Here to ensure that the call will be answered
        // with the video state passed in to acceptRingingCallWithVideoState
        int fakeVideoState = 29578215;
        int realVideoState = VideoProfile.STATE_RX_ENABLED | VideoProfile.STATE_TX_ENABLED;
        when(call.getVideoState()).thenReturn(fakeVideoState);
        mTSIBinder.acceptRingingCallWithVideoState("", realVideoState);
        verify(call).answer(realVideoState);
        verify(mFakeCallsManager).answerCall(eq(call), eq(realVideoState));
    }

    @SmallTest