summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Ibrahim Yilmaz <iyz@google.com> 2023-10-30 22:15:10 +0000
committer Ibrahim Yilmaz <iyz@google.com> 2023-10-30 22:41:52 +0000
commit6506b60b89af742cf50215c7901ddb47a2ae164e (patch)
treef56e85986e4999e5c84a6c00299899a35ab21c6a
parent5b846ec4c6a89c9ad65c0c92e2c64cdf6b490b2f (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
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java19
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