Merge "Ensure call log pending intent on missed call notification is immutable." into rvc-dev
diff --git a/src/com/android/server/telecom/CallAudioModeStateMachine.java b/src/com/android/server/telecom/CallAudioModeStateMachine.java
index 9e1b5c7..2c435d7 100644
--- a/src/com/android/server/telecom/CallAudioModeStateMachine.java
+++ b/src/com/android/server/telecom/CallAudioModeStateMachine.java
@@ -357,7 +357,11 @@
if (mCallAudioManager.startRinging()) {
mAudioManager.requestAudioFocusForCall(AudioManager.STREAM_RING,
AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
- mAudioManager.setMode(AudioManager.MODE_RINGTONE);
+ // Do not set MODE_RINGTONE if we were previously in the CALL_SCREENING mode -- this
+ // trips up the audio system.
+ if (mAudioManager.getMode() != AudioManager.MODE_CALL_SCREENING) {
+ mAudioManager.setMode(AudioManager.MODE_RINGTONE);
+ }
mCallAudioManager.setCallAudioRouteFocusState(
CallAudioRouteStateMachine.RINGING_FOCUS);
} else {
diff --git a/src/com/android/server/telecom/TelecomServiceImpl.java b/src/com/android/server/telecom/TelecomServiceImpl.java
index 2f336b3..0cdb8bc 100644
--- a/src/com/android/server/telecom/TelecomServiceImpl.java
+++ b/src/com/android/server/telecom/TelecomServiceImpl.java
@@ -855,7 +855,7 @@
// current state as tracked by PhoneStateBroadcaster, any failure to properly
// track the current call state there could result in the wrong ringing state
// being reported by this API.
- return mCallsManager.hasRingingCall();
+ return mCallsManager.hasRingingOrSimulatedRingingCall();
}
} finally {
Log.endSession();
diff --git a/tests/src/com/android/server/telecom/tests/CallAudioModeTransitionTests.java b/tests/src/com/android/server/telecom/tests/CallAudioModeTransitionTests.java
index 5ab204e..c7e5aa9 100644
--- a/tests/src/com/android/server/telecom/tests/CallAudioModeTransitionTests.java
+++ b/tests/src/com/android/server/telecom/tests/CallAudioModeTransitionTests.java
@@ -137,6 +137,11 @@
resetMocks();
when(mCallAudioManager.startRinging()).thenReturn(true);
+ if (mParams.initialAudioState
+ == CallAudioModeStateMachine.ENTER_AUDIO_PROCESSING_FOCUS_FOR_TESTING) {
+ when(mAudioManager.getMode())
+ .thenReturn(CallAudioModeStateMachine.NEW_AUDIO_MODE_FOR_AUDIO_PROCESSING);
+ }
sm.sendMessage(mParams.messageType, mParams.externalState);
waitForHandlerAction(sm.getHandler(), TEST_TIMEOUT);
@@ -815,7 +820,7 @@
.build(),
CallAudioModeStateMachine.RING_STATE_NAME, // expectedFinalStateName
FOCUS_RING, // expectedFocus
- AudioManager.MODE_RINGTONE, // expectedMode
+ NO_CHANGE, // expectedMode
ON, // expectedRingingInteraction
// We expect a call to stopCallWaiting because it happens whenever the ringer starts
OFF // expectedCallWaitingInteraction
@@ -836,7 +841,7 @@
.build(),
CallAudioModeStateMachine.RING_STATE_NAME, // expectedFinalStateName
FOCUS_RING, // expectedFocus
- AudioManager.MODE_RINGTONE, // expectedMode
+ NO_CHANGE, // expectedMode
ON, // expectedRingingInteraction
// We expect a call to stopCallWaiting because it happens whenever the ringer starts
OFF // expectedCallWaitingInteraction