diff options
| author | 2024-08-15 14:12:06 +0000 | |
|---|---|---|
| committer | 2024-08-15 14:12:06 +0000 | |
| commit | 3ea573cc44b5622d62851ff8a85f5575ae1a5e09 (patch) | |
| tree | 89a9ad3237c244c16d3c3f8df08642911e0cbe71 | |
| parent | 2569ad18f2625b056454100ac06ef9c9053fd92b (diff) | |
| parent | c493606629bba1141e14b9b4ddaa87b1cc1f3fae (diff) | |
Merge "[Audiosharing] Move inAudioSharing from AudioOutputInteractor to AudioSharingInteractor" into main
7 files changed, 31 insertions, 41 deletions
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/AudioOutputInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/AudioOutputInteractorTest.kt index 7385a4731401..7c55f7a91a76 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/AudioOutputInteractorTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/AudioOutputInteractorTest.kt @@ -32,7 +32,6 @@ import com.android.systemui.kosmos.testScope import com.android.systemui.testKosmos import com.android.systemui.volume.data.repository.TestAudioDevicesFactory import com.android.systemui.volume.data.repository.audioRepository -import com.android.systemui.volume.data.repository.audioSharingRepository import com.android.systemui.volume.domain.model.AudioOutputDevice import com.android.systemui.volume.localMediaController import com.android.systemui.volume.localMediaRepository @@ -222,32 +221,4 @@ class AudioOutputInteractorTest : SysuiTestCase() { val testIcon = TestStubDrawable() } - - @Test - fun inAudioSharing_returnTrue() { - with(kosmos) { - testScope.runTest { - audioSharingRepository.setInAudioSharing(true) - - val inAudioSharing by collectLastValue(underTest.isInAudioSharing) - runCurrent() - - assertThat(inAudioSharing).isTrue() - } - } - } - - @Test - fun notInAudioSharing_returnFalse() { - with(kosmos) { - testScope.runTest { - audioSharingRepository.setInAudioSharing(false) - - val inAudioSharing by collectLastValue(underTest.isInAudioSharing) - runCurrent() - - assertThat(inAudioSharing).isFalse() - } - } - } } diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/AudioSharingInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/AudioSharingInteractorTest.kt index a1fcfcd0f749..c9d147b6c81c 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/AudioSharingInteractorTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/AudioSharingInteractorTest.kt @@ -49,6 +49,24 @@ class AudioSharingInteractorTest : SysuiTestCase() { } @Test + fun handleInAudioSharingChange() { + with(kosmos) { + testScope.runTest { + with(audioSharingRepository) { setInAudioSharing(true) } + val inAudioSharing by collectLastValue(underTest.isInAudioSharing) + runCurrent() + + Truth.assertThat(inAudioSharing).isEqualTo(true) + + with(audioSharingRepository) { setInAudioSharing(false) } + runCurrent() + + Truth.assertThat(inAudioSharing).isEqualTo(false) + } + } + } + + @Test fun handlePrimaryGroupChange_nullVolume() { with(kosmos) { testScope.runTest { diff --git a/packages/SystemUI/src/com/android/systemui/volume/domain/interactor/AudioOutputInteractor.kt b/packages/SystemUI/src/com/android/systemui/volume/domain/interactor/AudioOutputInteractor.kt index 154737c71b9e..4f77cd04f5fa 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/domain/interactor/AudioOutputInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/volume/domain/interactor/AudioOutputInteractor.kt @@ -26,7 +26,6 @@ import com.android.settingslib.media.MediaDevice import com.android.settingslib.media.MediaDevice.MediaDeviceType import com.android.settingslib.media.PhoneMediaDevice import com.android.settingslib.volume.data.repository.AudioRepository -import com.android.settingslib.volume.data.repository.AudioSharingRepository import com.android.settingslib.volume.domain.interactor.AudioModeInteractor import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.dagger.qualifiers.Background @@ -37,7 +36,6 @@ import javax.inject.Inject import kotlin.coroutines.CoroutineContext import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.ExperimentalCoroutinesApi -import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.flatMapLatest @@ -60,7 +58,6 @@ constructor( private val bluetoothAdapter: BluetoothAdapter?, private val deviceIconInteractor: DeviceIconInteractor, private val mediaOutputInteractor: MediaOutputInteractor, - audioSharingRepository: AudioSharingRepository, ) { val currentAudioDevice: StateFlow<AudioOutputDevice> = @@ -80,9 +77,6 @@ constructor( .flowOn(backgroundCoroutineContext) .stateIn(scope, SharingStarted.Eagerly, AudioOutputDevice.Unknown) - /** Whether the device is in audio sharing */ - val isInAudioSharing: Flow<Boolean> = audioSharingRepository.inAudioSharing - private fun AudioDeviceInfo.toAudioOutputDevice(): AudioOutputDevice { if ( BluetoothAdapter.checkBluetoothAddress(address) && diff --git a/packages/SystemUI/src/com/android/systemui/volume/domain/interactor/AudioSharingInteractor.kt b/packages/SystemUI/src/com/android/systemui/volume/domain/interactor/AudioSharingInteractor.kt index 2170c36ec019..9aed8ab8f2e2 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/domain/interactor/AudioSharingInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/volume/domain/interactor/AudioSharingInteractor.kt @@ -36,11 +36,15 @@ import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.emptyFlow import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.flow.first +import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.flow.map import kotlinx.coroutines.launch import kotlinx.coroutines.withContext interface AudioSharingInteractor { + /** Audio sharing state on the device. */ + val isInAudioSharing: Flow<Boolean> + /** Audio sharing secondary headset volume changes. */ val volume: Flow<Int?> @@ -76,6 +80,7 @@ constructor( private val audioVolumeInteractor: AudioVolumeInteractor, private val audioSharingRepository: AudioSharingRepository ) : AudioSharingInteractor { + override val isInAudioSharing: Flow<Boolean> = audioSharingRepository.inAudioSharing override val volume: Flow<Int?> = combine(audioSharingRepository.secondaryGroupId, audioSharingRepository.volumeMap) { @@ -125,13 +130,13 @@ constructor( } private companion object { - const val TAG = "AudioSharingInteractor" const val DEFAULT_VOLUME = 20 } } @SysUISingleton class AudioSharingInteractorEmptyImpl @Inject constructor() : AudioSharingInteractor { + override val isInAudioSharing: Flow<Boolean> = flowOf(false) override val volume: Flow<Int?> = emptyFlow() override val volumeMin: Int = EMPTY_VOLUME override val volumeMax: Int = EMPTY_VOLUME diff --git a/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaOutputComponentInteractor.kt b/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaOutputComponentInteractor.kt index ed25129ff082..a270d5ffa9de 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaOutputComponentInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaOutputComponentInteractor.kt @@ -18,6 +18,7 @@ package com.android.systemui.volume.panel.component.mediaoutput.domain.interacto import com.android.settingslib.volume.domain.interactor.AudioModeInteractor import com.android.systemui.volume.domain.interactor.AudioOutputInteractor +import com.android.systemui.volume.domain.interactor.AudioSharingInteractor import com.android.systemui.volume.domain.model.AudioOutputDevice import com.android.systemui.volume.panel.component.mediaoutput.domain.model.MediaOutputComponentModel import com.android.systemui.volume.panel.component.mediaoutput.shared.model.SessionWithPlaybackState @@ -49,11 +50,12 @@ constructor( private val mediaDeviceSessionInteractor: MediaDeviceSessionInteractor, audioOutputInteractor: AudioOutputInteractor, audioModeInteractor: AudioModeInteractor, - interactor: MediaOutputInteractor, + mediaOutputInteractor: MediaOutputInteractor, + audioSharingInteractor: AudioSharingInteractor, ) { private val sessionWithPlaybackState: StateFlow<Result<SessionWithPlaybackState?>> = - interactor.defaultActiveMediaSession + mediaOutputInteractor.defaultActiveMediaSession .filterData() .flatMapLatest { session -> if (session == null) { @@ -77,7 +79,7 @@ constructor( val mediaOutputModel: StateFlow<Result<MediaOutputComponentModel>> = audioModeInteractor.isOngoingCall .flatMapLatest { isOngoingCall -> - audioOutputInteractor.isInAudioSharing.flatMapLatest { isInAudioSharing -> + audioSharingInteractor.isInAudioSharing.flatMapLatest { isInAudioSharing -> if (isOngoingCall) { currentAudioDevice.map { MediaOutputComponentModel.Calling(it, isInAudioSharing) diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/domain/interactor/AudioOutputInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/domain/interactor/AudioOutputInteractorKosmos.kt index e2d414e23abd..3ac565aeacf9 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/domain/interactor/AudioOutputInteractorKosmos.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/domain/interactor/AudioOutputInteractorKosmos.kt @@ -22,7 +22,6 @@ import com.android.systemui.bluetooth.localBluetoothManager import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.testScope import com.android.systemui.volume.data.repository.audioRepository -import com.android.systemui.volume.data.repository.audioSharingRepository import com.android.systemui.volume.mediaOutputInteractor val Kosmos.audioOutputInteractor by @@ -37,6 +36,5 @@ val Kosmos.audioOutputInteractor by bluetoothAdapter, deviceIconInteractor, mediaOutputInteractor, - audioSharingRepository, ) } diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaOutputComponentInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaOutputComponentInteractorKosmos.kt index 9f11822adc0c..63a132565177 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaOutputComponentInteractorKosmos.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaOutputComponentInteractorKosmos.kt @@ -20,6 +20,7 @@ import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.testScope import com.android.systemui.volume.domain.interactor.audioModeInteractor import com.android.systemui.volume.domain.interactor.audioOutputInteractor +import com.android.systemui.volume.domain.interactor.audioSharingInteractor import com.android.systemui.volume.mediaDeviceSessionInteractor import com.android.systemui.volume.mediaOutputInteractor @@ -31,5 +32,6 @@ val Kosmos.mediaOutputComponentInteractor by audioOutputInteractor, audioModeInteractor, mediaOutputInteractor, + audioSharingInteractor, ) } |