Merge "Add new call states and refactor CAMSM parameters"
diff --git a/src/com/android/server/telecom/CallAudioManager.java b/src/com/android/server/telecom/CallAudioManager.java
index 7e4c3ba..6167260 100644
--- a/src/com/android/server/telecom/CallAudioManager.java
+++ b/src/com/android/server/telecom/CallAudioManager.java
@@ -26,6 +26,7 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.IndentingPrintWriter;
+import com.android.server.telecom.CallAudioModeStateMachine.MessageArgs.Builder;
import com.android.server.telecom.bluetooth.BluetoothStateReceiver;
import java.util.Collection;
@@ -44,6 +45,7 @@
private final LinkedHashSet<Call> mActiveDialingOrConnectingCalls;
private final LinkedHashSet<Call> mRingingCalls;
private final LinkedHashSet<Call> mHoldingCalls;
+ private final LinkedHashSet<Call> mAudioProcessingCalls;
private final Set<Call> mCalls;
private final SparseArray<LinkedHashSet<Call>> mCallStateToCalls;
@@ -69,9 +71,10 @@
RingbackPlayer ringbackPlayer,
BluetoothStateReceiver bluetoothStateReceiver,
DtmfLocalTonePlayer dtmfLocalTonePlayer) {
- mActiveDialingOrConnectingCalls = new LinkedHashSet<>();
- mRingingCalls = new LinkedHashSet<>();
- mHoldingCalls = new LinkedHashSet<>();
+ mActiveDialingOrConnectingCalls = new LinkedHashSet<>(1);
+ mRingingCalls = new LinkedHashSet<>(1);
+ mHoldingCalls = new LinkedHashSet<>(1);
+ mAudioProcessingCalls = new LinkedHashSet<>(1);
mCalls = new HashSet<>();
mCallStateToCalls = new SparseArray<LinkedHashSet<Call>>() {{
put(CallState.CONNECTING, mActiveDialingOrConnectingCalls);
@@ -80,6 +83,8 @@
put(CallState.PULLING, mActiveDialingOrConnectingCalls);
put(CallState.RINGING, mRingingCalls);
put(CallState.ON_HOLD, mHoldingCalls);
+ put(CallState.SIMULATED_RINGING, mRingingCalls);
+ put(CallState.AUDIO_PROCESSING, mAudioProcessingCalls);
}};
mCallAudioRouteStateMachine = callAudioRouteStateMachine;
@@ -534,6 +539,7 @@
onCallLeavingActiveDialingOrConnecting();
break;
case CallState.RINGING:
+ case CallState.SIMULATED_RINGING:
case CallState.ANSWERED:
onCallLeavingRinging();
break;
@@ -547,6 +553,9 @@
stopRingbackForCall(call);
onCallLeavingActiveDialingOrConnecting();
break;
+ case CallState.AUDIO_PROCESSING:
+ onCallLeavingAudioProcessing();
+ break;
}
}
@@ -557,6 +566,7 @@
onCallEnteringActiveDialingOrConnecting();
break;
case CallState.RINGING:
+ case CallState.SIMULATED_RINGING:
onCallEnteringRinging();
break;
case CallState.ON_HOLD:
@@ -574,9 +584,20 @@
onCallEnteringActiveDialingOrConnecting();
}
break;
+ case CallState.AUDIO_PROCESSING:
+ onCallEnteringAudioProcessing();
+ break;
}
}
+ private void onCallLeavingAudioProcessing() {
+ // TODO: implement
+ }
+
+ private void onCallEnteringAudioProcessing() {
+ // TODO: implement
+ }
+
private void onCallLeavingActiveDialingOrConnecting() {
if (mActiveDialingOrConnectingCalls.size() == 0) {
mCallAudioModeStateMachine.sendMessageWithArgs(
@@ -655,13 +676,14 @@
@NonNull
private CallAudioModeStateMachine.MessageArgs makeArgsForModeStateMachine() {
- return new CallAudioModeStateMachine.MessageArgs(
- mActiveDialingOrConnectingCalls.size() > 0,
- mRingingCalls.size() > 0,
- mHoldingCalls.size() > 0,
- mIsTonePlaying,
- mForegroundCall != null && mForegroundCall.getIsVoipAudioMode(),
- Log.createSubsession());
+ return new Builder()
+ .setHasActiveOrDialingCalls(mActiveDialingOrConnectingCalls.size() > 0)
+ .setHasRingingCalls(mRingingCalls.size() > 0)
+ .setHasHoldingCalls(mHoldingCalls.size() > 0)
+ .setIsTonePlaying(mIsTonePlaying)
+ .setForegroundCallIsVoip(
+ mForegroundCall != null && mForegroundCall.getIsVoipAudioMode())
+ .setSession(Log.createSubsession()).build();
}
private HashSet<Call> getBinForCall(Call call) {
diff --git a/src/com/android/server/telecom/CallAudioModeStateMachine.java b/src/com/android/server/telecom/CallAudioModeStateMachine.java
index e5c4617..4a7d9fc 100644
--- a/src/com/android/server/telecom/CallAudioModeStateMachine.java
+++ b/src/com/android/server/telecom/CallAudioModeStateMachine.java
@@ -28,6 +28,7 @@
import com.android.internal.util.IndentingPrintWriter;
import com.android.internal.util.State;
import com.android.internal.util.StateMachine;
+import com.android.server.telecom.CallAudioModeStateMachine.MessageArgs.Builder;
public class CallAudioModeStateMachine extends StateMachine {
public static class Factory {
@@ -45,7 +46,7 @@
public boolean foregroundCallIsVoip;
public Session session;
- public MessageArgs(boolean hasActiveOrDialingCalls, boolean hasRingingCalls,
+ private MessageArgs(boolean hasActiveOrDialingCalls, boolean hasRingingCalls,
boolean hasHoldingCalls, boolean isTonePlaying, boolean foregroundCallIsVoip,
Session session) {
this.hasActiveOrDialingCalls = hasActiveOrDialingCalls;
@@ -56,10 +57,6 @@
this.session = session;
}
- public MessageArgs() {
- this.session = Log.createSubsession();
- }
-
@Override
public String toString() {
return "MessageArgs{" +
@@ -71,6 +68,50 @@
", session=" + session +
'}';
}
+
+ public static class Builder {
+ private boolean mHasActiveOrDialingCalls;
+ private boolean mHasRingingCalls;
+ private boolean mHasHoldingCalls;
+ private boolean mIsTonePlaying;
+ private boolean mForegroundCallIsVoip;
+ private Session mSession;
+
+ public Builder setHasActiveOrDialingCalls(boolean hasActiveOrDialingCalls) {
+ mHasActiveOrDialingCalls = hasActiveOrDialingCalls;
+ return this;
+ }
+
+ public Builder setHasRingingCalls(boolean hasRingingCalls) {
+ mHasRingingCalls = hasRingingCalls;
+ return this;
+ }
+
+ public Builder setHasHoldingCalls(boolean hasHoldingCalls) {
+ mHasHoldingCalls = hasHoldingCalls;
+ return this;
+ }
+
+ public Builder setIsTonePlaying(boolean isTonePlaying) {
+ mIsTonePlaying = isTonePlaying;
+ return this;
+ }
+
+ public Builder setForegroundCallIsVoip(boolean foregroundCallIsVoip) {
+ mForegroundCallIsVoip = foregroundCallIsVoip;
+ return this;
+ }
+
+ public Builder setSession(Session session) {
+ mSession = session;
+ return this;
+ }
+
+ public MessageArgs build() {
+ return new MessageArgs(mHasActiveOrDialingCalls, mHasRingingCalls, mHasHoldingCalls,
+ mIsTonePlaying, mForegroundCallIsVoip, mSession);
+ }
+ }
}
public static final int INITIALIZE = 1;
@@ -529,7 +570,10 @@
addState(mOtherFocusState);
setInitialState(mUnfocusedState);
start();
- sendMessage(INITIALIZE, new MessageArgs());
+ sendMessage(INITIALIZE, new Builder().setHasActiveOrDialingCalls(
+ false).setHasRingingCalls(false).setHasHoldingCalls(false).setIsTonePlaying(
+ false).setForegroundCallIsVoip(false).setSession(
+ Log.createSubsession()).build());
}
public void setCallAudioManager(CallAudioManager callAudioManager) {
diff --git a/src/com/android/server/telecom/CallState.java b/src/com/android/server/telecom/CallState.java
index 1e31732..0411ecc 100644
--- a/src/com/android/server/telecom/CallState.java
+++ b/src/com/android/server/telecom/CallState.java
@@ -118,7 +118,19 @@
* Indicates that an incoming call has been answered by the in-call UI, but Telephony hasn't yet
* set the call to active.
*/
- public static final int ANSWERED = 11;
+ public static final int ANSWERED = TelecomProtoEnums.ANSWERED; // = 11
+
+ /**
+ * Indicates that the call is undergoing audio processing by a different app in the background.
+ * @see android.telecom.Call#STATE_AUDIO_PROCESSING
+ */
+ public static final int AUDIO_PROCESSING = TelecomProtoEnums.AUDIO_PROCESSING; // = 12
+
+ /**
+ * Indicates that the call is in a fake ringing state.
+ * @see android.telecom.Call#STATE_SIMULATED_RINGING
+ */
+ public static final int SIMULATED_RINGING = TelecomProtoEnums.SIMULATED_RINGING; // = 13
public static String toString(int callState) {
switch (callState) {
@@ -146,6 +158,10 @@
return "PULLING";
case ANSWERED:
return "ANSWERED";
+ case AUDIO_PROCESSING:
+ return "AUDIO_PROCESSING";
+ case SIMULATED_RINGING:
+ return "SIMULATED_RINGING";
default:
return "UNKNOWN";
}
diff --git a/tests/src/com/android/server/telecom/tests/CallAudioManagerTest.java b/tests/src/com/android/server/telecom/tests/CallAudioManagerTest.java
index 6c5ee8b..d1df29b 100644
--- a/tests/src/com/android/server/telecom/tests/CallAudioManagerTest.java
+++ b/tests/src/com/android/server/telecom/tests/CallAudioManagerTest.java
@@ -29,6 +29,7 @@
import com.android.server.telecom.CallAudioManager;
import com.android.server.telecom.DtmfLocalTonePlayer;
import com.android.server.telecom.InCallTonePlayer;
+import com.android.server.telecom.CallAudioModeStateMachine.MessageArgs.Builder;
import com.android.server.telecom.RingbackPlayer;
import com.android.server.telecom.Ringer;
import com.android.server.telecom.bluetooth.BluetoothStateReceiver;
@@ -117,14 +118,14 @@
verify(mCallAudioModeStateMachine).sendMessageWithArgs(
eq(CallAudioModeStateMachine.NO_MORE_RINGING_CALLS), captor.capture());
CallAudioModeStateMachine.MessageArgs correctArgs =
- new CallAudioModeStateMachine.MessageArgs(
- true, // hasActiveOrDialingCalls
- false, // hasRingingCalls
- false, // hasHoldingCalls
- false, // isTonePlaying
- false, // foregroundCallIsVoip
- null // session
- );
+ new Builder()
+ .setHasActiveOrDialingCalls(true)
+ .setHasRingingCalls(false)
+ .setHasHoldingCalls(false)
+ .setIsTonePlaying(false)
+ .setForegroundCallIsVoip(false)
+ .setSession(null)
+ .build();
assertMessageArgEquality(correctArgs, captor.getValue());
verify(mCallAudioModeStateMachine).sendMessageWithArgs(
eq(CallAudioModeStateMachine.NEW_ACTIVE_OR_DIALING_CALL), captor.capture());
@@ -179,14 +180,14 @@
verify(mCallAudioModeStateMachine).sendMessageWithArgs(
eq(CallAudioModeStateMachine.NO_MORE_RINGING_CALLS), captor.capture());
CallAudioModeStateMachine.MessageArgs correctArgs =
- new CallAudioModeStateMachine.MessageArgs(
- true, // hasActiveOrDialingCalls
- false, // hasRingingCalls
- false, // hasHoldingCalls
- false, // isTonePlaying
- false, // foregroundCallIsVoip
- null // session
- );
+ new Builder()
+ .setHasActiveOrDialingCalls(true)
+ .setHasRingingCalls(false)
+ .setHasHoldingCalls(false)
+ .setIsTonePlaying(false)
+ .setForegroundCallIsVoip(false)
+ .setSession(null)
+ .build();
assertMessageArgEquality(correctArgs, captor.getValue());
verify(mCallAudioModeStateMachine).sendMessageWithArgs(
eq(CallAudioModeStateMachine.NEW_ACTIVE_OR_DIALING_CALL), captor.capture());
@@ -216,14 +217,14 @@
verify(mCallAudioModeStateMachine).sendMessageWithArgs(
eq(CallAudioModeStateMachine.NO_MORE_RINGING_CALLS), captor.capture());
CallAudioModeStateMachine.MessageArgs correctArgs =
- new CallAudioModeStateMachine.MessageArgs(
- true, // hasActiveOrDialingCalls
- false, // hasRingingCalls
- false, // hasHoldingCalls
- false, // isTonePlaying
- false, // foregroundCallIsVoip
- null // session
- );
+ new Builder()
+ .setHasActiveOrDialingCalls(true)
+ .setHasRingingCalls(false)
+ .setHasHoldingCalls(false)
+ .setIsTonePlaying(false)
+ .setForegroundCallIsVoip(false)
+ .setSession(null)
+ .build();
assertMessageArgEquality(correctArgs, captor.getValue());
assertMessageArgEquality(correctArgs, captor.getValue());
when(call.getState()).thenReturn(CallState.ACTIVE);
@@ -251,14 +252,14 @@
verify(mCallAudioModeStateMachine).sendMessageWithArgs(
eq(CallAudioModeStateMachine.NEW_ACTIVE_OR_DIALING_CALL), captor.capture());
CallAudioModeStateMachine.MessageArgs expectedArgs =
- new CallAudioModeStateMachine.MessageArgs(
- true, // hasActiveOrDialingCalls
- false, // hasRingingCalls
- false, // hasHoldingCalls
- false, // isTonePlaying
- false, // foregroundCallIsVoip
- null // session
- );
+ new Builder()
+ .setHasActiveOrDialingCalls(true)
+ .setHasRingingCalls(false)
+ .setHasHoldingCalls(false)
+ .setIsTonePlaying(false)
+ .setForegroundCallIsVoip(false)
+ .setSession(null)
+ .build();
assertMessageArgEquality(expectedArgs, captor.getValue());
when(call.getState()).thenReturn(CallState.DIALING);
@@ -297,14 +298,15 @@
CallAudioRouteStateMachine.UPDATE_SYSTEM_AUDIO_ROUTE);
verify(mCallAudioModeStateMachine).sendMessageWithArgs(
eq(CallAudioModeStateMachine.NEW_RINGING_CALL), captor.capture());
- assertMessageArgEquality(new CallAudioModeStateMachine.MessageArgs(
- false, // hasActiveOrDialingCalls
- true, // hasRingingCalls
- false, // hasHoldingCalls
- false, // isTonePlaying
- false, // foregroundCallIsVoip
- null // session
- ), captor.getValue());
+ assertMessageArgEquality(new Builder()
+ .setHasActiveOrDialingCalls(false)
+ .setHasRingingCalls(true)
+ .setHasHoldingCalls(false)
+ .setIsTonePlaying(false)
+ .setForegroundCallIsVoip(false)
+ .setSession(null)
+ .build(),
+ captor.getValue());
return call;
}
@@ -320,14 +322,14 @@
mCallAudioManager.onCallStateChanged(call, CallState.ACTIVE, CallState.DISCONNECTED);
verify(mPlayerFactory).createPlayer(InCallTonePlayer.TONE_CALL_ENDED);
- correctArgs = new CallAudioModeStateMachine.MessageArgs(
- false, // hasActiveOrDialingCalls
- false, // hasRingingCalls
- false, // hasHoldingCalls
- true, // isTonePlaying
- false, // foregroundCallIsVoip
- null // session
- );
+ correctArgs = new Builder()
+ .setHasActiveOrDialingCalls(false)
+ .setHasRingingCalls(false)
+ .setHasHoldingCalls(false)
+ .setIsTonePlaying(true)
+ .setForegroundCallIsVoip(false)
+ .setSession(null)
+ .build();
verify(mCallAudioModeStateMachine).sendMessageWithArgs(
eq(CallAudioModeStateMachine.NO_MORE_ACTIVE_OR_DIALING_CALLS), captor.capture());
assertMessageArgEquality(correctArgs, captor.getValue());
@@ -340,15 +342,14 @@
ArgumentCaptor<CallAudioModeStateMachine.MessageArgs> captor =
ArgumentCaptor.forClass(CallAudioModeStateMachine.MessageArgs.class);
mCallAudioManager.setIsTonePlaying(false);
- CallAudioModeStateMachine.MessageArgs correctArgs =
- new CallAudioModeStateMachine.MessageArgs(
- false, // hasActiveOrDialingCalls
- false, // hasRingingCalls
- false, // hasHoldingCalls
- false, // isTonePlaying
- false, // foregroundCallIsVoip
- null // session
- );
+ CallAudioModeStateMachine.MessageArgs correctArgs = new Builder()
+ .setHasActiveOrDialingCalls(false)
+ .setHasRingingCalls(false)
+ .setHasHoldingCalls(false)
+ .setIsTonePlaying(false)
+ .setForegroundCallIsVoip(false)
+ .setSession(null)
+ .build();
verify(mCallAudioModeStateMachine).sendMessageWithArgs(
eq(CallAudioModeStateMachine.TONE_STOPPED_PLAYING), captor.capture());
assertMessageArgEquality(correctArgs, captor.getValue());
diff --git a/tests/src/com/android/server/telecom/tests/CallAudioModeStateMachineTest.java b/tests/src/com/android/server/telecom/tests/CallAudioModeStateMachineTest.java
index 0e33721..ca84c4c 100644
--- a/tests/src/com/android/server/telecom/tests/CallAudioModeStateMachineTest.java
+++ b/tests/src/com/android/server/telecom/tests/CallAudioModeStateMachineTest.java
@@ -23,6 +23,7 @@
import com.android.server.telecom.CallAudioManager;
import com.android.server.telecom.CallAudioModeStateMachine;
import com.android.server.telecom.CallAudioRouteStateMachine;
+import com.android.server.telecom.CallAudioModeStateMachine.MessageArgs.Builder;
import com.android.server.telecom.SystemStateHelper;
import org.junit.After;
@@ -79,15 +80,14 @@
resetMocks();
when(mCallAudioManager.startRinging()).thenReturn(false);
- sm.sendMessage(CallAudioModeStateMachine.NEW_RINGING_CALL,
- new CallAudioModeStateMachine.MessageArgs(
- false, // hasActiveOrDialingCalls
- true, // hasRingingCalls
- false, // hasHoldingCalls
- false, // isTonePlaying
- false, // foregroundCallIsVoip
- null // session
- ));
+ sm.sendMessage(CallAudioModeStateMachine.NEW_RINGING_CALL, new Builder()
+ .setHasActiveOrDialingCalls(false)
+ .setHasRingingCalls(true)
+ .setHasHoldingCalls(false)
+ .setIsTonePlaying(false)
+ .setForegroundCallIsVoip(false)
+ .setSession(null)
+ .build());
waitForHandlerAction(sm.getHandler(), TEST_TIMEOUT);
assertEquals(CallAudioModeStateMachine.RING_STATE_NAME, sm.getCurrentStateName());
@@ -107,29 +107,27 @@
mAudioManager, mTestThread.getLooper());
sm.setCallAudioManager(mCallAudioManager);
sm.sendMessage(CallAudioModeStateMachine.ABANDON_FOCUS_FOR_TESTING);
- sm.sendMessage(CallAudioModeStateMachine.NEW_HOLDING_CALL,
- new CallAudioModeStateMachine.MessageArgs(
- false, // hasActiveOrDialingCalls
- false, // hasRingingCalls
- true, // hasHoldingCalls
- false, // isTonePlaying
- false, // foregroundCallIsVoip
- null // session
- ));
+ sm.sendMessage(CallAudioModeStateMachine.NEW_HOLDING_CALL, new Builder()
+ .setHasActiveOrDialingCalls(false)
+ .setHasRingingCalls(false)
+ .setHasHoldingCalls(true)
+ .setIsTonePlaying(false)
+ .setForegroundCallIsVoip(false)
+ .setSession(null)
+ .build());
waitForHandlerAction(sm.getHandler(), TEST_TIMEOUT);
assertEquals(CallAudioModeStateMachine.TONE_HOLD_STATE_NAME, sm.getCurrentStateName());
when(mSystemStateHelper.isDeviceAtEar()).thenReturn(true);
resetMocks();
- sm.sendMessage(CallAudioModeStateMachine.NEW_RINGING_CALL,
- new CallAudioModeStateMachine.MessageArgs(
- false, // hasActiveOrDialingCalls
- true, // hasRingingCalls
- true, // hasHoldingCalls
- false, // isTonePlaying
- false, // foregroundCallIsVoip
- null // session
- ));
+ sm.sendMessage(CallAudioModeStateMachine.NEW_RINGING_CALL, new Builder()
+ .setHasActiveOrDialingCalls(false)
+ .setHasRingingCalls(true)
+ .setHasHoldingCalls(true)
+ .setIsTonePlaying(false)
+ .setForegroundCallIsVoip(false)
+ .setSession(null)
+ .build());
waitForHandlerAction(sm.getHandler(), TEST_TIMEOUT);
verify(mAudioManager, never()).requestAudioFocusForCall(anyInt(), anyInt());
@@ -150,15 +148,14 @@
resetMocks();
when(mCallAudioManager.startRinging()).thenReturn(false);
- sm.sendMessage(CallAudioModeStateMachine.NEW_RINGING_CALL,
- new CallAudioModeStateMachine.MessageArgs(
- false, // hasActiveOrDialingCalls
- true, // hasRingingCalls
- false, // hasHoldingCalls
- false, // isTonePlaying
- false, // foregroundCallIsVoip
- null // session
- ));
+ sm.sendMessage(CallAudioModeStateMachine.NEW_RINGING_CALL, new Builder()
+ .setHasActiveOrDialingCalls(false)
+ .setHasRingingCalls(true)
+ .setHasHoldingCalls(false)
+ .setIsTonePlaying(false)
+ .setForegroundCallIsVoip(false)
+ .setSession(null)
+ .build());
waitForHandlerAction(sm.getHandler(), TEST_TIMEOUT);
assertEquals(CallAudioModeStateMachine.RING_STATE_NAME, sm.getCurrentStateName());
diff --git a/tests/src/com/android/server/telecom/tests/CallAudioModeTransitionTests.java b/tests/src/com/android/server/telecom/tests/CallAudioModeTransitionTests.java
index c90557d..a2ddf0f 100644
--- a/tests/src/com/android/server/telecom/tests/CallAudioModeTransitionTests.java
+++ b/tests/src/com/android/server/telecom/tests/CallAudioModeTransitionTests.java
@@ -16,13 +16,13 @@
package com.android.server.telecom.tests;
-import android.content.Context;
import android.media.AudioManager;
import android.os.HandlerThread;
import android.test.suitebuilder.annotation.SmallTest;
import com.android.server.telecom.CallAudioManager;
import com.android.server.telecom.CallAudioModeStateMachine;
+import com.android.server.telecom.CallAudioModeStateMachine.MessageArgs;
import com.android.server.telecom.SystemStateHelper;
import org.junit.After;
@@ -200,14 +200,14 @@
"New active/dialing call with no other calls when unfocused",
CallAudioModeStateMachine.ABANDON_FOCUS_FOR_TESTING, // initialAudioState
CallAudioModeStateMachine.NEW_ACTIVE_OR_DIALING_CALL, // messageType
- new CallAudioModeStateMachine.MessageArgs(
- true, // hasActiveOrDialingCalls
- false, // hasRingingCalls
- false, // hasHoldingCalls
- false, // isTonePlaying
- false, // foregroundCallIsVoip
- null // session
- ),
+ new MessageArgs.Builder()
+ .setHasActiveOrDialingCalls(true)
+ .setHasRingingCalls(false)
+ .setHasHoldingCalls(false)
+ .setIsTonePlaying(false)
+ .setForegroundCallIsVoip(false)
+ .setSession(null)
+ .build(),
CallAudioModeStateMachine.CALL_STATE_NAME, // expectedFinalStateName
FOCUS_VOICE, // expectedFocus
AudioManager.MODE_IN_CALL, // expectedMode
@@ -219,14 +219,14 @@
"New active/dialing voip call with no other calls when unfocused",
CallAudioModeStateMachine.ABANDON_FOCUS_FOR_TESTING, // initialAudioState
CallAudioModeStateMachine.NEW_ACTIVE_OR_DIALING_CALL, // messageType
- new CallAudioModeStateMachine.MessageArgs(
- true, // hasActiveOrDialingCalls
- false, // hasRingingCalls
- false, // hasHoldingCalls
- false, // isTonePlaying
- true, // foregroundCallIsVoip
- null // session
- ),
+ new MessageArgs.Builder()
+ .setHasActiveOrDialingCalls(true)
+ .setHasRingingCalls(false)
+ .setHasHoldingCalls(false)
+ .setIsTonePlaying(false)
+ .setForegroundCallIsVoip(true)
+ .setSession(null)
+ .build(),
CallAudioModeStateMachine.COMMS_STATE_NAME, // expectedFinalStateName
FOCUS_VOICE, // expectedFocus
AudioManager.MODE_IN_COMMUNICATION, // expectedMode
@@ -238,14 +238,14 @@
"New ringing call with no other calls when unfocused",
CallAudioModeStateMachine.ABANDON_FOCUS_FOR_TESTING, // initialAudioState
CallAudioModeStateMachine.NEW_RINGING_CALL, // messageType
- new CallAudioModeStateMachine.MessageArgs(
- false, // hasActiveOrDialingCalls
- true, // hasRingingCalls
- false, // hasHoldingCalls
- false, // isTonePlaying
- false, // foregroundCallIsVoip
- null // session
- ),
+ new MessageArgs.Builder()
+ .setHasActiveOrDialingCalls(false)
+ .setHasRingingCalls(true)
+ .setHasHoldingCalls(false)
+ .setIsTonePlaying(false)
+ .setForegroundCallIsVoip(false)
+ .setSession(null)
+ .build(),
CallAudioModeStateMachine.RING_STATE_NAME, // expectedFinalStateName
FOCUS_RING, // expectedFocus
AudioManager.MODE_RINGTONE, // expectedMode
@@ -257,14 +257,14 @@
"New ringing call coming in on top of active/dialing call",
CallAudioModeStateMachine.ENTER_CALL_FOCUS_FOR_TESTING, // initialAudioState
CallAudioModeStateMachine.NEW_RINGING_CALL, // messageType
- new CallAudioModeStateMachine.MessageArgs(
- true, // hasActiveOrDialingCalls
- true, // hasRingingCalls
- false, // hasHoldingCalls
- false, // isTonePlaying
- false, // foregroundCallIsVoip
- null // session
- ),
+ new MessageArgs.Builder()
+ .setHasActiveOrDialingCalls(true)
+ .setHasRingingCalls(true)
+ .setHasHoldingCalls(false)
+ .setIsTonePlaying(false)
+ .setForegroundCallIsVoip(false)
+ .setSession(null)
+ .build(),
CallAudioModeStateMachine.CALL_STATE_NAME, // expectedFinalStateName
NO_CHANGE, // expectedFocus
NO_CHANGE, // expectedMode
@@ -276,14 +276,14 @@
"Ringing call becomes active, part 1",
CallAudioModeStateMachine.ENTER_RING_FOCUS_FOR_TESTING, // initialAudioState
CallAudioModeStateMachine.NEW_ACTIVE_OR_DIALING_CALL, // messageType
- new CallAudioModeStateMachine.MessageArgs(
- true, // hasActiveOrDialingCalls
- false, // hasRingingCalls
- false, // hasHoldingCalls
- false, // isTonePlaying
- false, // foregroundCallIsVoip
- null // session
- ),
+ new MessageArgs.Builder()
+ .setHasActiveOrDialingCalls(true)
+ .setHasRingingCalls(false)
+ .setHasHoldingCalls(false)
+ .setIsTonePlaying(false)
+ .setForegroundCallIsVoip(false)
+ .setSession(null)
+ .build(),
CallAudioModeStateMachine.CALL_STATE_NAME, // expectedFinalStateName
FOCUS_VOICE, // expectedFocus
AudioManager.MODE_IN_CALL, // expectedMode
@@ -295,14 +295,14 @@
"Ringing call becomes active, part 2",
CallAudioModeStateMachine.ENTER_CALL_FOCUS_FOR_TESTING, // initialAudioState
CallAudioModeStateMachine.NO_MORE_RINGING_CALLS, // messageType
- new CallAudioModeStateMachine.MessageArgs(
- true, // hasActiveOrDialingCalls
- false, // hasRingingCalls
- false, // hasHoldingCalls
- false, // isTonePlaying
- false, // foregroundCallIsVoip
- null // session
- ),
+ new MessageArgs.Builder()
+ .setHasActiveOrDialingCalls(true)
+ .setHasRingingCalls(false)
+ .setHasHoldingCalls(false)
+ .setIsTonePlaying(false)
+ .setForegroundCallIsVoip(false)
+ .setSession(null)
+ .build(),
CallAudioModeStateMachine.CALL_STATE_NAME, // expectedFinalStateName
NO_CHANGE, // expectedFocus
NO_CHANGE, // expectedMode
@@ -314,14 +314,14 @@
"Active call disconnects, but tone is playing",
CallAudioModeStateMachine.ENTER_CALL_FOCUS_FOR_TESTING, // initialAudioState
CallAudioModeStateMachine.NO_MORE_ACTIVE_OR_DIALING_CALLS, // messageType
- new CallAudioModeStateMachine.MessageArgs(
- false, // hasActiveOrDialingCalls
- false, // hasRingingCalls
- false, // hasHoldingCalls
- true, // isTonePlaying
- false, // foregroundCallIsVoip
- null // session
- ),
+ new MessageArgs.Builder()
+ .setHasActiveOrDialingCalls(false)
+ .setHasRingingCalls(false)
+ .setHasHoldingCalls(false)
+ .setIsTonePlaying(true)
+ .setForegroundCallIsVoip(false)
+ .setSession(null)
+ .build(),
CallAudioModeStateMachine.TONE_HOLD_STATE_NAME, // expectedFinalStateName
FOCUS_VOICE, // expectedFocus
AudioManager.MODE_IN_CALL, // expectedMode
@@ -333,14 +333,14 @@
"Tone stops playing, with no active calls",
CallAudioModeStateMachine.ENTER_TONE_OR_HOLD_FOCUS_FOR_TESTING, // initialAudioState
CallAudioModeStateMachine.TONE_STOPPED_PLAYING, // messageType
- new CallAudioModeStateMachine.MessageArgs(
- false, // hasActiveOrDialingCalls
- false, // hasRingingCalls
- false, // hasHoldingCalls
- false, // isTonePlaying
- false, // foregroundCallIsVoip
- null // session
- ),
+ new MessageArgs.Builder()
+ .setHasActiveOrDialingCalls(false)
+ .setHasRingingCalls(false)
+ .setHasHoldingCalls(false)
+ .setIsTonePlaying(false)
+ .setForegroundCallIsVoip(false)
+ .setSession(null)
+ .build(),
CallAudioModeStateMachine.UNFOCUSED_STATE_NAME, // expectedFinalStateName
FOCUS_OFF, // expectedFocus
AudioManager.MODE_NORMAL, // expectedMode
@@ -352,14 +352,14 @@
"Ringing call disconnects",
CallAudioModeStateMachine.ENTER_RING_FOCUS_FOR_TESTING, // initialAudioState
CallAudioModeStateMachine.NO_MORE_RINGING_CALLS, // messageType
- new CallAudioModeStateMachine.MessageArgs(
- false, // hasActiveOrDialingCalls
- false, // hasRingingCalls
- false, // hasHoldingCalls
- false, // isTonePlaying
- false, // foregroundCallIsVoip
- null // session
- ),
+ new MessageArgs.Builder()
+ .setHasActiveOrDialingCalls(false)
+ .setHasRingingCalls(false)
+ .setHasHoldingCalls(false)
+ .setIsTonePlaying(false)
+ .setForegroundCallIsVoip(false)
+ .setSession(null)
+ .build(),
CallAudioModeStateMachine.UNFOCUSED_STATE_NAME, // expectedFinalStateName
FOCUS_OFF, // expectedFocus
AudioManager.MODE_NORMAL, // expectedMode
@@ -371,14 +371,14 @@
"Call-waiting call disconnects",
CallAudioModeStateMachine.ENTER_CALL_FOCUS_FOR_TESTING, // initialAudioState
CallAudioModeStateMachine.NO_MORE_RINGING_CALLS, // messageType
- new CallAudioModeStateMachine.MessageArgs(
- true, // hasActiveOrDialingCalls
- false, // hasRingingCalls
- false, // hasHoldingCalls
- true, // isTonePlaying
- false, // foregroundCallIsVoip
- null // session
- ),
+ new MessageArgs.Builder()
+ .setHasActiveOrDialingCalls(true)
+ .setHasRingingCalls(false)
+ .setHasHoldingCalls(false)
+ .setIsTonePlaying(true)
+ .setForegroundCallIsVoip(false)
+ .setSession(null)
+ .build(),
CallAudioModeStateMachine.CALL_STATE_NAME, // expectedFinalStateName
FOCUS_NO_CHANGE, // expectedFocus
NO_CHANGE, // expectedMode
@@ -390,14 +390,14 @@
"Call is placed on hold - 1",
CallAudioModeStateMachine.ENTER_CALL_FOCUS_FOR_TESTING, // initialAudioState
CallAudioModeStateMachine.NO_MORE_ACTIVE_OR_DIALING_CALLS, // messageType
- new CallAudioModeStateMachine.MessageArgs(
- false, // hasActiveOrDialingCalls
- false, // hasRingingCalls
- true, // hasHoldingCalls
- false, // isTonePlaying
- false, // foregroundCallIsVoip
- null // session
- ),
+ new MessageArgs.Builder()
+ .setHasActiveOrDialingCalls(false)
+ .setHasRingingCalls(false)
+ .setHasHoldingCalls(true)
+ .setIsTonePlaying(false)
+ .setForegroundCallIsVoip(false)
+ .setSession(null)
+ .build(),
CallAudioModeStateMachine.TONE_HOLD_STATE_NAME, // expectedFinalStateName
FOCUS_VOICE, // expectedFocus
AudioManager.MODE_IN_CALL, // expectedMode
@@ -409,14 +409,14 @@
"Call is placed on hold - 2",
CallAudioModeStateMachine.ENTER_TONE_OR_HOLD_FOCUS_FOR_TESTING, // initialAudioState
CallAudioModeStateMachine.NEW_HOLDING_CALL, // messageType
- new CallAudioModeStateMachine.MessageArgs(
- false, // hasActiveOrDialingCalls
- false, // hasRingingCalls
- true, // hasHoldingCalls
- false, // isTonePlaying
- false, // foregroundCallIsVoip
- null // session
- ),
+ new MessageArgs.Builder()
+ .setHasActiveOrDialingCalls(false)
+ .setHasRingingCalls(false)
+ .setHasHoldingCalls(true)
+ .setIsTonePlaying(false)
+ .setForegroundCallIsVoip(false)
+ .setSession(null)
+ .build(),
CallAudioModeStateMachine.TONE_HOLD_STATE_NAME, // expectedFinalStateName
FOCUS_NO_CHANGE, // expectedFocus
NO_CHANGE, // expectedMode
@@ -428,14 +428,14 @@
"Swap between voip and sim calls - 1",
CallAudioModeStateMachine.ENTER_CALL_FOCUS_FOR_TESTING, // initialAudioState
CallAudioModeStateMachine.NEW_HOLDING_CALL, // messageType
- new CallAudioModeStateMachine.MessageArgs(
- false, // hasActiveOrDialingCalls
- false, // hasRingingCalls
- true, // hasHoldingCalls
- false, // isTonePlaying
- true, // foregroundCallIsVoip
- null // session
- ),
+ new MessageArgs.Builder()
+ .setHasActiveOrDialingCalls(false)
+ .setHasRingingCalls(false)
+ .setHasHoldingCalls(true)
+ .setIsTonePlaying(false)
+ .setForegroundCallIsVoip(true)
+ .setSession(null)
+ .build(),
CallAudioModeStateMachine.COMMS_STATE_NAME, // expectedFinalStateName
FOCUS_VOICE, // expectedFocus
AudioManager.MODE_IN_COMMUNICATION, // expectedMode
@@ -447,14 +447,14 @@
"Swap between voip and sim calls - 2",
CallAudioModeStateMachine.ENTER_COMMS_FOCUS_FOR_TESTING, // initialAudioState
CallAudioModeStateMachine.NEW_HOLDING_CALL, // messageType
- new CallAudioModeStateMachine.MessageArgs(
- false, // hasActiveOrDialingCalls
- false, // hasRingingCalls
- true, // hasHoldingCalls
- false, // isTonePlaying
- false, // foregroundCallIsVoip
- null // session
- ),
+ new MessageArgs.Builder()
+ .setHasActiveOrDialingCalls(false)
+ .setHasRingingCalls(false)
+ .setHasHoldingCalls(true)
+ .setIsTonePlaying(false)
+ .setForegroundCallIsVoip(false)
+ .setSession(null)
+ .build(),
CallAudioModeStateMachine.CALL_STATE_NAME, // expectedFinalStateName
FOCUS_VOICE, // expectedFocus
AudioManager.MODE_IN_CALL, // expectedMode
@@ -466,14 +466,14 @@
"Swap between voip and sim calls - 3",
CallAudioModeStateMachine.ENTER_COMMS_FOCUS_FOR_TESTING, // initialAudioState
CallAudioModeStateMachine.NEW_ACTIVE_OR_DIALING_CALL, // messageType
- new CallAudioModeStateMachine.MessageArgs(
- false, // hasActiveOrDialingCalls
- false, // hasRingingCalls
- true, // hasHoldingCalls
- false, // isTonePlaying
- false, // foregroundCallIsVoip
- null // session
- ),
+ new MessageArgs.Builder()
+ .setHasActiveOrDialingCalls(false)
+ .setHasRingingCalls(false)
+ .setHasHoldingCalls(true)
+ .setIsTonePlaying(false)
+ .setForegroundCallIsVoip(false)
+ .setSession(null)
+ .build(),
CallAudioModeStateMachine.CALL_STATE_NAME, // expectedFinalStateName
FOCUS_VOICE, // expectedFocus
AudioManager.MODE_IN_CALL, // expectedMode
@@ -485,14 +485,14 @@
"Swap between voip and sim calls - 4",
CallAudioModeStateMachine.ENTER_CALL_FOCUS_FOR_TESTING, // initialAudioState
CallAudioModeStateMachine.NEW_HOLDING_CALL, // messageType
- new CallAudioModeStateMachine.MessageArgs(
- false, // hasActiveOrDialingCalls
- false, // hasRingingCalls
- true, // hasHoldingCalls
- false, // isTonePlaying
- true, // foregroundCallIsVoip
- null // session
- ),
+ new MessageArgs.Builder()
+ .setHasActiveOrDialingCalls(false)
+ .setHasRingingCalls(false)
+ .setHasHoldingCalls(true)
+ .setIsTonePlaying(false)
+ .setForegroundCallIsVoip(true)
+ .setSession(null)
+ .build(),
CallAudioModeStateMachine.COMMS_STATE_NAME, // expectedFinalStateName
FOCUS_VOICE, // expectedFocus
AudioManager.MODE_IN_COMMUNICATION, // expectedMode
@@ -504,14 +504,14 @@
"Call is taken off hold - 1",
CallAudioModeStateMachine.ENTER_TONE_OR_HOLD_FOCUS_FOR_TESTING, // initialAudioState
CallAudioModeStateMachine.NO_MORE_HOLDING_CALLS, // messageType
- new CallAudioModeStateMachine.MessageArgs(
- true, // hasActiveOrDialingCalls
- false, // hasRingingCalls
- false, // hasHoldingCalls
- false, // isTonePlaying
- false, // foregroundCallIsVoip
- null // session
- ),
+ new MessageArgs.Builder()
+ .setHasActiveOrDialingCalls(true)
+ .setHasRingingCalls(false)
+ .setHasHoldingCalls(false)
+ .setIsTonePlaying(false)
+ .setForegroundCallIsVoip(false)
+ .setSession(null)
+ .build(),
CallAudioModeStateMachine.CALL_STATE_NAME, // expectedFinalStateName
FOCUS_VOICE, // expectedFocus
AudioManager.MODE_IN_CALL, // expectedMode
@@ -523,14 +523,14 @@
"Call is taken off hold - 2",
CallAudioModeStateMachine.ENTER_CALL_FOCUS_FOR_TESTING, // initialAudioState
CallAudioModeStateMachine.NEW_ACTIVE_OR_DIALING_CALL, // messageType
- new CallAudioModeStateMachine.MessageArgs(
- true, // hasActiveOrDialingCalls
- false, // hasRingingCalls
- false, // hasHoldingCalls
- false, // isTonePlaying
- false, // foregroundCallIsVoip
- null // session
- ),
+ new MessageArgs.Builder()
+ .setHasActiveOrDialingCalls(true)
+ .setHasRingingCalls(false)
+ .setHasHoldingCalls(false)
+ .setIsTonePlaying(false)
+ .setForegroundCallIsVoip(false)
+ .setSession(null)
+ .build(),
CallAudioModeStateMachine.CALL_STATE_NAME, // expectedFinalStateName
FOCUS_NO_CHANGE, // expectedFocus
NO_CHANGE, // expectedMode
@@ -542,14 +542,14 @@
"Active call disconnects while there's a call-waiting call",
CallAudioModeStateMachine.ENTER_CALL_FOCUS_FOR_TESTING, // initialAudioState
CallAudioModeStateMachine.NO_MORE_ACTIVE_OR_DIALING_CALLS, // messageType
- new CallAudioModeStateMachine.MessageArgs(
- false, // hasActiveOrDialingCalls
- true, // hasRingingCalls
- false, // hasHoldingCalls
- true, // isTonePlaying
- false, // foregroundCallIsVoip
- null // session
- ),
+ new MessageArgs.Builder()
+ .setHasActiveOrDialingCalls(false)
+ .setHasRingingCalls(true)
+ .setHasHoldingCalls(false)
+ .setIsTonePlaying(true)
+ .setForegroundCallIsVoip(false)
+ .setSession(null)
+ .build(),
CallAudioModeStateMachine.RING_STATE_NAME, // expectedFinalStateName
FOCUS_RING, // expectedFocus
AudioManager.MODE_RINGTONE, // expectedMode
@@ -561,14 +561,14 @@
"New dialing call when there's a call on hold",
CallAudioModeStateMachine.ENTER_TONE_OR_HOLD_FOCUS_FOR_TESTING, // initialAudioState
CallAudioModeStateMachine.NEW_ACTIVE_OR_DIALING_CALL, // messageType
- new CallAudioModeStateMachine.MessageArgs(
- true, // hasActiveOrDialingCalls
- false, // hasRingingCalls
- true, // hasHoldingCalls
- false, // isTonePlaying
- false, // foregroundCallIsVoip
- null // session
- ),
+ new MessageArgs.Builder()
+ .setHasActiveOrDialingCalls(true)
+ .setHasRingingCalls(false)
+ .setHasHoldingCalls(true)
+ .setIsTonePlaying(false)
+ .setForegroundCallIsVoip(false)
+ .setSession(null)
+ .build(),
CallAudioModeStateMachine.CALL_STATE_NAME, // expectedFinalStateName
FOCUS_VOICE, // expectedFocus
AudioManager.MODE_IN_CALL, // expectedMode
@@ -580,14 +580,14 @@
"Ringing call disconnects with a holding call in the background",
CallAudioModeStateMachine.ENTER_RING_FOCUS_FOR_TESTING, // initialAudioState
CallAudioModeStateMachine.NO_MORE_RINGING_CALLS, // messageType
- new CallAudioModeStateMachine.MessageArgs(
- false, // hasActiveOrDialingCalls
- false, // hasRingingCalls
- true, // hasHoldingCalls
- false, // isTonePlaying
- false, // foregroundCallIsVoip
- null // session
- ),
+ new MessageArgs.Builder()
+ .setHasActiveOrDialingCalls(false)
+ .setHasRingingCalls(false)
+ .setHasHoldingCalls(true)
+ .setIsTonePlaying(false)
+ .setForegroundCallIsVoip(false)
+ .setSession(null)
+ .build(),
CallAudioModeStateMachine.TONE_HOLD_STATE_NAME, // expectedFinalStateName
FOCUS_VOICE, // expectedFocus
AudioManager.MODE_NORMAL, // expectedMode -- we're expecting this because
@@ -600,14 +600,14 @@
"Foreground call transitions from sim to voip",
CallAudioModeStateMachine.ENTER_CALL_FOCUS_FOR_TESTING, // initialAudioState
CallAudioModeStateMachine.FOREGROUND_VOIP_MODE_CHANGE, // messageType
- new CallAudioModeStateMachine.MessageArgs(
- true, // hasActiveOrDialingCalls
- false, // hasRingingCalls
- false, // hasHoldingCalls
- false, // isTonePlaying
- true, // foregroundCallIsVoip
- null // session
- ),
+ new MessageArgs.Builder()
+ .setHasActiveOrDialingCalls(true)
+ .setHasRingingCalls(false)
+ .setHasHoldingCalls(false)
+ .setIsTonePlaying(false)
+ .setForegroundCallIsVoip(true)
+ .setSession(null)
+ .build(),
CallAudioModeStateMachine.COMMS_STATE_NAME, // expectedFinalStateName
FOCUS_VOICE, // expectedFocus
AudioManager.MODE_IN_COMMUNICATION, // expectedMode
@@ -619,14 +619,14 @@
"Foreground call transitions from voip to sim",
CallAudioModeStateMachine.ENTER_COMMS_FOCUS_FOR_TESTING, // initialAudioState
CallAudioModeStateMachine.FOREGROUND_VOIP_MODE_CHANGE, // messageType
- new CallAudioModeStateMachine.MessageArgs(
- true, // hasActiveOrDialingCalls
- false, // hasRingingCalls
- false, // hasHoldingCalls
- false, // isTonePlaying
- false, // foregroundCallIsVoip
- null // session
- ),
+ new MessageArgs.Builder()
+ .setHasActiveOrDialingCalls(true)
+ .setHasRingingCalls(false)
+ .setHasHoldingCalls(false)
+ .setIsTonePlaying(false)
+ .setForegroundCallIsVoip(false)
+ .setSession(null)
+ .build(),
CallAudioModeStateMachine.CALL_STATE_NAME, // expectedFinalStateName
FOCUS_VOICE, // expectedFocus
AudioManager.MODE_IN_CALL, // expectedMode
@@ -639,14 +639,14 @@
"foreground",
CallAudioModeStateMachine.ENTER_CALL_FOCUS_FOR_TESTING, // initialAudioState
CallAudioModeStateMachine.NO_MORE_RINGING_CALLS, // messageType
- new CallAudioModeStateMachine.MessageArgs(
- true, // hasActiveOrDialingCalls
- false, // hasRingingCalls
- false, // hasHoldingCalls
- true, // isTonePlaying
- false, // foregroundCallIsVoip
- null // session
- ),
+ new MessageArgs.Builder()
+ .setHasActiveOrDialingCalls(true)
+ .setHasRingingCalls(false)
+ .setHasHoldingCalls(false)
+ .setIsTonePlaying(true)
+ .setForegroundCallIsVoip(false)
+ .setSession(null)
+ .build(),
CallAudioModeStateMachine.CALL_STATE_NAME, // expectedFinalStateName
FOCUS_NO_CHANGE, // expectedFocus
NO_CHANGE, // expectedMode
@@ -659,14 +659,14 @@
"foreground",
CallAudioModeStateMachine.ENTER_COMMS_FOCUS_FOR_TESTING, // initialAudioState
CallAudioModeStateMachine.NO_MORE_RINGING_CALLS, // messageType
- new CallAudioModeStateMachine.MessageArgs(
- true, // hasActiveOrDialingCalls
- false, // hasRingingCalls
- false, // hasHoldingCalls
- true, // isTonePlaying
- true, // foregroundCallIsVoip
- null // session
- ),
+ new MessageArgs.Builder()
+ .setHasActiveOrDialingCalls(true)
+ .setHasRingingCalls(false)
+ .setHasHoldingCalls(false)
+ .setIsTonePlaying(true)
+ .setForegroundCallIsVoip(true)
+ .setSession(null)
+ .build(),
CallAudioModeStateMachine.COMMS_STATE_NAME, // expectedFinalStateName
FOCUS_NO_CHANGE, // expectedFocus
NO_CHANGE, // expectedMode