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

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

React earlier to expansion

Test: manual, tiles listening at correct times
Test: perfetto
Test: atest QSFragmentComposeViewModelTest
Flag: com.android.systemui.qs_ui_refactor_compose_fragment
Fixes: 407857406

Change-Id: I40140f824c5803199c038f1143397e49cb7ddaad
parent 5f7fe743
Loading
Loading
Loading
Loading
+5 −32
Original line number Diff line number Diff line
@@ -39,7 +39,6 @@ import com.android.systemui.qs.panels.domain.interactor.tileSquishinessInteracto
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
import com.android.systemui.statusbar.disableflags.data.repository.fakeDisableFlagsRepository
@@ -439,49 +438,23 @@ class QSFragmentComposeViewModelTest : AbstractQSFragmentComposeViewModelTest()
        }

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

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

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

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

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

    @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.isPanelExpanded = true
                underTest.isQsVisible = true
                fakeShadeRepository.setLegacyExpandedOrAwaitingInputTransfer(true)
                assertThat(underTest.isQsVisibleAndAnyShadeExpanded).isTrue()
            }
        }
+2 −0
Original line number Diff line number Diff line
@@ -203,6 +203,8 @@ public interface QS extends FragmentBase {
     */
    void setIsNotificationPanelFullWidth(boolean isFullWidth);

    default void setPanelExpanded(boolean panelExpanded) {}

    /**
     * Callback for when QSPanel container is scrolled
     */
+4 −0
Original line number Diff line number Diff line
@@ -451,6 +451,10 @@ constructor(
        viewModel.isStackScrollerOverscrolling = overscrolling
    }

    override fun setPanelExpanded(panelExpanded: Boolean) {
        viewModel.isPanelExpanded = panelExpanded
    }

    override fun setExpanded(qsExpanded: Boolean) {
        viewModel.isQsExpanded = qsExpanded
    }
+4 −14
Original line number Diff line number Diff line
@@ -135,7 +135,7 @@ constructor(
    var isQsVisible by mutableStateOf(false)

    val isQsVisibleAndAnyShadeExpanded: Boolean
        get() = (anyShadeExpanded || isUserInteracting) && isQsVisible
        get() = isPanelExpanded && 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
@@ -211,6 +211,8 @@ constructor(

    var heightOverride by mutableStateOf(-1)

    var isPanelExpanded by mutableStateOf(false)

    val expansionState by derivedStateOf {
        if (forceQs) {
            QSExpansionState(1f)
@@ -448,18 +450,6 @@ constructor(
                ),
        )

    private val anyShadeExpanded by
        hydrator.hydratedStateOf(
            traceName = "anyShadeExpanded",
            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(
@@ -543,7 +533,7 @@ constructor(
            printSection("Quick Settings state") {
                println("isQSExpanded", isQsExpanded)
                println("isQSVisible", isQsVisible)
                println("anyShadeExpanded", anyShadeExpanded)
                println("isPanelExpanded", isPanelExpanded)
                println("isQSVisibleAndAnyShadeExpanded", isQsVisibleAndAnyShadeExpanded)
                println("isQSEnabled", isQsEnabled)
                println("isCustomizing", containerViewModel.editModeViewModel.isEditing.value)
+3 −1
Original line number Diff line number Diff line
@@ -3237,8 +3237,10 @@ public final class NotificationPanelViewController implements
    @Override
    public void updateExpansionAndVisibility() {
        if (!SceneContainerFlag.isEnabled()) {
            boolean isExpanded = isExpanded();
            mShadeExpansionStateManager.onPanelExpansionChanged(
                    mExpandedFraction, isExpanded(), isTracking());
                    mExpandedFraction, isExpanded, isTracking());
            mQsController.setPanelExpanded(isExpanded);
        }
        updateVisibility();
    }
Loading