summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Anton Potapov <apotapov@google.com> 2024-11-07 18:08:11 +0000
committer Anton Potapov <apotapov@google.com> 2024-11-14 17:16:59 +0000
commit1639f57b55426746d88fdaac25c71caacd787e36 (patch)
treea36d51d6ac915607c6ca119b6bfe2f36210d099e
parent108818e1e95e16a8e2574157e27969ba07a39906 (diff)
Don't hide a slider if it's already being shown in the VolumeDialog
As the VolumeDialogImpl we want to continue showing a slider if it has already being shown in the dialog. Flag: com.android.systemui.volume_redesign Bug: 369992924 Test: atest VolumeDialogSlidersInteractorTest Change-Id: I8a6c10f60fb2ac9bcb9d1e7688d4d233ef7d775f
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/sliders/domain/interactor/VolumeDialogSlidersInteractorTest.kt24
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/domain/interactor/VolumeDialogSlidersInteractor.kt17
2 files changed, 35 insertions, 6 deletions
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/sliders/domain/interactor/VolumeDialogSlidersInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/sliders/domain/interactor/VolumeDialogSlidersInteractorTest.kt
index 7c5a48728a11..3f995c69c32f 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/sliders/domain/interactor/VolumeDialogSlidersInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/sliders/domain/interactor/VolumeDialogSlidersInteractorTest.kt
@@ -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 {
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/domain/interactor/VolumeDialogSlidersInteractor.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/domain/interactor/VolumeDialogSlidersInteractor.kt
index 7af4258930cb..948d0fec16ae 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/domain/interactor/VolumeDialogSlidersInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/domain/interactor/VolumeDialogSlidersInteractor.kt
@@ -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
@@ -54,13 +55,17 @@ constructor(
volumeDialogStateInteractor.volumeDialogState
.filter { it.streamModels.isNotEmpty() }
.map { stateModel ->
- stateModel.streamModels.values
- .filter { streamModel -> shouldShowSliders(stateModel, streamModel) }
- .sortedWith(streamsSorter)
+ 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),