summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/VolumeDialogRingerDrawerViewModelTest.kt16
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/VolumeDialogRingerDrawerViewModel.kt7
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/VolumeDialogRingerDrawerViewModelKosmos.kt3
3 files changed, 21 insertions, 5 deletions
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/VolumeDialogRingerDrawerViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/VolumeDialogRingerDrawerViewModelTest.kt
index d8184dbadf9a..2dcfdd958df1 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/VolumeDialogRingerDrawerViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/VolumeDialogRingerDrawerViewModelTest.kt
@@ -30,6 +30,7 @@ import com.android.systemui.haptics.fakeVibratorHelper
import com.android.systemui.kosmos.testScope
import com.android.systemui.plugins.fakeVolumeDialogController
import com.android.systemui.testKosmos
+import com.android.systemui.util.time.fakeSystemClock
import com.android.systemui.volume.data.repository.audioSystemRepository
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -78,7 +79,7 @@ class VolumeDialogRingerDrawerViewModelTest : SysuiTestCase() {
val normalRingerMode = RingerMode(RINGER_MODE_NORMAL)
setUpRingerModeAndOpenDrawer(normalRingerMode)
- underTest.onRingerButtonClicked(normalRingerMode)
+ onRingerButtonClicked(normalRingerMode)
controller.getState()
assertThat(ringerViewModel).isInstanceOf(RingerViewModelState.Available::class.java)
@@ -95,7 +96,7 @@ class VolumeDialogRingerDrawerViewModelTest : SysuiTestCase() {
setUpRingerModeAndOpenDrawer(normalRingerMode)
// Select vibrate ringer mode.
- underTest.onRingerButtonClicked(vibrateRingerMode)
+ onRingerButtonClicked(vibrateRingerMode)
controller.getState()
runCurrent()
@@ -109,11 +110,11 @@ class VolumeDialogRingerDrawerViewModelTest : SysuiTestCase() {
val silentRingerMode = RingerMode(RINGER_MODE_SILENT)
// Open drawer
- underTest.onRingerButtonClicked(vibrateRingerMode)
+ onRingerButtonClicked(vibrateRingerMode)
controller.getState()
// Select silent ringer mode.
- underTest.onRingerButtonClicked(silentRingerMode)
+ onRingerButtonClicked(silentRingerMode)
controller.getState()
runCurrent()
@@ -152,11 +153,16 @@ class VolumeDialogRingerDrawerViewModelTest : SysuiTestCase() {
private fun TestScope.setUpRingerModeAndOpenDrawer(selectedRingerMode: RingerMode) {
setUpRingerMode(selectedRingerMode)
- underTest.onRingerButtonClicked(RingerMode(selectedRingerMode.value))
+ onRingerButtonClicked(selectedRingerMode)
controller.getState()
runCurrent()
}
+ private fun TestScope.onRingerButtonClicked(ringerMode: RingerMode) {
+ kosmos.fakeSystemClock.advanceTime(400L)
+ underTest.onRingerButtonClicked(ringerMode)
+ }
+
private fun TestScope.setUpRingerMode(selectedRingerMode: RingerMode) {
controller.setStreamVolume(STREAM_RING, 50)
controller.setRingerMode(selectedRingerMode.value, false)
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 07c4de0ac0c4..b0d6d62289c7 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
@@ -35,6 +35,7 @@ import com.android.systemui.res.R
import com.android.systemui.statusbar.VibratorHelper
import com.android.systemui.statusbar.policy.ConfigurationController
import com.android.systemui.statusbar.policy.onConfigChanged
+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.dagger.scope.VolumeDialogScope
@@ -56,6 +57,7 @@ import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.launch
+private const val DRAWER_STATE_ANIMATION_DURATION = 400L
private const val SHOW_RINGER_TOAST_COUNT = 12
@VolumeDialogScope
@@ -71,6 +73,7 @@ constructor(
private val volumeDialogLogger: VolumeDialogLogger,
private val visibilityInteractor: VolumeDialogVisibilityInteractor,
configurationController: ConfigurationController,
+ private val systemClock: SystemClock,
) {
private val drawerState = MutableStateFlow<RingerDrawerState>(RingerDrawerState.Initial)
@@ -108,6 +111,7 @@ constructor(
.setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION)
.build()
+ private var lastClickTime = 0L
init {
ringerViewModel
.onEach { viewModelState ->
@@ -124,6 +128,9 @@ constructor(
}
fun onRingerButtonClicked(ringerMode: RingerMode, isSelectedButton: Boolean = false) {
+ val currentTime = systemClock.currentTimeMillis()
+ if (currentTime - lastClickTime < DRAWER_STATE_ANIMATION_DURATION) return
+ lastClickTime = currentTime
if (drawerState.value is RingerDrawerState.Open && !isSelectedButton) {
Events.writeEvent(Events.EVENT_RINGER_TOGGLE, ringerMode.value)
volumeDialogLogger.onRingerModeChanged(ringerMode)
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/VolumeDialogRingerDrawerViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/VolumeDialogRingerDrawerViewModelKosmos.kt
index 4fda95bab2ec..9f3150f7366a 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/VolumeDialogRingerDrawerViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/VolumeDialogRingerDrawerViewModelKosmos.kt
@@ -23,6 +23,8 @@ import com.android.systemui.kosmos.applicationCoroutineScope
import com.android.systemui.kosmos.testDispatcher
import com.android.systemui.statusbar.notification.domain.interactor.notificationsSoundPolicyInteractor
import com.android.systemui.statusbar.policy.configurationController
+import com.android.systemui.util.time.fakeSystemClock
+import com.android.systemui.util.time.systemClock
import com.android.systemui.volume.dialog.domain.interactor.volumeDialogVisibilityInteractor
import com.android.systemui.volume.dialog.ringer.domain.volumeDialogRingerInteractor
import com.android.systemui.volume.dialog.shared.volumeDialogLogger
@@ -39,5 +41,6 @@ val Kosmos.volumeDialogRingerDrawerViewModel by
volumeDialogLogger = volumeDialogLogger,
visibilityInteractor = volumeDialogVisibilityInteractor,
configurationController = configurationController,
+ systemClock = fakeSystemClock,
)
}