Ensuring Video APIs are only called when video is available.
Bug: 17179079
Change-Id: I3b327250c181f821ec37d574ae804f8003d04603
diff --git a/InCallUI/src/com/android/incallui/AnswerFragment.java b/InCallUI/src/com/android/incallui/AnswerFragment.java
index 4fb79ac..29747da 100644
--- a/InCallUI/src/com/android/incallui/AnswerFragment.java
+++ b/InCallUI/src/com/android/incallui/AnswerFragment.java
@@ -332,6 +332,11 @@
}
@Override
+ public Context getContext() {
+ return getActivity();
+ }
+
+ @Override
public void onAnswer(int videoState, Context context) {
getPresenter().onAnswer(videoState, context);
}
diff --git a/InCallUI/src/com/android/incallui/AnswerPresenter.java b/InCallUI/src/com/android/incallui/AnswerPresenter.java
index 5b4e39a..4022bb4 100644
--- a/InCallUI/src/com/android/incallui/AnswerPresenter.java
+++ b/InCallUI/src/com/android/incallui/AnswerPresenter.java
@@ -99,7 +99,7 @@
getUi().showAnswerUi(true);
boolean withSms = call.can(PhoneCapabilities.RESPOND_VIA_TEXT) && textMsgs != null;
- if (call.isVideoCall()) {
+ if (call.isVideoCall(getUi().getContext())) {
if (withSms) {
getUi().showTargets(AnswerFragment.TARGET_SET_FOR_VIDEO_WITH_SMS);
getUi().configureMessageDialog(textMsgs);
@@ -187,5 +187,6 @@
public void showTargets(int targetSet);
public void showMessageDialog();
public void configureMessageDialog(List<String> textResponses);
+ public Context getContext();
}
}
diff --git a/InCallUI/src/com/android/incallui/Call.java b/InCallUI/src/com/android/incallui/Call.java
index 6bd3d0b..9948c21 100644
--- a/InCallUI/src/com/android/incallui/Call.java
+++ b/InCallUI/src/com/android/incallui/Call.java
@@ -16,6 +16,9 @@
package com.android.incallui;
+import com.android.contacts.common.CallUtil;
+
+import android.content.Context;
import android.net.Uri;
import android.telecomm.PhoneCapabilities;
import android.telecomm.GatewayInfo;
@@ -349,8 +352,9 @@
return mTelecommCall.getDetails().getVideoState();
}
- public boolean isVideoCall() {
- return VideoProfile.VideoState.isBidirectional(getVideoState());
+ public boolean isVideoCall(Context context) {
+ return CallUtil.isVideoEnabled(context) &&
+ VideoProfile.VideoState.isBidirectional(getVideoState());
}
public void setSessionModificationState(int state) {
diff --git a/InCallUI/src/com/android/incallui/CallButtonFragment.java b/InCallUI/src/com/android/incallui/CallButtonFragment.java
index 09a3bc2..74aeaf3 100644
--- a/InCallUI/src/com/android/incallui/CallButtonFragment.java
+++ b/InCallUI/src/com/android/incallui/CallButtonFragment.java
@@ -671,6 +671,11 @@
}
@Override
+ public Context getContext() {
+ return getActivity();
+ }
+
+ @Override
public void showManageConferenceCallButton() {
mExtraRowButton.setVisibility(View.VISIBLE);
mManageConferenceButton.setVisibility(View.VISIBLE);
diff --git a/InCallUI/src/com/android/incallui/CallButtonPresenter.java b/InCallUI/src/com/android/incallui/CallButtonPresenter.java
index 93548dd..6cdc657 100644
--- a/InCallUI/src/com/android/incallui/CallButtonPresenter.java
+++ b/InCallUI/src/com/android/incallui/CallButtonPresenter.java
@@ -16,6 +16,7 @@
package com.android.incallui;
+import android.content.Context;
import android.telecomm.AudioState;
import android.telecomm.InCallService.VideoCall;
import android.telecomm.PhoneCapabilities;
@@ -297,7 +298,7 @@
return;
}
- if (call.isVideoCall()) {
+ if (call.isVideoCall(ui.getContext())) {
updateVideoCallButtons();
} else {
updateVoiceCallButtons(call);
@@ -469,5 +470,6 @@
void showGenericMergeButton();
void hideExtraRow();
void displayManageConferencePanel(boolean on);
+ Context getContext();
}
}
diff --git a/InCallUI/src/com/android/incallui/CallCardPresenter.java b/InCallUI/src/com/android/incallui/CallCardPresenter.java
index 2dc4274..5f98aa9 100644
--- a/InCallUI/src/com/android/incallui/CallCardPresenter.java
+++ b/InCallUI/src/com/android/incallui/CallCardPresenter.java
@@ -245,7 +245,8 @@
// If the primary call is a video call on hold, still show the contact photo.
// If the primary call is an active video call, hide the contact photo.
if (mPrimary != null) {
- getUi().setPhotoVisible(!(mPrimary.isVideoCall() && callState != Call.State.ONHOLD));
+ getUi().setPhotoVisible(!(mPrimary.isVideoCall(mContext) &&
+ callState != Call.State.ONHOLD));
}
final boolean enableEndCallButton = Call.State.isConnectingOrConnected(callState) &&
diff --git a/InCallUI/src/com/android/incallui/StatusBarNotifier.java b/InCallUI/src/com/android/incallui/StatusBarNotifier.java
index 809d294..35f266d 100644
--- a/InCallUI/src/com/android/incallui/StatusBarNotifier.java
+++ b/InCallUI/src/com/android/incallui/StatusBarNotifier.java
@@ -328,7 +328,7 @@
addHangupAction(builder);
} else if (state == Call.State.INCOMING || state == Call.State.CALL_WAITING) {
addDismissAction(builder);
- if (call.isVideoCall()) {
+ if (call.isVideoCall(mContext)) {
addVoiceAction(builder);
addVideoCallAction(builder);
} else {
diff --git a/InCallUI/src/com/android/incallui/VideoCallPresenter.java b/InCallUI/src/com/android/incallui/VideoCallPresenter.java
index dbbf038..f218de2 100644
--- a/InCallUI/src/com/android/incallui/VideoCallPresenter.java
+++ b/InCallUI/src/com/android/incallui/VideoCallPresenter.java
@@ -24,6 +24,7 @@
import android.telecomm.InCallService.VideoCall;
import android.view.Surface;
+import com.android.contacts.common.CallUtil;
import com.android.incallui.InCallPresenter.InCallDetailsListener;
import com.android.incallui.InCallPresenter.InCallOrientationListener;
import com.android.incallui.InCallPresenter.InCallStateListener;
@@ -302,6 +303,11 @@
@Override
public void onStateChange(InCallPresenter.InCallState oldState,
InCallPresenter.InCallState newState, CallList callList) {
+ // Bail if video calling is disabled for the device.
+ if (!CallUtil.isVideoEnabled(mContext)) {
+ return;
+ }
+
if (newState == InCallPresenter.InCallState.NO_CALLS) {
exitVideoMode();
}
@@ -322,7 +328,7 @@
if (primary != null) {
checkForVideoCallChange();
- mIsVideoCall = mPrimaryCall.isVideoCall();
+ mIsVideoCall = mPrimaryCall.isVideoCall(mContext);
if (mIsVideoCall) {
enterVideoMode();
} else {
@@ -366,7 +372,7 @@
* Checks to see if the current video state has changed and updates the UI if required.
*/
private void checkForVideoStateChange() {
- boolean newVideoState = mPrimaryCall.isVideoCall();
+ boolean newVideoState = mPrimaryCall.isVideoCall(mContext);
// Check if video state changed
if (mIsVideoCall != newVideoState) {