diff options
author | Grace Jia <xiaotonj@google.com> | 2023-11-22 23:42:09 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2023-11-22 23:42:09 +0000 |
commit | 5e141f9d4516c1eddb7827e6a9b93107d659a9f7 (patch) | |
tree | 7e169e34e10f27519abec289a3bc221339a1ad91 | |
parent | 26b9fdc565fc80cadb2bd1e2e927f81d656a7ce5 (diff) | |
parent | b4ebf4eadfee05ff41347e4dcbeb51ee9283b0e1 (diff) | |
download | Telecomm-5e141f9d4516c1eddb7827e6a9b93107d659a9f7.tar.gz |
Merge "Reset mute state when entering QuiescentBluetoothState." into main
3 files changed, 57 insertions, 1 deletions
diff --git a/flags/telecom_callaudioroutestatemachine_flags.aconfig b/flags/telecom_callaudioroutestatemachine_flags.aconfig index 28071fc0d..6f2c7fc7d 100644 --- a/flags/telecom_callaudioroutestatemachine_flags.aconfig +++ b/flags/telecom_callaudioroutestatemachine_flags.aconfig @@ -50,6 +50,13 @@ flag { } flag { + name: "reset_mute_when_entering_quiescent_bt_route" + namespace: "telecom" + description: "Reset mute state when entering quiescent bluetooth route." + bug: "311313250" +} + +flag { name: "update_route_mask_when_bt_connected" namespace: "telecom" description: "Update supported route mask when Bluetooth devices audio connected." diff --git a/src/com/android/server/telecom/CallAudioRouteStateMachine.java b/src/com/android/server/telecom/CallAudioRouteStateMachine.java index c803de5a9..bfb76d8b5 100644 --- a/src/com/android/server/telecom/CallAudioRouteStateMachine.java +++ b/src/com/android/server/telecom/CallAudioRouteStateMachine.java @@ -17,7 +17,6 @@ package com.android.server.telecom; -import android.annotation.FlaggedApi; import android.app.ActivityManager; import android.bluetooth.BluetoothDevice; import android.content.BroadcastReceiver; @@ -1074,6 +1073,9 @@ public class CallAudioRouteStateMachine extends StateMachine implements CallAudi public void enter() { super.enter(); mHasUserExplicitlyLeftBluetooth = false; + if (mFeatureFlags.resetMuteWhenEnteringQuiescentBtRoute()) { + setMuteOn(false); + } updateInternalCallAudioState(); } diff --git a/tests/src/com/android/server/telecom/tests/CallAudioRouteStateMachineTest.java b/tests/src/com/android/server/telecom/tests/CallAudioRouteStateMachineTest.java index d95d875ee..45aeffa69 100644 --- a/tests/src/com/android/server/telecom/tests/CallAudioRouteStateMachineTest.java +++ b/tests/src/com/android/server/telecom/tests/CallAudioRouteStateMachineTest.java @@ -1240,6 +1240,53 @@ public class CallAudioRouteStateMachineTest extends TelecomTestCase { @SmallTest @Test + public void testQuiescentBluetoothRouteResetMute() { + when(mFeatureFlags.resetMuteWhenEnteringQuiescentBtRoute()).thenReturn(true); + CallAudioRouteStateMachine stateMachine = new CallAudioRouteStateMachine( + mContext, + mockCallsManager, + mockBluetoothRouteManager, + mockWiredHeadsetManager, + mockStatusBarNotifier, + mAudioServiceFactory, + CallAudioRouteStateMachine.EARPIECE_FORCE_ENABLED, + mThreadHandler.getLooper(), + Runnable::run /** do async stuff sync for test purposes */, + mCommunicationDeviceTracker, + mFeatureFlags); + stateMachine.setCallAudioManager(mockCallAudioManager); + + CallAudioState initState = new CallAudioState(false, + CallAudioState.ROUTE_BLUETOOTH, CallAudioState.ROUTE_SPEAKER + | CallAudioState.ROUTE_EARPIECE | CallAudioState.ROUTE_BLUETOOTH); + stateMachine.initialize(initState); + + // Switch to active and mute + stateMachine.sendMessageWithSessionInfo(CallAudioRouteStateMachine.SWITCH_FOCUS, + CallAudioRouteStateMachine.ACTIVE_FOCUS); + stateMachine.sendMessageWithSessionInfo(CallAudioRouteStateMachine.BT_AUDIO_CONNECTED); + waitForHandlerAction(stateMachine.getAdapterHandler(), TEST_TIMEOUT); + assertTrue(stateMachine.isInActiveState()); + + stateMachine.sendMessageWithSessionInfo(CallAudioRouteStateMachine.MUTE_ON); + waitForHandlerAction(stateMachine.getAdapterHandler(), TEST_TIMEOUT); + CallAudioState expectedState = new CallAudioState(true, + CallAudioState.ROUTE_BLUETOOTH, CallAudioState.ROUTE_SPEAKER + | CallAudioState.ROUTE_EARPIECE | CallAudioState.ROUTE_BLUETOOTH); + assertEquals(expectedState, stateMachine.getCurrentCallAudioState()); + + stateMachine.sendMessageWithSessionInfo(CallAudioRouteStateMachine.SWITCH_FOCUS, + CallAudioRouteStateMachine.NO_FOCUS); + waitForHandlerAction(stateMachine.getAdapterHandler(), TEST_TIMEOUT); + + expectedState = new CallAudioState(false, + CallAudioState.ROUTE_BLUETOOTH, CallAudioState.ROUTE_SPEAKER + | CallAudioState.ROUTE_EARPIECE | CallAudioState.ROUTE_BLUETOOTH); + assertEquals(expectedState, stateMachine.getCurrentCallAudioState()); + } + + @SmallTest + @Test public void testSupportRouteMaskUpdateWhenBtAudioConnected() { when(mFeatureFlags.updateRouteMaskWhenBtConnected()).thenReturn(true); CallAudioRouteStateMachine stateMachine = new CallAudioRouteStateMachine( |