Loading packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/sliders/domain/interactor/VolumeDialogSlidersInteractorTest.kt +24 −0 Original line number Diff line number Diff line Loading @@ -155,6 +155,30 @@ class VolumeDialogSlidersInteractorTest : SysuiTestCase() { } } @Test fun activeStreamChanges_showBoth() { with(kosmos) { testScope.runTest { runCurrent() fakeVolumeDialogController.updateState { activeStream = AudioManager.STREAM_SYSTEM states.put(AudioManager.STREAM_MUSIC, buildStreamState()) states.put(AudioManager.STREAM_SYSTEM, buildStreamState()) } val slidersModel by collectLastValue(underTest.sliders) runCurrent() fakeVolumeDialogController.updateState { activeStream = AudioManager.STREAM_MUSIC } runCurrent() assertThat(slidersModel!!.slider) .isEqualTo(VolumeDialogSliderType.Stream(AudioManager.STREAM_MUSIC)) assertThat(slidersModel!!.floatingSliders) .containsExactly(VolumeDialogSliderType.Stream(AudioManager.STREAM_SYSTEM)) } } } private fun buildStreamState( build: VolumeDialogController.StreamState.() -> Unit = {} ): VolumeDialogController.StreamState { Loading packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/domain/interactor/VolumeDialogSlidersInteractor.kt +11 −6 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.runningReduce import kotlinx.coroutines.flow.stateIn private const val DEFAULT_STREAM = AudioManager.STREAM_MUSIC Loading @@ -54,13 +55,17 @@ constructor( volumeDialogStateInteractor.volumeDialogState .filter { it.streamModels.isNotEmpty() } .map { stateModel -> val sliderTypes = stateModel.streamModels.values .filter { streamModel -> shouldShowSliders(stateModel, streamModel) } .sortedWith(streamsSorter) .map { model -> model.toType() } LinkedHashSet(sliderTypes) } .map { models -> val sliderTypes: List<VolumeDialogSliderType> = models.map { model -> model.toType() } .runningReduce { sliderTypes, newSliderTypes -> newSliderTypes.apply { addAll(sliderTypes) } } .map { sliderTypes -> VolumeDialogSlidersModel( slider = sliderTypes.first(), floatingSliders = sliderTypes.drop(1), Loading Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/sliders/domain/interactor/VolumeDialogSlidersInteractorTest.kt +24 −0 Original line number Diff line number Diff line Loading @@ -155,6 +155,30 @@ class VolumeDialogSlidersInteractorTest : SysuiTestCase() { } } @Test fun activeStreamChanges_showBoth() { with(kosmos) { testScope.runTest { runCurrent() fakeVolumeDialogController.updateState { activeStream = AudioManager.STREAM_SYSTEM states.put(AudioManager.STREAM_MUSIC, buildStreamState()) states.put(AudioManager.STREAM_SYSTEM, buildStreamState()) } val slidersModel by collectLastValue(underTest.sliders) runCurrent() fakeVolumeDialogController.updateState { activeStream = AudioManager.STREAM_MUSIC } runCurrent() assertThat(slidersModel!!.slider) .isEqualTo(VolumeDialogSliderType.Stream(AudioManager.STREAM_MUSIC)) assertThat(slidersModel!!.floatingSliders) .containsExactly(VolumeDialogSliderType.Stream(AudioManager.STREAM_SYSTEM)) } } } private fun buildStreamState( build: VolumeDialogController.StreamState.() -> Unit = {} ): VolumeDialogController.StreamState { Loading
packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/domain/interactor/VolumeDialogSlidersInteractor.kt +11 −6 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.runningReduce import kotlinx.coroutines.flow.stateIn private const val DEFAULT_STREAM = AudioManager.STREAM_MUSIC Loading @@ -54,13 +55,17 @@ constructor( volumeDialogStateInteractor.volumeDialogState .filter { it.streamModels.isNotEmpty() } .map { stateModel -> val sliderTypes = stateModel.streamModels.values .filter { streamModel -> shouldShowSliders(stateModel, streamModel) } .sortedWith(streamsSorter) .map { model -> model.toType() } LinkedHashSet(sliderTypes) } .map { models -> val sliderTypes: List<VolumeDialogSliderType> = models.map { model -> model.toType() } .runningReduce { sliderTypes, newSliderTypes -> newSliderTypes.apply { addAll(sliderTypes) } } .map { sliderTypes -> VolumeDialogSlidersModel( slider = sliderTypes.first(), floatingSliders = sliderTypes.drop(1), Loading