Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6ef730de authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix double click on drawer button issue." into main

parents aca8f429 904521d7
Loading
Loading
Loading
Loading
+11 −5
Original line number Diff line number Diff line
@@ -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)
+7 −0
Original line number Diff line number Diff line
@@ -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)
+3 −0
Original line number Diff line number Diff line
@@ -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,
        )
    }