Fix speaker enabled when try to place a video call and there is no am: 5fd330f843
Change-Id: I95180dedfde41c60df0285d14c58640833dd66e7
diff --git a/src/com/android/server/telecom/CallsManager.java b/src/com/android/server/telecom/CallsManager.java
index 9bd1fe5..1b5e485 100644
--- a/src/com/android/server/telecom/CallsManager.java
+++ b/src/com/android/server/telecom/CallsManager.java
@@ -2028,7 +2028,10 @@
// Auto-enable speakerphone if the originating intent specified to do so, if the call
// is a video call, of if using speaker when docked
- call.setStartWithSpeakerphoneOn(speakerphoneOn || useSpeakerForVideoCall
+ PhoneAccount account = mPhoneAccountRegistrar.getPhoneAccount(
+ call.getTargetPhoneAccount(), call.getInitiatingUser());
+ boolean allowVideo = account.hasCapabilities(PhoneAccount.CAPABILITY_VIDEO_CALLING);
+ call.setStartWithSpeakerphoneOn(speakerphoneOn || (useSpeakerForVideoCall && allowVideo)
|| (useSpeakerWhenDocked && useSpeakerForDock));
call.setVideoState(videoState);
diff --git a/tests/src/com/android/server/telecom/tests/CallsManagerTest.java b/tests/src/com/android/server/telecom/tests/CallsManagerTest.java
index ef294bd..e6fa1d0 100644
--- a/tests/src/com/android/server/telecom/tests/CallsManagerTest.java
+++ b/tests/src/com/android/server/telecom/tests/CallsManagerTest.java
@@ -42,9 +42,9 @@
import android.os.Bundle;
import android.os.Process;
import android.os.SystemClock;
+import android.os.UserHandle;
import android.telecom.CallerInfo;
import android.telecom.Connection;
-import android.telecom.Log;
import android.telecom.PhoneAccount;
import android.telecom.PhoneAccountHandle;
import android.telecom.TelecomManager;
@@ -1195,6 +1195,22 @@
assertTrue(ongoingCall.isVideoCallingSupportedByPhoneAccount());
}
+ /**
+ * Verifies that speakers is disabled when there's no video capabilities, even if a video call
+ * tried to place.
+ * @throws Exception
+ */
+ @SmallTest
+ @Test
+ public void testSpeakerDisabledWhenNoVideoCapabilities() throws Exception {
+ Call outgoingCall = addSpyCall(CallState.NEW);
+ when(mPhoneAccountRegistrar.getPhoneAccount(
+ any(PhoneAccountHandle.class), any(UserHandle.class))).thenReturn(SIM_1_ACCOUNT);
+ mCallsManager.placeOutgoingCall(outgoingCall, TEST_ADDRESS, null, true,
+ VideoProfile.STATE_TX_ENABLED);
+ assertFalse(outgoingCall.getStartWithSpeakerphoneOn());
+ }
+
private Call addSpyCall() {
return addSpyCall(SIM_2_HANDLE, CallState.ACTIVE);