Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 21be2b2a authored by Anton Potapov's avatar Anton Potapov Committed by Android (Google) Code Review
Browse files

Merge "Use setRingerModeInternal in the AudioRepository instead of...

Merge "Use setRingerModeInternal in the AudioRepository instead of setRingerMode to align the behaviour with the volume sliders in the Settings app." into main
parents 479dcbba ad7c2b9d
Loading
Loading
Loading
Loading
+3 −3
Original line number Original line Diff line number Diff line
@@ -98,7 +98,7 @@ interface AudioRepository {
     */
     */
    suspend fun setMuted(audioStream: AudioStream, isMuted: Boolean): Boolean
    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. */
    /** Gets audio device category. */
    @AudioDeviceCategory suspend fun getBluetoothAudioDeviceCategory(bluetoothAddress: String): Int
    @AudioDeviceCategory suspend fun getBluetoothAudioDeviceCategory(bluetoothAddress: String): Int
@@ -248,8 +248,8 @@ class AudioRepositoryImpl(
        }
        }
    }
    }


    override suspend fun setRingerMode(audioStream: AudioStream, mode: RingerMode) {
    override suspend fun setRingerModeInternal(audioStream: AudioStream, mode: RingerMode) {
        withContext(backgroundCoroutineContext) { audioManager.ringerMode = mode.value }
        withContext(backgroundCoroutineContext) { audioManager.ringerModeInternal = mode.value }
    }
    }


    @AudioDeviceCategory
    @AudioDeviceCategory
+1 −1
Original line number Original line Diff line number Diff line
@@ -68,7 +68,7 @@ class AudioVolumeInteractor(
        if (audioStream.value == AudioManager.STREAM_RING) {
        if (audioStream.value == AudioManager.STREAM_RING) {
            val mode =
            val mode =
                if (isMuted) AudioManager.RINGER_MODE_VIBRATE else AudioManager.RINGER_MODE_NORMAL
                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)
        val mutedChanged = audioRepository.setMuted(audioStream, isMuted)
        if (mutedChanged && !isMuted) {
        if (mutedChanged && !isMuted) {
+21 −2
Original line number Original line Diff line number Diff line
@@ -74,6 +74,8 @@ class AudioRepositoryTest {


    private lateinit var underTest: AudioRepository
    private lateinit var underTest: AudioRepository


    private var ringerModeInternal: RingerMode = RingerMode(AudioManager.RINGER_MODE_NORMAL)

    @Before
    @Before
    fun setup() {
    fun setup() {
        MockitoAnnotations.initMocks(this)
        MockitoAnnotations.initMocks(this)
@@ -82,7 +84,7 @@ class AudioRepositoryTest {
        `when`(audioManager.communicationDevice).thenReturn(communicationDevice)
        `when`(audioManager.communicationDevice).thenReturn(communicationDevice)
        `when`(audioManager.getStreamMinVolume(anyInt())).thenReturn(MIN_VOLUME)
        `when`(audioManager.getStreamMinVolume(anyInt())).thenReturn(MIN_VOLUME)
        `when`(audioManager.getStreamMaxVolume(anyInt())).thenReturn(MAX_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 {
        `when`(audioManager.setStreamVolume(anyInt(), anyInt(), anyInt())).then {
            val streamType = it.arguments[0] as Int
            val streamType = it.arguments[0] as Int
            volumeByStream[it.arguments[0] as Int] = it.arguments[1] as Int
            volumeByStream[it.arguments[0] as Int] = it.arguments[1] as Int
@@ -103,6 +105,10 @@ class AudioRepositoryTest {
        `when`(audioManager.isStreamMute(anyInt())).thenAnswer {
        `when`(audioManager.isStreamMute(anyInt())).thenAnswer {
            isMuteByStream.getOrDefault(it.arguments[0] as Int, false)
            isMuteByStream.getOrDefault(it.arguments[0] as Int, false)
        }
        }
        `when`(audioManager.setRingerModeInternal(anyInt())).then {
            ringerModeInternal = RingerMode(it.arguments[0] as Int)
            Unit
        }


        underTest =
        underTest =
            AudioRepositoryImpl(
            AudioRepositoryImpl(
@@ -137,7 +143,7 @@ class AudioRepositoryTest {
            underTest.ringerMode.onEach { modes.add(it) }.launchIn(backgroundScope)
            underTest.ringerMode.onEach { modes.add(it) }.launchIn(backgroundScope)
            runCurrent()
            runCurrent()


            `when`(audioManager.ringerModeInternal).thenReturn(AudioManager.RINGER_MODE_SILENT)
            ringerModeInternal = RingerMode(AudioManager.RINGER_MODE_SILENT)
            triggerEvent(AudioManagerEvent.InternalRingerModeChanged)
            triggerEvent(AudioManagerEvent.InternalRingerModeChanged)
            runCurrent()
            runCurrent()


@@ -149,6 +155,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
    @Test
    fun communicationDeviceChanges_repositoryEmits() {
    fun communicationDeviceChanges_repositoryEmits() {
        testScope.runTest {
        testScope.runTest {
+2 −6
Original line number Original line Diff line number Diff line
@@ -33,11 +33,7 @@ import kotlinx.coroutines.flow.update


class FakeAudioRepository : AudioRepository {
class FakeAudioRepository : AudioRepository {


    private val unMutableStreams =
    private val unMutableStreams = setOf(AudioManager.STREAM_VOICE_CALL, AudioManager.STREAM_ALARM)
        setOf(
            AudioManager.STREAM_VOICE_CALL,
            AudioManager.STREAM_ALARM,
        )


    private val mutableMode = MutableStateFlow(AudioManager.MODE_NORMAL)
    private val mutableMode = MutableStateFlow(AudioManager.MODE_NORMAL)
    override val mode: StateFlow<Int> = mutableMode.asStateFlow()
    override val mode: StateFlow<Int> = mutableMode.asStateFlow()
@@ -126,7 +122,7 @@ class FakeAudioRepository : AudioRepository {
        lastAudibleVolumes[audioStream] = volume
        lastAudibleVolumes[audioStream] = volume
    }
    }


    override suspend fun setRingerMode(audioStream: AudioStream, mode: RingerMode) {
    override suspend fun setRingerModeInternal(audioStream: AudioStream, mode: RingerMode) {
        mutableRingerMode.value = mode
        mutableRingerMode.value = mode
    }
    }