summaryrefslogtreecommitdiff
path: root/InCallUI/src/com/android/incallui/AnswerPresenter.java
diff options
context:
space:
mode:
Diffstat (limited to 'InCallUI/src/com/android/incallui/AnswerPresenter.java')
-rw-r--r--InCallUI/src/com/android/incallui/AnswerPresenter.java52
1 files changed, 25 insertions, 27 deletions
diff --git a/InCallUI/src/com/android/incallui/AnswerPresenter.java b/InCallUI/src/com/android/incallui/AnswerPresenter.java
index 33cdba4c0..9decb7b21 100644
--- a/InCallUI/src/com/android/incallui/AnswerPresenter.java
+++ b/InCallUI/src/com/android/incallui/AnswerPresenter.java
@@ -98,6 +98,17 @@ public class AnswerPresenter extends Presenter<AnswerPresenter.AnswerUi>
public void onDisconnect(Call call) {
// no-op
}
+
+ public void onSessionModificationStateChange(int sessionModificationState) {
+ boolean isUpgradePending = sessionModificationState ==
+ Call.SessionModificationState.RECEIVED_UPGRADE_TO_VIDEO_REQUEST;
+
+ if (!isUpgradePending) {
+ // Stop listening for updates.
+ CallList.getInstance().removeCallUpdateListener(mCallId, this);
+ showAnswerUi(false);
+ }
+ }
private boolean isVideoUpgradePending(Call call) {
return call.getSessionModificationState()
@@ -167,27 +178,15 @@ public class AnswerPresenter extends Presenter<AnswerPresenter.AnswerUi>
return;
}
- showAnswerUi(true);
- getUi().showTargets(getUiTarget(currentVideoState, modifyToVideoState));
-
- }
+ AnswerUi ui = getUi();
- private int getUiTarget(int currentVideoState, int modifyToVideoState) {
- if (showVideoUpgradeOptions(currentVideoState, modifyToVideoState)) {
- return AnswerFragment.TARGET_SET_FOR_VIDEO_UPGRADE_REQUEST;
- } else if (isEnabled(modifyToVideoState, VideoProfile.VideoState.BIDIRECTIONAL)) {
- return AnswerFragment.TARGET_SET_FOR_BIDIRECTIONAL_VIDEO_ACCEPT_REJECT_REQUEST;
- } else if (isEnabled(modifyToVideoState, VideoProfile.VideoState.TX_ENABLED)) {
- return AnswerFragment.TARGET_SET_FOR_VIDEO_TRANSMIT_ACCEPT_REJECT_REQUEST;
- } else if (isEnabled(modifyToVideoState, VideoProfile.VideoState.RX_ENABLED)) {
- return AnswerFragment.TARGET_SET_FOR_VIDEO_RECEIVE_ACCEPT_REJECT_REQUEST;
+ if (ui == null) {
+ Log.e(this, "Ui is null. Can't process upgrade request");
+ return;
}
- return AnswerFragment.TARGET_SET_FOR_VIDEO_UPGRADE_REQUEST;
- }
-
- private boolean showVideoUpgradeOptions(int currentVideoState, int modifyToVideoState) {
- return currentVideoState == VideoProfile.VideoState.AUDIO_ONLY &&
- isEnabled(modifyToVideoState, VideoProfile.VideoState.BIDIRECTIONAL);
+ showAnswerUi(true);
+ ui.showTargets(AnswerFragment.TARGET_SET_FOR_VIDEO_ACCEPT_REJECT_REQUEST,
+ modifyToVideoState);
}
private boolean isEnabled(int videoState, int mask) {
@@ -221,15 +220,16 @@ public class AnswerPresenter extends Presenter<AnswerPresenter.AnswerUi>
}
public void onAnswer(int videoState, Context context) {
- Log.d(this, "onAnswer mCallId=" + mCallId + " videoState=" + videoState);
if (mCallId == null) {
return;
}
if (mCall.getSessionModificationState()
== Call.SessionModificationState.RECEIVED_UPGRADE_TO_VIDEO_REQUEST) {
+ Log.d(this, "onAnswer (upgradeCall) mCallId=" + mCallId + " videoState=" + videoState);
InCallPresenter.getInstance().acceptUpgradeRequest(videoState, context);
} else {
+ Log.d(this, "onAnswer (answerCall) mCallId=" + mCallId + " videoState=" + videoState);
TelecomAdapter.getInstance().answerCall(mCall.getId(), videoState);
}
}
@@ -267,17 +267,14 @@ public class AnswerPresenter extends Presenter<AnswerPresenter.AnswerUi>
}
private void configureAnswerTargetsForSms(Call call, List<String> textMsgs) {
- if (getUi() == null) {
- return;
- }
-
- final Context context = getUi().getContext();
-
mHasTextMessages = textMsgs != null;
boolean withSms =
call.can(android.telecom.Call.Details.CAPABILITY_RESPOND_VIA_TEXT)
&& mHasTextMessages;
- if (call.isVideoCall(context)) {
+
+ // Only present the user with the option to answer as a video call if the incoming call is
+ // a bi-directional video call.
+ if (VideoProfile.VideoState.isBidirectional((call.getVideoState()))) {
if (withSms) {
getUi().showTargets(AnswerFragment.TARGET_SET_FOR_VIDEO_WITH_SMS);
getUi().configureMessageDialog(textMsgs);
@@ -297,6 +294,7 @@ public class AnswerPresenter extends Presenter<AnswerPresenter.AnswerUi>
interface AnswerUi extends Ui {
public void onShowAnswerUi(boolean shown);
public void showTargets(int targetSet);
+ public void showTargets(int targetSet, int videoState);
public void showMessageDialog();
public void configureMessageDialog(List<String> textResponses);
public Context getContext();