summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Yiyi Shen <yiyishen@google.com> 2024-08-15 14:12:06 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-08-15 14:12:06 +0000
commit3ea573cc44b5622d62851ff8a85f5575ae1a5e09 (patch)
tree89a9ad3237c244c16d3c3f8df08642911e0cbe71
parent2569ad18f2625b056454100ac06ef9c9053fd92b (diff)
parentc493606629bba1141e14b9b4ddaa87b1cc1f3fae (diff)
Merge "[Audiosharing] Move inAudioSharing from AudioOutputInteractor to AudioSharingInteractor" into main
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/AudioOutputInteractorTest.kt29
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/AudioSharingInteractorTest.kt18
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/domain/interactor/AudioOutputInteractor.kt6
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/domain/interactor/AudioSharingInteractor.kt7
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaOutputComponentInteractor.kt8
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/volume/domain/interactor/AudioOutputInteractorKosmos.kt2
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaOutputComponentInteractorKosmos.kt2
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,
)
}