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

Commit 947e01c8 authored by Vania Januar's avatar Vania Januar
Browse files

Collapse the notification shade when closing the QS using the back button in split shade mode.

CentralSurfacesImpl.onBackPressed() was collapsing the QS to QQS on the first back button tap, but when in split shade mode closing the Qs does nothing. Now NotificationPanelViewController.animateCloseQs() will run collapsePanel() to close the entire panel if mSplitShadeEnabled.

Fixes: 234306461
Test: manually checking the notification panel closes with one back button tap
Test: NotificationPanelViewControllerTest
Change-Id: I99d8b06846214344011d5ee6f590193594d6e247
parent 6f6f8728
Loading
Loading
Loading
Loading
+7 −8
Original line number Diff line number Diff line
@@ -1714,10 +1714,17 @@ public final class NotificationPanelViewController extends PanelViewController {
    /**
     * Animate QS closing by flinging it.
     * If QS is expanded, it will collapse into QQS and stop.
     * If in split shade, it will collapse the whole shade.
     *
     * @param animateAway Do not stop when QS becomes QQS. Fling until QS isn't visible anymore.
     */
    public void animateCloseQs(boolean animateAway) {
        if (mSplitShadeEnabled) {
            collapsePanel(
                    /* animate= */true, /* delayed= */false, /* speedUpFactor= */1.0f);
            return;
        }

        if (mQsExpansionAnimator != null) {
            if (!mQsAnimatorExpand) {
                return;
@@ -3390,19 +3397,11 @@ public final class NotificationPanelViewController extends PanelViewController {
        return mQsExpanded;
    }

    public boolean isQsDetailShowing() {
        return mQs.isShowingDetail();
    }

    /** Returns whether the QS customizer is currently active. */
    public boolean isQsCustomizing() {
        return mQs.isCustomizing();
    }

    public void closeQsDetail() {
        mQs.closeDetail();
    }

    /** Close the QS customizer if it is open. */
    public void closeQsCustomizer() {
        mQs.closeCustomizer();
+0 −4
Original line number Diff line number Diff line
@@ -3325,11 +3325,7 @@ public class CentralSurfacesImpl extends CoreStartable implements
            return true;
        }
        if (mNotificationPanelViewController.isQsExpanded()) {
            if (mNotificationPanelViewController.isQsDetailShowing()) {
                mNotificationPanelViewController.closeQsDetail();
            } else {
                mNotificationPanelViewController.animateCloseQs(false /* animateAway */);
            }
            return true;
        }
        if (mNotificationPanelViewController.closeUserSwitcherIfOpen()) {
+23 −0
Original line number Diff line number Diff line
@@ -1283,6 +1283,29 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase {
        assertThat(mNotificationPanelViewController.isQsExpanded()).isFalse();
    }

    @Test
    public void testPanelClosedWhenClosingQsInSplitShade() {
        mPanelExpansionStateManager.onPanelExpansionChanged(/* fraction= */ 1,
                /* expanded= */ true, /* tracking= */ false, /* dragDownPxAmount= */ 0);
        enableSplitShade(/* enabled= */ true);
        mNotificationPanelViewController.setExpandedFraction(1f);

        assertThat(mNotificationPanelViewController.isClosing()).isFalse();
        mNotificationPanelViewController.animateCloseQs(false);
        assertThat(mNotificationPanelViewController.isClosing()).isTrue();
    }

    @Test
    public void testPanelStaysOpenWhenClosingQs() {
        mPanelExpansionStateManager.onPanelExpansionChanged(/* fraction= */ 1,
                /* expanded= */ true, /* tracking= */ false, /* dragDownPxAmount= */ 0);
        mNotificationPanelViewController.setExpandedFraction(1f);

        assertThat(mNotificationPanelViewController.isClosing()).isFalse();
        mNotificationPanelViewController.animateCloseQs(false);
        assertThat(mNotificationPanelViewController.isClosing()).isFalse();
    }

    @Test
    public void interceptTouchEvent_withinQs_shadeExpanded_startsQsTracking() {
        mNotificationPanelViewController.mQs = mQs;