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

Commit bf4a2e40 authored by Fabián Kozynski's avatar Fabián Kozynski
Browse files

Use isUserInteracting for early QS

This gives us an earlier notice that QS is being shown.

Test: manual
Test: perfetto
Test: atest QSFragmentComposeViewModelTest
Fixes: 397447046
Flag: com.android.systemui.qs_ui_refactor_compose_fragment

Change-Id: I964171e99b2591885c762edb886fa7d5a080c260
parent fcdb3b9f
Loading
Loading
Loading
Loading
+32 −1
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ import com.android.systemui.qs.fgsManagerController
import com.android.systemui.qs.panels.domain.interactor.tileSquishinessInteractor
import com.android.systemui.qs.panels.ui.viewmodel.setConfigurationForMediaInRow
import com.android.systemui.res.R
import com.android.systemui.shade.data.repository.FakeShadeRepository
import com.android.systemui.shade.data.repository.fakeShadeRepository
import com.android.systemui.shade.largeScreenHeaderHelper
import com.android.systemui.statusbar.StatusBarState
@@ -438,9 +439,11 @@ class QSFragmentComposeViewModelTest : AbstractQSFragmentComposeViewModelTest()
        }

    @Test
    fun qsVisibleAndAnyShadeVisible() =
    fun qsVisibleAndAnyShadeVisible_userTracking_false() =
        with(kosmos) {
            testScope.testWithinLifecycle {
                fakeShadeRepository.setUserTracking(false)

                underTest.isQsVisible = false
                fakeShadeRepository.setLegacyExpandedOrAwaitingInputTransfer(false)
                assertThat(underTest.isQsVisibleAndAnyShadeExpanded).isFalse()
@@ -459,6 +462,30 @@ class QSFragmentComposeViewModelTest : AbstractQSFragmentComposeViewModelTest()
            }
        }

    @Test
    fun qsVisibleAndAnyShadeVisible_userTracking_true() =
        with(kosmos) {
            testScope.testWithinLifecycle {
                fakeShadeRepository.setUserTracking(true)

                underTest.isQsVisible = false
                fakeShadeRepository.setLegacyExpandedOrAwaitingInputTransfer(false)
                assertThat(underTest.isQsVisibleAndAnyShadeExpanded).isFalse()

                underTest.isQsVisible = true
                fakeShadeRepository.setLegacyExpandedOrAwaitingInputTransfer(false)
                assertThat(underTest.isQsVisibleAndAnyShadeExpanded).isTrue()

                underTest.isQsVisible = false
                fakeShadeRepository.setLegacyExpandedOrAwaitingInputTransfer(true)
                assertThat(underTest.isQsVisibleAndAnyShadeExpanded).isFalse()

                underTest.isQsVisible = true
                fakeShadeRepository.setLegacyExpandedOrAwaitingInputTransfer(true)
                assertThat(underTest.isQsVisibleAndAnyShadeExpanded).isTrue()
            }
        }

    @Test
    fun isEditing() =
        with(kosmos) {
@@ -493,6 +520,10 @@ class QSFragmentComposeViewModelTest : AbstractQSFragmentComposeViewModelTest()
        runCurrent()
    }

    private fun FakeShadeRepository.setUserTracking(tracking: Boolean) {
        setLegacyShadeTracking(tracking)
    }

    companion object {
        private const val QS_DISABLE_FLAG = StatusBarManager.DISABLE2_QUICK_SETTINGS

+7 −1
Original line number Diff line number Diff line
@@ -135,7 +135,7 @@ constructor(
    var isQsVisible by mutableStateOf(false)

    val isQsVisibleAndAnyShadeExpanded: Boolean
        get() = anyShadeExpanded && isQsVisible
        get() = (anyShadeExpanded || isUserInteracting) && isQsVisible

    // This can only be negative if undefined (in which case it will be -1f), else it will be
    // in [0, 1]. In some cases, it could be set back to -1f internally to indicate that it's
@@ -454,6 +454,12 @@ constructor(
            source = shadeInteractor.isAnyExpanded,
        )

    private val isUserInteracting by
        hydrator.hydratedStateOf(
            traceName = "isUserInteracting",
            source = shadeInteractor.isUserInteracting,
        )

    fun applyNewQsScrollerBounds(left: Float, top: Float, right: Float, bottom: Float) {
        if (usingMedia) {
            qsMediaHost.currentClipping.set(