diff options
| author | 2023-10-30 22:15:10 +0000 | |
|---|---|---|
| committer | 2023-10-30 22:41:52 +0000 | |
| commit | 6506b60b89af742cf50215c7901ddb47a2ae164e (patch) | |
| tree | f56e85986e4999e5c84a6c00299899a35ab21c6a | |
| parent | 5b846ec4c6a89c9ad65c0c92e2c64cdf6b490b2f (diff) | |
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
2 files changed, 20 insertions, 1 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java index 8babcc24043a..1774000d8f87 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java @@ -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; } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java index 033c96ae84b0..4af7864e6fac 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java @@ -786,6 +786,25 @@ public class NotificationStackScrollLayoutTest extends SysuiTestCase { } @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 // mIsExpanded is set to be false |