diff options
4 files changed, 27 insertions, 12 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/volume/data/repository/AudioRepository.kt b/packages/SettingsLib/src/com/android/settingslib/volume/data/repository/AudioRepository.kt index 3e2d8328f21e..d3c345deebad 100644 --- a/packages/SettingsLib/src/com/android/settingslib/volume/data/repository/AudioRepository.kt +++ b/packages/SettingsLib/src/com/android/settingslib/volume/data/repository/AudioRepository.kt @@ -98,7 +98,7 @@ interface AudioRepository { */ suspend fun setMuted(audioStream: AudioStream, isMuted: Boolean): Boolean - suspend fun setRingerMode(audioStream: AudioStream, mode: RingerMode) + suspend fun setRingerModeInternal(audioStream: AudioStream, mode: RingerMode) /** Gets audio device category. */ @AudioDeviceCategory suspend fun getBluetoothAudioDeviceCategory(bluetoothAddress: String): Int @@ -248,8 +248,8 @@ class AudioRepositoryImpl( } } - override suspend fun setRingerMode(audioStream: AudioStream, mode: RingerMode) { - withContext(backgroundCoroutineContext) { audioManager.ringerMode = mode.value } + override suspend fun setRingerModeInternal(audioStream: AudioStream, mode: RingerMode) { + withContext(backgroundCoroutineContext) { audioManager.ringerModeInternal = mode.value } } @AudioDeviceCategory diff --git a/packages/SettingsLib/src/com/android/settingslib/volume/domain/interactor/AudioVolumeInteractor.kt b/packages/SettingsLib/src/com/android/settingslib/volume/domain/interactor/AudioVolumeInteractor.kt index 08863b56cbe0..dca890d34bc0 100644 --- a/packages/SettingsLib/src/com/android/settingslib/volume/domain/interactor/AudioVolumeInteractor.kt +++ b/packages/SettingsLib/src/com/android/settingslib/volume/domain/interactor/AudioVolumeInteractor.kt @@ -68,7 +68,7 @@ class AudioVolumeInteractor( if (audioStream.value == AudioManager.STREAM_RING) { val mode = if (isMuted) AudioManager.RINGER_MODE_VIBRATE else AudioManager.RINGER_MODE_NORMAL - audioRepository.setRingerMode(audioStream, RingerMode(mode)) + audioRepository.setRingerModeInternal(audioStream, RingerMode(mode)) } val mutedChanged = audioRepository.setMuted(audioStream, isMuted) if (mutedChanged && !isMuted) { diff --git a/packages/SettingsLib/tests/integ/src/com/android/settingslib/volume/data/repository/AudioRepositoryTest.kt b/packages/SettingsLib/tests/integ/src/com/android/settingslib/volume/data/repository/AudioRepositoryTest.kt index 52e639172af5..8a3b1dfb0846 100644 --- a/packages/SettingsLib/tests/integ/src/com/android/settingslib/volume/data/repository/AudioRepositoryTest.kt +++ b/packages/SettingsLib/tests/integ/src/com/android/settingslib/volume/data/repository/AudioRepositoryTest.kt @@ -74,6 +74,8 @@ class AudioRepositoryTest { private lateinit var underTest: AudioRepository + private var ringerModeInternal: RingerMode = RingerMode(AudioManager.RINGER_MODE_NORMAL) + @Before fun setup() { MockitoAnnotations.initMocks(this) @@ -82,7 +84,7 @@ class AudioRepositoryTest { `when`(audioManager.communicationDevice).thenReturn(communicationDevice) `when`(audioManager.getStreamMinVolume(anyInt())).thenReturn(MIN_VOLUME) `when`(audioManager.getStreamMaxVolume(anyInt())).thenReturn(MAX_VOLUME) - `when`(audioManager.ringerModeInternal).thenReturn(AudioManager.RINGER_MODE_NORMAL) + `when`(audioManager.ringerModeInternal).then { ringerModeInternal.value } `when`(audioManager.setStreamVolume(anyInt(), anyInt(), anyInt())).then { val streamType = it.arguments[0] as Int volumeByStream[it.arguments[0] as Int] = it.arguments[1] as Int @@ -103,6 +105,10 @@ class AudioRepositoryTest { `when`(audioManager.isStreamMute(anyInt())).thenAnswer { isMuteByStream.getOrDefault(it.arguments[0] as Int, false) } + `when`(audioManager.setRingerModeInternal(anyInt())).then { + ringerModeInternal = RingerMode(it.arguments[0] as Int) + Unit + } underTest = AudioRepositoryImpl( @@ -137,7 +143,7 @@ class AudioRepositoryTest { underTest.ringerMode.onEach { modes.add(it) }.launchIn(backgroundScope) runCurrent() - `when`(audioManager.ringerModeInternal).thenReturn(AudioManager.RINGER_MODE_SILENT) + ringerModeInternal = RingerMode(AudioManager.RINGER_MODE_SILENT) triggerEvent(AudioManagerEvent.InternalRingerModeChanged) runCurrent() @@ -150,6 +156,19 @@ class AudioRepositoryTest { } @Test + fun changingRingerMode_changesRingerModeInternal() { + testScope.runTest { + underTest.setRingerModeInternal( + AudioStream(AudioManager.STREAM_SYSTEM), + RingerMode(AudioManager.RINGER_MODE_SILENT), + ) + runCurrent() + + assertThat(ringerModeInternal).isEqualTo(RingerMode(AudioManager.RINGER_MODE_SILENT)) + } + } + + @Test fun communicationDeviceChanges_repositoryEmits() { testScope.runTest { var device: AudioDeviceInfo? = null diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/data/repository/FakeAudioRepository.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/data/repository/FakeAudioRepository.kt index 888351f0a882..ba6ffd742611 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/data/repository/FakeAudioRepository.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/data/repository/FakeAudioRepository.kt @@ -33,11 +33,7 @@ import kotlinx.coroutines.flow.update class FakeAudioRepository : AudioRepository { - private val unMutableStreams = - setOf( - AudioManager.STREAM_VOICE_CALL, - AudioManager.STREAM_ALARM, - ) + private val unMutableStreams = setOf(AudioManager.STREAM_VOICE_CALL, AudioManager.STREAM_ALARM) private val mutableMode = MutableStateFlow(AudioManager.MODE_NORMAL) override val mode: StateFlow<Int> = mutableMode.asStateFlow() @@ -126,7 +122,7 @@ class FakeAudioRepository : AudioRepository { lastAudibleVolumes[audioStream] = volume } - override suspend fun setRingerMode(audioStream: AudioStream, mode: RingerMode) { + override suspend fun setRingerModeInternal(audioStream: AudioStream, mode: RingerMode) { mutableRingerMode.value = mode } |