Loading src/com/android/server/telecom/Call.java +15 −1 Original line number Diff line number Diff line Loading @@ -821,7 +821,7 @@ public class Call implements CreateConnectionResponse, EventManager.Loggable, return String.format(Locale.US, "[Call id=%s, state=%s, tpac=%s, cmgr=%s, handle=%s, " + "vidst=%s, childs(%d), has_parent(%b), cap=%s, prop=%s]", mId, CallState.toString(mState), CallState.toString(getParcelableCallState()), getTargetPhoneAccount(), getConnectionManagerPhoneAccount(), Log.piiHandle(mHandle), Loading Loading @@ -963,6 +963,20 @@ public class Call implements CreateConnectionResponse, EventManager.Loggable, return mState; } /** * Similar to {@link #getState()}, except will return {@link CallState#DISCONNECTING} if the * call is locally disconnecting. This is the call state which is reported to the * {@link android.telecom.InCallService}s when a call is parcelled. * @return The parcelable call state. */ public int getParcelableCallState() { if (isLocallyDisconnecting() && (mState != android.telecom.Call.STATE_DISCONNECTED)) { return CallState.DISCONNECTING; } return mState; } /** * Determines if this {@link Call} can receive call focus via the * {@link ConnectionServiceFocusManager}. Loading src/com/android/server/telecom/CallAudioManager.java +1 −1 Original line number Diff line number Diff line Loading @@ -423,7 +423,7 @@ public class CallAudioManager extends CallsManagerListenerBase { CallAudioRouteStateMachine.NO_INCLUDE_BLUETOOTH_IN_BASELINE); return; default: Log.wtf(this, "Invalid route specified: %d", route); Log.w(this, "InCallService requested an invalid audio route: %d", route); } } Loading src/com/android/server/telecom/CallsManager.java +6 −1 Original line number Diff line number Diff line Loading @@ -2549,7 +2549,11 @@ public class CallsManager extends Call.ListenerBase Log.w(this, "Unknown call (%s) asked to disconnect", call); } else { mLocallyDisconnectingCalls.add(call); int previousState = call.getState(); call.disconnect(); 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); Loading Loading @@ -3524,7 +3528,8 @@ public class CallsManager extends Call.ListenerBase return; } int oldState = call.getState(); Log.i(this, "setCallState %s -> %s, call: %s", CallState.toString(oldState), Log.i(this, "setCallState %s -> %s, call: %s", CallState.toString(call.getParcelableCallState()), CallState.toString(newState), call); if (newState != oldState) { // If the call switches to held state while a DTMF tone is playing, stop the tone to Loading src/com/android/server/telecom/ParcelableCallUtils.java +1 −7 Original line number Diff line number Diff line Loading @@ -381,7 +381,7 @@ public class ParcelableCallUtils { private static int getParcelableState(Call call, boolean supportsExternalCalls) { int state = CallState.NEW; switch (call.getState()) { switch (call.getParcelableCallState()) { case CallState.ABORTED: case CallState.DISCONNECTED: state = android.telecom.Call.STATE_DISCONNECTED; Loading Loading @@ -433,12 +433,6 @@ public class ParcelableCallUtils { break; } // If we are marked as 'locally disconnecting' then mark ourselves as disconnecting instead. // Unless we're disconnect*ED*, in which case leave it at that. if (call.isLocallyDisconnecting() && (state != android.telecom.Call.STATE_DISCONNECTED)) { state = android.telecom.Call.STATE_DISCONNECTING; } return state; } Loading tests/src/com/android/server/telecom/tests/BasicCallTests.java +9 −4 Original line number Diff line number Diff line Loading @@ -103,8 +103,10 @@ public class BasicCallTests extends TelecomSystemTest { mPhoneAccountA0.getAccountHandle(), mConnectionServiceFixtureA); mInCallServiceFixtureX.mInCallAdapter.disconnectCall(ids.mCallId); assertEquals(Call.STATE_ACTIVE, mInCallServiceFixtureX.getCall(ids.mCallId).getState()); assertEquals(Call.STATE_ACTIVE, mInCallServiceFixtureY.getCall(ids.mCallId).getState()); assertEquals(Call.STATE_DISCONNECTING, mInCallServiceFixtureX.getCall(ids.mCallId).getState()); assertEquals(Call.STATE_DISCONNECTING, mInCallServiceFixtureY.getCall(ids.mCallId).getState()); when(mClockProxy.currentTimeMillis()).thenReturn(TEST_DISCONNECT_TIME); when(mClockProxy.elapsedRealtime()).thenReturn(TEST_DISCONNECT_ELAPSED_TIME); Loading Loading @@ -259,12 +261,15 @@ public class BasicCallTests extends TelecomSystemTest { IdPair ids = startAndMakeActiveIncomingCall("650-555-1212", mPhoneAccountA0.getAccountHandle(), mConnectionServiceFixtureA); mInCallServiceFixtureX.mInCallAdapter.disconnectCall(ids.mCallId); assertEquals(Call.STATE_ACTIVE, mInCallServiceFixtureX.getCall(ids.mCallId).getState()); assertEquals(Call.STATE_ACTIVE, mInCallServiceFixtureY.getCall(ids.mCallId).getState()); assertEquals(Call.STATE_DISCONNECTING, mInCallServiceFixtureX.getCall(ids.mCallId).getState()); assertEquals(Call.STATE_DISCONNECTING, mInCallServiceFixtureY.getCall(ids.mCallId).getState()); when(mClockProxy.currentTimeMillis()).thenReturn(TEST_DISCONNECT_TIME); when(mClockProxy.elapsedRealtime()).thenReturn(TEST_DISCONNECT_ELAPSED_TIME); mConnectionServiceFixtureA.sendSetDisconnected(ids.mConnectionId, DisconnectCause.LOCAL); assertEquals(Call.STATE_DISCONNECTED, mInCallServiceFixtureX.getCall(ids.mCallId).getState()); assertEquals(Call.STATE_DISCONNECTED, Loading Loading
src/com/android/server/telecom/Call.java +15 −1 Original line number Diff line number Diff line Loading @@ -821,7 +821,7 @@ public class Call implements CreateConnectionResponse, EventManager.Loggable, return String.format(Locale.US, "[Call id=%s, state=%s, tpac=%s, cmgr=%s, handle=%s, " + "vidst=%s, childs(%d), has_parent(%b), cap=%s, prop=%s]", mId, CallState.toString(mState), CallState.toString(getParcelableCallState()), getTargetPhoneAccount(), getConnectionManagerPhoneAccount(), Log.piiHandle(mHandle), Loading Loading @@ -963,6 +963,20 @@ public class Call implements CreateConnectionResponse, EventManager.Loggable, return mState; } /** * Similar to {@link #getState()}, except will return {@link CallState#DISCONNECTING} if the * call is locally disconnecting. This is the call state which is reported to the * {@link android.telecom.InCallService}s when a call is parcelled. * @return The parcelable call state. */ public int getParcelableCallState() { if (isLocallyDisconnecting() && (mState != android.telecom.Call.STATE_DISCONNECTED)) { return CallState.DISCONNECTING; } return mState; } /** * Determines if this {@link Call} can receive call focus via the * {@link ConnectionServiceFocusManager}. Loading
src/com/android/server/telecom/CallAudioManager.java +1 −1 Original line number Diff line number Diff line Loading @@ -423,7 +423,7 @@ public class CallAudioManager extends CallsManagerListenerBase { CallAudioRouteStateMachine.NO_INCLUDE_BLUETOOTH_IN_BASELINE); return; default: Log.wtf(this, "Invalid route specified: %d", route); Log.w(this, "InCallService requested an invalid audio route: %d", route); } } Loading
src/com/android/server/telecom/CallsManager.java +6 −1 Original line number Diff line number Diff line Loading @@ -2549,7 +2549,11 @@ public class CallsManager extends Call.ListenerBase Log.w(this, "Unknown call (%s) asked to disconnect", call); } else { mLocallyDisconnectingCalls.add(call); int previousState = call.getState(); call.disconnect(); 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); Loading Loading @@ -3524,7 +3528,8 @@ public class CallsManager extends Call.ListenerBase return; } int oldState = call.getState(); Log.i(this, "setCallState %s -> %s, call: %s", CallState.toString(oldState), Log.i(this, "setCallState %s -> %s, call: %s", CallState.toString(call.getParcelableCallState()), CallState.toString(newState), call); if (newState != oldState) { // If the call switches to held state while a DTMF tone is playing, stop the tone to Loading
src/com/android/server/telecom/ParcelableCallUtils.java +1 −7 Original line number Diff line number Diff line Loading @@ -381,7 +381,7 @@ public class ParcelableCallUtils { private static int getParcelableState(Call call, boolean supportsExternalCalls) { int state = CallState.NEW; switch (call.getState()) { switch (call.getParcelableCallState()) { case CallState.ABORTED: case CallState.DISCONNECTED: state = android.telecom.Call.STATE_DISCONNECTED; Loading Loading @@ -433,12 +433,6 @@ public class ParcelableCallUtils { break; } // If we are marked as 'locally disconnecting' then mark ourselves as disconnecting instead. // Unless we're disconnect*ED*, in which case leave it at that. if (call.isLocallyDisconnecting() && (state != android.telecom.Call.STATE_DISCONNECTED)) { state = android.telecom.Call.STATE_DISCONNECTING; } return state; } Loading
tests/src/com/android/server/telecom/tests/BasicCallTests.java +9 −4 Original line number Diff line number Diff line Loading @@ -103,8 +103,10 @@ public class BasicCallTests extends TelecomSystemTest { mPhoneAccountA0.getAccountHandle(), mConnectionServiceFixtureA); mInCallServiceFixtureX.mInCallAdapter.disconnectCall(ids.mCallId); assertEquals(Call.STATE_ACTIVE, mInCallServiceFixtureX.getCall(ids.mCallId).getState()); assertEquals(Call.STATE_ACTIVE, mInCallServiceFixtureY.getCall(ids.mCallId).getState()); assertEquals(Call.STATE_DISCONNECTING, mInCallServiceFixtureX.getCall(ids.mCallId).getState()); assertEquals(Call.STATE_DISCONNECTING, mInCallServiceFixtureY.getCall(ids.mCallId).getState()); when(mClockProxy.currentTimeMillis()).thenReturn(TEST_DISCONNECT_TIME); when(mClockProxy.elapsedRealtime()).thenReturn(TEST_DISCONNECT_ELAPSED_TIME); Loading Loading @@ -259,12 +261,15 @@ public class BasicCallTests extends TelecomSystemTest { IdPair ids = startAndMakeActiveIncomingCall("650-555-1212", mPhoneAccountA0.getAccountHandle(), mConnectionServiceFixtureA); mInCallServiceFixtureX.mInCallAdapter.disconnectCall(ids.mCallId); assertEquals(Call.STATE_ACTIVE, mInCallServiceFixtureX.getCall(ids.mCallId).getState()); assertEquals(Call.STATE_ACTIVE, mInCallServiceFixtureY.getCall(ids.mCallId).getState()); assertEquals(Call.STATE_DISCONNECTING, mInCallServiceFixtureX.getCall(ids.mCallId).getState()); assertEquals(Call.STATE_DISCONNECTING, mInCallServiceFixtureY.getCall(ids.mCallId).getState()); when(mClockProxy.currentTimeMillis()).thenReturn(TEST_DISCONNECT_TIME); when(mClockProxy.elapsedRealtime()).thenReturn(TEST_DISCONNECT_ELAPSED_TIME); mConnectionServiceFixtureA.sendSetDisconnected(ids.mConnectionId, DisconnectCause.LOCAL); assertEquals(Call.STATE_DISCONNECTED, mInCallServiceFixtureX.getCall(ids.mCallId).getState()); assertEquals(Call.STATE_DISCONNECTED, Loading