summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Treehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com> 2025-01-13 15:21:20 -0800
committer Android (Google) Code Review <android-gerrit@google.com> 2025-01-13 15:21:20 -0800
commit042947a7547e358db719cfe8a83b2adfc3a66c04 (patch)
treece1e330a669b431d7e920c42ea5b6b10a0ca2a3a
parent1ae1333237340c4a2e2c221188514d3a6b8f0e8a (diff)
parent3b0dae5af3ec00cdcaa16fa1d5a1ae882bf4e0c0 (diff)
Merge "Add Volume Dialog logs" into main
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/binder/VolumeDialogRingerViewBinder.kt31
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/RingerViewModel.kt2
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/VolumeDialogRingerDrawerViewModel.kt27
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/dialog/shared/VolumeDialogLogger.kt46
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/VolumeDialogSliderViewBinder.kt10
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSliderViewModel.kt8
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSlidersViewModel.kt8
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSliderViewModelKosmos.kt4
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSlidersViewModelKosmos.kt2
9 files changed, 112 insertions, 26 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/binder/VolumeDialogRingerViewBinder.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/binder/VolumeDialogRingerViewBinder.kt
index 96630ca36b97..908249dbca08 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/binder/VolumeDialogRingerViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/binder/VolumeDialogRingerViewBinder.kt
@@ -144,7 +144,6 @@ constructor(private val viewModel: VolumeDialogRingerDrawerViewModel) {
ringerState.orientation,
)
}
-
is RingerDrawerState.Closed -> {
if (
uiModel.selectedButton.ringerMode ==
@@ -189,7 +188,6 @@ constructor(private val viewModel: VolumeDialogRingerDrawerViewModel) {
}
}
}
-
is RingerDrawerState.Open -> {
drawerContainer.animateAndBindDrawerButtons(
viewModel,
@@ -220,7 +218,6 @@ constructor(private val viewModel: VolumeDialogRingerDrawerViewModel) {
}
}
}
-
is RingerViewModelState.Unavailable -> {
drawerContainer.visibility = View.GONE
volumeDialogBackgroundView.setBackgroundResource(
@@ -251,7 +248,7 @@ constructor(private val viewModel: VolumeDialogRingerDrawerViewModel) {
.requireViewById<ImageButton>(R.id.volume_drawer_button)
val previousIndex =
uiModel.availableButtons.indexOfFirst {
- it?.ringerMode == uiModel.drawerState.previousMode
+ it.ringerMode == uiModel.drawerState.previousMode
}
val unselectedButton =
getChildAt(count - previousIndex)
@@ -306,20 +303,18 @@ constructor(private val viewModel: VolumeDialogRingerDrawerViewModel) {
) {
val count = uiModel.availableButtons.size
uiModel.availableButtons.fastForEachIndexed { index, ringerButton ->
- ringerButton?.let {
- val view = getChildAt(count - index)
- val isOpen = uiModel.drawerState is RingerDrawerState.Open
- if (index == uiModel.currentButtonIndex) {
- view.bindDrawerButton(
- if (isOpen) it else uiModel.selectedButton,
- viewModel,
- isOpen,
- isSelected = true,
- isAnimated = isAnimated,
- )
- } else {
- view.bindDrawerButton(it, viewModel, isOpen, isAnimated = isAnimated)
- }
+ val view = getChildAt(count - index)
+ val isOpen = uiModel.drawerState is RingerDrawerState.Open
+ if (index == uiModel.currentButtonIndex) {
+ view.bindDrawerButton(
+ if (isOpen) ringerButton else uiModel.selectedButton,
+ viewModel,
+ isOpen,
+ isSelected = true,
+ isAnimated = isAnimated,
+ )
+ } else {
+ view.bindDrawerButton(ringerButton, viewModel, isOpen, isAnimated = isAnimated)
}
}
onAnimationEnd?.run()
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/RingerViewModel.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/RingerViewModel.kt
index 96d4f62416bf..8613610ad1bf 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/RingerViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/RingerViewModel.kt
@@ -19,7 +19,7 @@ package com.android.systemui.volume.dialog.ringer.ui.viewmodel
/** Models volume dialog ringer */
data class RingerViewModel(
/** List of the available buttons according to the available modes */
- val availableButtons: List<RingerButtonViewModel?>,
+ val availableButtons: List<RingerButtonViewModel>,
/** The index of the currently selected button */
val currentButtonIndex: Int,
/** Currently selected button. */
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/VolumeDialogRingerDrawerViewModel.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/VolumeDialogRingerDrawerViewModel.kt
index eec64d9a2f86..07c4de0ac0c4 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/VolumeDialogRingerDrawerViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/VolumeDialogRingerDrawerViewModel.kt
@@ -50,7 +50,9 @@ import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.flowOn
+import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.map
+import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.launch
@@ -106,9 +108,25 @@ constructor(
.setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION)
.build()
+ init {
+ ringerViewModel
+ .onEach { viewModelState ->
+ when (viewModelState) {
+ is RingerViewModelState.Available ->
+ volumeDialogLogger.onRingerDrawerAvailable(
+ viewModelState.uiModel.availableButtons.map { it.ringerMode }
+ )
+ is RingerViewModelState.Unavailable ->
+ volumeDialogLogger.onRingerDrawerUnavailable()
+ }
+ }
+ .launchIn(coroutineScope)
+ }
+
fun onRingerButtonClicked(ringerMode: RingerMode, isSelectedButton: Boolean = false) {
if (drawerState.value is RingerDrawerState.Open && !isSelectedButton) {
Events.writeEvent(Events.EVENT_RINGER_TOGGLE, ringerMode.value)
+ volumeDialogLogger.onRingerModeChanged(ringerMode)
provideTouchFeedback(ringerMode)
maybeShowToast(ringerMode)
ringerInteractor.setRingerMode(ringerMode)
@@ -159,7 +177,9 @@ constructor(
RingerViewModelState.Available(
RingerViewModel(
availableButtons =
- availableModes.map { mode -> toButtonViewModel(mode, isZenMuted) },
+ availableModes.mapNotNull { mode ->
+ toButtonViewModel(mode, isZenMuted)
+ },
currentButtonIndex = currentIndex,
selectedButton = it,
drawerState = drawerState,
@@ -219,7 +239,6 @@ constructor(
hintLabelResId = R.string.volume_ringer_hint_unmute,
ringerMode = ringerMode,
)
-
availableModes.contains(RingerMode(RINGER_MODE_VIBRATE)) ->
RingerButtonViewModel(
imageResId = R.drawable.ic_speaker_on,
@@ -232,7 +251,6 @@ constructor(
hintLabelResId = R.string.volume_ringer_hint_vibrate,
ringerMode = ringerMode,
)
-
else ->
RingerButtonViewModel(
imageResId = R.drawable.ic_speaker_on,
@@ -269,17 +287,14 @@ constructor(
null
}
}
-
RINGER_MODE_SILENT ->
applicationContext.getString(
internalR.string.volume_dialog_ringer_guidance_silent
)
-
RINGER_MODE_VIBRATE ->
applicationContext.getString(
internalR.string.volume_dialog_ringer_guidance_vibrate
)
-
else ->
applicationContext.getString(
internalR.string.volume_dialog_ringer_guidance_vibrate
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/shared/VolumeDialogLogger.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/shared/VolumeDialogLogger.kt
index 9a3aa7e3d79f..cccf090fae85 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/dialog/shared/VolumeDialogLogger.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/shared/VolumeDialogLogger.kt
@@ -45,6 +45,52 @@ class VolumeDialogLogger @Inject constructor(@VolumeLog private val logBuffer: L
)
}
+ fun onVolumeSliderAdjustmentFinished(volume: Int, stream: Int) {
+ logBuffer.log(
+ TAG,
+ LogLevel.DEBUG,
+ {
+ int1 = volume
+ int2 = stream
+ },
+ { "Volume adjusted: volume=$int1 stream=$int2" },
+ )
+ }
+
+ fun onVolumeSlidersUpdated(primaryStream: Int, floating: Collection<Int>) {
+ logBuffer.log(
+ TAG,
+ LogLevel.DEBUG,
+ {
+ int1 = primaryStream
+ str1 = floating.joinToString(",") { it.toString() }
+ },
+ { "Showing streams: primary=$int1 floating=$str1" },
+ )
+ }
+
+ fun onRingerModeChanged(ringerMode: RingerMode) {
+ logBuffer.log(
+ TAG,
+ LogLevel.DEBUG,
+ { int1 = ringerMode.value },
+ { "Ringer mode changed to: $int1" },
+ )
+ }
+
+ fun onRingerDrawerAvailable(modes: List<RingerMode>) {
+ logBuffer.log(
+ TAG,
+ LogLevel.DEBUG,
+ { str1 = modes.joinToString(",") { it.value.toString() } },
+ { "Ringer drawer available with modes: $str1" },
+ )
+ }
+
+ fun onRingerDrawerUnavailable() {
+ logBuffer.log(TAG, LogLevel.DEBUG, {}, { "Ringer drawer unavailable" })
+ }
+
fun onCurrentRingerModeIsUnsupported(ringerMode: RingerMode) {
logBuffer.log(
TAG,
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/VolumeDialogSliderViewBinder.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/VolumeDialogSliderViewBinder.kt
index 3b964fdec1b8..d40302408dd6 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/VolumeDialogSliderViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/VolumeDialogSliderViewBinder.kt
@@ -27,6 +27,7 @@ import com.android.systemui.volume.dialog.sliders.ui.viewmodel.VolumeDialogSlide
import com.android.systemui.volume.dialog.sliders.ui.viewmodel.VolumeDialogSliderStateModel
import com.android.systemui.volume.dialog.sliders.ui.viewmodel.VolumeDialogSliderViewModel
import com.google.android.material.slider.Slider
+import com.google.android.material.slider.Slider.OnSliderTouchListener
import javax.inject.Inject
import kotlin.math.roundToInt
import kotlinx.coroutines.CoroutineScope
@@ -68,6 +69,15 @@ constructor(
sliderView.addOnChangeListener { _, value, fromUser ->
viewModel.setStreamVolume(value.roundToInt(), fromUser)
}
+ sliderView.addOnSliderTouchListener(
+ object : OnSliderTouchListener {
+ override fun onStartTrackingTouch(slider: Slider) {}
+
+ override fun onStopTrackingTouch(slider: Slider) {
+ viewModel.onStreamChangeFinished(slider.value.roundToInt())
+ }
+ }
+ )
viewModel.isDisabledByZenMode.onEach { sliderView.isEnabled = !it }.launchIn(this)
viewModel.state
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSliderViewModel.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSliderViewModel.kt
index d999910675b0..89dd0352afa7 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSliderViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSliderViewModel.kt
@@ -20,9 +20,11 @@ import com.android.systemui.util.time.SystemClock
import com.android.systemui.volume.Events
import com.android.systemui.volume.dialog.dagger.scope.VolumeDialog
import com.android.systemui.volume.dialog.domain.interactor.VolumeDialogVisibilityInteractor
+import com.android.systemui.volume.dialog.shared.VolumeDialogLogger
import com.android.systemui.volume.dialog.shared.model.VolumeDialogStreamModel
import com.android.systemui.volume.dialog.sliders.dagger.VolumeDialogSliderScope
import com.android.systemui.volume.dialog.sliders.domain.interactor.VolumeDialogSliderInteractor
+import com.android.systemui.volume.dialog.sliders.domain.model.VolumeDialogSliderType
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -60,6 +62,8 @@ constructor(
@VolumeDialog private val coroutineScope: CoroutineScope,
private val volumeDialogSliderIconProvider: VolumeDialogSliderIconProvider,
private val systemClock: SystemClock,
+ private val sliderType: VolumeDialogSliderType,
+ private val logger: VolumeDialogLogger,
) {
private val userVolumeUpdates = MutableStateFlow<VolumeUpdate?>(null)
@@ -110,6 +114,10 @@ constructor(
}
}
+ fun onStreamChangeFinished(volume: Int) {
+ logger.onVolumeSliderAdjustmentFinished(volume = volume, stream = sliderType.audioStream)
+ }
+
private fun getTimestampMillis(): Long = systemClock.uptimeMillis()
private data class VolumeUpdate(val newVolumeLevel: Int, val timestampMillis: Long)
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSlidersViewModel.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSlidersViewModel.kt
index d8e6aec026c6..344dadcce229 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSlidersViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSlidersViewModel.kt
@@ -18,6 +18,7 @@ package com.android.systemui.volume.dialog.sliders.ui.viewmodel
import com.android.systemui.volume.dialog.dagger.scope.VolumeDialog
import com.android.systemui.volume.dialog.dagger.scope.VolumeDialogScope
+import com.android.systemui.volume.dialog.shared.VolumeDialogLogger
import com.android.systemui.volume.dialog.sliders.dagger.VolumeDialogSliderComponent
import com.android.systemui.volume.dialog.sliders.domain.interactor.VolumeDialogSlidersInteractor
import javax.inject.Inject
@@ -33,13 +34,18 @@ class VolumeDialogSlidersViewModel
@Inject
constructor(
@VolumeDialog coroutineScope: CoroutineScope,
- private val slidersInteractor: VolumeDialogSlidersInteractor,
+ slidersInteractor: VolumeDialogSlidersInteractor,
private val sliderComponentFactory: VolumeDialogSliderComponent.Factory,
+ private val volumeDialogLogger: VolumeDialogLogger,
) {
val sliders: Flow<VolumeDialogSliderUiModel> =
slidersInteractor.sliders
.map { slidersModel ->
+ volumeDialogLogger.onVolumeSlidersUpdated(
+ slidersModel.slider.audioStream,
+ slidersModel.floatingSliders.map { it.audioStream },
+ )
VolumeDialogSliderUiModel(
sliderComponent = sliderComponentFactory.create(slidersModel.slider),
floatingSliderComponent =
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSliderViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSliderViewModelKosmos.kt
index 63cd440a8633..b26081c40c38 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSliderViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSliderViewModelKosmos.kt
@@ -20,15 +20,19 @@ import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.applicationCoroutineScope
import com.android.systemui.util.time.systemClock
import com.android.systemui.volume.dialog.domain.interactor.volumeDialogVisibilityInteractor
+import com.android.systemui.volume.dialog.shared.volumeDialogLogger
import com.android.systemui.volume.dialog.sliders.domain.interactor.volumeDialogSliderInteractor
+import com.android.systemui.volume.dialog.sliders.domain.model.volumeDialogSliderType
val Kosmos.volumeDialogSliderViewModel by
Kosmos.Fixture {
VolumeDialogSliderViewModel(
+ sliderType = volumeDialogSliderType,
interactor = volumeDialogSliderInteractor,
visibilityInteractor = volumeDialogVisibilityInteractor,
coroutineScope = applicationCoroutineScope,
volumeDialogSliderIconProvider = volumeDialogSliderIconProvider,
systemClock = systemClock,
+ logger = volumeDialogLogger,
)
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSlidersViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSlidersViewModelKosmos.kt
index 5531f7608b69..8fb60fdd5ab1 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSlidersViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSlidersViewModelKosmos.kt
@@ -18,6 +18,7 @@ package com.android.systemui.volume.dialog.sliders.ui.viewmodel
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.applicationCoroutineScope
+import com.android.systemui.volume.dialog.shared.volumeDialogLogger
import com.android.systemui.volume.dialog.sliders.dagger.volumeDialogSliderComponentFactory
import com.android.systemui.volume.dialog.sliders.domain.interactor.volumeDialogSlidersInteractor
@@ -27,5 +28,6 @@ val Kosmos.volumeDialogSlidersViewModel by
applicationCoroutineScope,
volumeDialogSlidersInteractor,
volumeDialogSliderComponentFactory,
+ volumeDialogLogger,
)
}