diff options
author | Tyler Gunn <tgunn@google.com> | 2015-12-07 23:05:26 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2015-12-07 23:05:26 +0000 |
commit | 32d5bdfd13632b30feb44d23ea007975f2726876 (patch) | |
tree | f1ed3df21860ad107b868833d215f6ef91cfad2a | |
parent | 8aefd1fd740115054c294f1ce1b86b76f44d7d71 (diff) | |
parent | 7e1a342c0711016fd83801116fa4f60d6c2ddb0a (diff) |
Cannot accept video call request from another InCallService.
am: 6c734ad3f1
* commit '6c734ad3f142cd07406585d6f5f917ca29814ca0':
Cannot accept video call request from another InCallService.
-rw-r--r-- | InCallUI/src/com/android/incallui/Call.java | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/InCallUI/src/com/android/incallui/Call.java b/InCallUI/src/com/android/incallui/Call.java index 3db974449..ced225b17 100644 --- a/InCallUI/src/com/android/incallui/Call.java +++ b/InCallUI/src/com/android/incallui/Call.java @@ -364,6 +364,8 @@ public class Call { private int mSessionModificationState; private final List<String> mChildCallIds = new ArrayList<>(); private final VideoSettings mVideoSettings = new VideoSettings(); + private int mVideoState; + /** * mModifyToVideoState is used to store requested upgrade / downgrade video state */ @@ -435,6 +437,7 @@ public class Call { if (mState != State.BLOCKED) { setState(translatedState); setDisconnectCause(mTelecomCall.getDetails().getDisconnectCause()); + maybeCancelVideoUpgrade(mTelecomCall.getDetails().getVideoState()); } if (mTelecomCall.getVideoCall() != null) { @@ -524,6 +527,23 @@ public class Call { } } + /** + * Determines if a received upgrade to video request should be cancelled. This can happen if + * another InCall UI responds to the upgrade to video request. + * + * @param newVideoState The new video state. + */ + private void maybeCancelVideoUpgrade(int newVideoState) { + boolean isVideoStateChanged = mVideoState != newVideoState; + + if (mSessionModificationState == SessionModificationState.RECEIVED_UPGRADE_TO_VIDEO_REQUEST + && isVideoStateChanged) { + + Log.v(this, "maybeCancelVideoUpgrade : cancelling upgrade notification"); + setSessionModificationState(SessionModificationState.NO_REQUEST); + } + mVideoState = newVideoState; + } private static int translateState(int state) { switch (state) { case android.telecom.Call.STATE_NEW: @@ -754,12 +774,6 @@ public class Call { * when an upgrade request has been completed or failed. */ public void setSessionModificationState(int state) { - if (state == Call.SessionModificationState.RECEIVED_UPGRADE_TO_VIDEO_REQUEST) { - Log.e(this, - "setSessionModificationState not valid for RECEIVED_UPGRADE_TO_VIDEO_REQUEST"); - return; - } - boolean hasChanged = mSessionModificationState != state; mSessionModificationState = state; Log.d(this, "setSessionModificationState " + state + " mSessionModificationState=" |