add flag for CS aduio flicker
b/290847206 was merged to V without a flag to gate the new logic.
This CL gates all the changes in b/290847206 and updates 2 tests.
Fixes: 309540769
Bug: 290847206 (original bug)
Test: updated 2 unit tests
Change-Id: I05dfa70e06154f3f8a114455432e04b0e77b3a56
diff --git a/flags/Android.bp b/flags/Android.bp
index 7e2b31d..4f43a52 100644
--- a/flags/Android.bp
+++ b/flags/Android.bp
@@ -29,10 +29,11 @@
"telecom_incallservice_flags.aconfig",
"telecom_default_phone_account_flags.aconfig",
"telecom_callaudioroutestatemachine_flags.aconfig",
+ "telecom_calls_manager_flags.aconfig",
"telecom_anomaly_report_flags.aconfig",
"telecom_callaudiomodestatemachine_flags.aconfig",
"telecom_calllog_flags.aconfig",
- "telecom_resolve_hidden_dependencies.aconfig"
+ "telecom_resolve_hidden_dependencies.aconfig",
],
}
diff --git a/flags/telecom_calls_manager_flags.aconfig b/flags/telecom_calls_manager_flags.aconfig
new file mode 100644
index 0000000..7153f81
--- /dev/null
+++ b/flags/telecom_calls_manager_flags.aconfig
@@ -0,0 +1,8 @@
+package: "com.android.server.telecom.flags"
+
+flag {
+ name: "fix_audio_flicker_for_outgoing_calls"
+ namespace: "telecom"
+ description: "This fix ensures the MO calls won't switch from Active to Quite b/c setDialing was not called"
+ bug: "309540769"
+}
diff --git a/src/com/android/server/telecom/CallsManager.java b/src/com/android/server/telecom/CallsManager.java
index 7fea8e0..9cde552 100755
--- a/src/com/android/server/telecom/CallsManager.java
+++ b/src/com/android/server/telecom/CallsManager.java
@@ -767,6 +767,10 @@
call.setPostCallPackageName(getRoleManagerAdapter().getDefaultCallScreeningApp(
call.getAssociatedUser()));
+ if (!mFeatureFlags.fixAudioFlickerForOutgoingCalls()) {
+ setCallState(call, callState, "successful outgoing call");
+ }
+
if (!mCalls.contains(call)) {
// Call was not added previously in startOutgoingCall due to it being a potential MMI
// code, so add it now.
@@ -778,11 +782,16 @@
listener.onConnectionServiceChanged(call, null, call.getConnectionService());
}
- // Allow the ConnectionService to start the call in the active state. This case is helpful
- // for conference calls or meetings that can skip the dialing stage.
- if (callState == CallState.ACTIVE) {
- setCallState(call, callState, "skipping the dialing state and setting active");
- } else {
+ if (mFeatureFlags.fixAudioFlickerForOutgoingCalls()) {
+ // Allow the ConnectionService to start the call in the active state. This case is
+ // helpful for conference calls or meetings that can skip the dialing stage.
+ if (callState == CallState.ACTIVE) {
+ setCallState(call, callState, "skipping the dialing state and setting active");
+ } else {
+ markCallAsDialing(call);
+ }
+ }
+ else{
markCallAsDialing(call);
}
}
diff --git a/tests/src/com/android/server/telecom/tests/CallsManagerTest.java b/tests/src/com/android/server/telecom/tests/CallsManagerTest.java
index fe94da4..c02a0a8 100644
--- a/tests/src/com/android/server/telecom/tests/CallsManagerTest.java
+++ b/tests/src/com/android/server/telecom/tests/CallsManagerTest.java
@@ -2559,6 +2559,7 @@
@SmallTest
@Test
public void testOutgoingCallStateIsSetToAPreviousStateAndIgnored() {
+ when(mFeatureFlags.fixAudioFlickerForOutgoingCalls()).thenReturn(true);
Call outgoingCall = addSpyCall(CallState.CONNECTING);
mCallsManager.onSuccessfulOutgoingCall(outgoingCall, CallState.NEW);
verify(outgoingCall, never()).setState(eq(CallState.NEW), any());
@@ -2571,6 +2572,7 @@
@SmallTest
@Test
public void testOutgoingCallStateCanAvoidDialingAndGoStraightToActive() {
+ when(mFeatureFlags.fixAudioFlickerForOutgoingCalls()).thenReturn(true);
Call outgoingCall = addSpyCall(CallState.CONNECTING);
mCallsManager.onSuccessfulOutgoingCall(outgoingCall, CallState.ACTIVE);
verify(outgoingCall, never()).setState(eq(CallState.DIALING), any());