diff options
author | Sekine Yasuaki <yasuaki.sekine@sony.com> | 2019-04-16 18:40:30 -0700 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2019-04-16 18:40:30 -0700 |
commit | fc82103589438deb974973f395163e7740dd15a4 (patch) | |
tree | aa6230402c83372c58e4da87e84202654c5f7215 /java/com/android/incallui/videotech/ims | |
parent | 446449d287bc668c5cf2a8d0126f8f746578f2f7 (diff) | |
parent | 02f02dca41d694f9f901285f49c7ee182b6980ce (diff) |
Merge "Fix error case which session change request failed when pausing video" am: 9cd154587c am: ddc9143616
am: 02f02dca41
Change-Id: I94cd8a07ac50179b71ab6ec646d8a42955d3d9c5
Diffstat (limited to 'java/com/android/incallui/videotech/ims')
-rw-r--r-- | java/com/android/incallui/videotech/ims/ImsVideoCallCallback.java | 42 | ||||
-rw-r--r-- | java/com/android/incallui/videotech/ims/ImsVideoTech.java | 1 |
2 files changed, 25 insertions, 18 deletions
diff --git a/java/com/android/incallui/videotech/ims/ImsVideoCallCallback.java b/java/com/android/incallui/videotech/ims/ImsVideoCallCallback.java index d254d6df6..3e6f4417b 100644 --- a/java/com/android/incallui/videotech/ims/ImsVideoCallCallback.java +++ b/java/com/android/incallui/videotech/ims/ImsVideoCallCallback.java @@ -103,8 +103,6 @@ public class ImsVideoCallCallback extends VideoCall.Callback { if (videoTech.getSessionModificationState() == SessionModificationState.WAITING_FOR_UPGRADE_TO_VIDEO_RESPONSE) { - handler.removeCallbacksAndMessages(null); // Clear everything - final int newSessionModificationState = getSessionModificationStateFromTelecomStatus(status); if (status == VideoProvider.SESSION_MODIFY_REQUEST_SUCCESS) { // Telecom manages audio route for us @@ -114,31 +112,21 @@ public class ImsVideoCallCallback extends VideoCall.Callback { videoTech.setSessionModificationState(newSessionModificationState); } - // Wait for 4 seconds and then clean the session modification state. This allows the video UI - // to stay up so that the user can read the error message. - // // If the other person accepted the upgrade request then this will keep the video UI up until // the call's video state change. Without this we would switch to the voice call and then // switch back to video UI. - handler.postDelayed( - () -> { - if (videoTech.getSessionModificationState() == newSessionModificationState) { - LogUtil.i("ImsVideoCallCallback.onSessionModifyResponseReceived", "clearing state"); - videoTech.setSessionModificationState(SessionModificationState.NO_REQUEST); - } else { - LogUtil.i( - "ImsVideoCallCallback.onSessionModifyResponseReceived", - "session modification state has changed, not clearing state"); - } - }, - CLEAR_FAILED_REQUEST_TIMEOUT_MILLIS); + clearFailedResponseState(newSessionModificationState); } else if (videoTech.getSessionModificationState() == SessionModificationState.RECEIVED_UPGRADE_TO_VIDEO_REQUEST) { requestedVideoState = VideoProfile.STATE_AUDIO_ONLY; videoTech.setSessionModificationState(SessionModificationState.NO_REQUEST); } else if (videoTech.getSessionModificationState() == SessionModificationState.WAITING_FOR_RESPONSE) { - videoTech.setSessionModificationState(getSessionModificationStateFromTelecomStatus(status)); + final int newSessionModificationState = getSessionModificationStateFromTelecomStatus(status); + videoTech.setSessionModificationState(newSessionModificationState); + if (status != VideoProvider.SESSION_MODIFY_REQUEST_SUCCESS) { + clearFailedResponseState(newSessionModificationState); + } } else { LogUtil.i( "ImsVideoCallCallback.onSessionModifyResponseReceived", @@ -146,6 +134,24 @@ public class ImsVideoCallCallback extends VideoCall.Callback { } } + private void clearFailedResponseState(final int newSessionModificationState) { + handler.removeCallbacksAndMessages(null); // Clear everything + // Wait for 4 seconds and then clean the session modification state. This allows the video UI + // to stay up so that the user can read the error message. + handler.postDelayed( + () -> { + if (videoTech.getSessionModificationState() == newSessionModificationState) { + LogUtil.i("ImsVideoCallCallback.onSessionModifyResponseReceived", "clearing state"); + videoTech.setSessionModificationState(SessionModificationState.NO_REQUEST); + } else { + LogUtil.i( + "ImsVideoCallCallback.onSessionModifyResponseReceived", + "session modification state has changed, not clearing state"); + } + }, + CLEAR_FAILED_REQUEST_TIMEOUT_MILLIS); + } + @SessionModificationState private int getSessionModificationStateFromTelecomStatus(int telecomStatus) { switch (telecomStatus) { diff --git a/java/com/android/incallui/videotech/ims/ImsVideoTech.java b/java/com/android/incallui/videotech/ims/ImsVideoTech.java index 5b733d612..1d4fe769a 100644 --- a/java/com/android/incallui/videotech/ims/ImsVideoTech.java +++ b/java/com/android/incallui/videotech/ims/ImsVideoTech.java @@ -227,6 +227,7 @@ public class ImsVideoTech implements VideoTech { call.getVideoCall() .sendSessionModifyRequest( new VideoProfile(unpausedVideoState & ~VideoProfile.STATE_TX_ENABLED)); + setSessionModificationState(SessionModificationState.WAITING_FOR_RESPONSE); } @Override |