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

Commit 6506b60b authored by Ibrahim Yilmaz's avatar Ibrahim Yilmaz
Browse files

Fix odd jumps during clear all animation

The observed odd jumps during clear all are caused by scrollY position of NSSL. This CL limits setOwnScrollY on clear all animation just like closing(b/20105405 -> ag/20105405).

Flag: NONE
Bug: 269061244
Test: atest com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutTest & manual: put many notifications with dismissible and non dismissable, click Clear All, observe no jumps during animation.
Change-Id: Ic7d09ab54bb45ea3fb57c9650939653ada23f0b3
parent 5b846ec4
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -4963,7 +4963,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
        // Avoid Flicking during clear all
        // when the shade finishes closing, onExpansionStopped will call
        // resetScrollPosition to setOwnScrollY to 0
        if (mAmbientState.isClosing()) {
        if (mAmbientState.isClosing() || mAmbientState.isClearAllInProgress()) {
            return;
        }

+19 −0
Original line number Diff line number Diff line
@@ -785,6 +785,25 @@ public class NotificationStackScrollLayoutTest extends SysuiTestCase {
        assertEquals(0, mAmbientState.getScrollY());
    }

    @Test
    public void testSetOwnScrollY_clearAllInProgress_scrollYDoesNotChange() {
        // Given: clear all is in progress, scrollY is 0
        mAmbientState.setScrollY(0);
        assertEquals(0, mAmbientState.getScrollY());
        mAmbientState.setClearAllInProgress(true);

        // When: call NotificationStackScrollLayout.setOwnScrollY to set scrollY to 1
        mStackScroller.setOwnScrollY(1);

        // Then: scrollY should not change, it should still be 0
        assertEquals(0, mAmbientState.getScrollY());

        // Reset scrollY and mAmbientState.mIsClosing to avoid interfering with other tests
        mAmbientState.setClearAllInProgress(false);
        mStackScroller.setOwnScrollY(0);
        assertEquals(0, mAmbientState.getScrollY());
    }

    @Test
    public void onShadeFlingClosingEnd_scrollYShouldBeSetToZero() {
        // Given: mAmbientState.mIsClosing is set to be true