summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java4
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java35
2 files changed, 38 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 e37750194368..6821b141d140 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
@@ -1297,7 +1297,9 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
+ mAmbientState.getOverExpansion()
- getCurrentOverScrollAmount(false /* top */);
float fraction = mAmbientState.getExpansionFraction();
- if (mAmbientState.isBouncerInTransit()) {
+ // If we are on quick settings, we need to quickly hide it to show the bouncer to avoid an
+ // overlap. Otherwise, we maintain the normal fraction for smoothness.
+ if (mAmbientState.isBouncerInTransit() && mQsExpansionFraction > 0f) {
fraction = BouncerPanelExpansionCalculator.aboutToShowBouncerProgress(fraction);
}
final float stackY = MathUtils.lerp(0, endTopPosition, fraction);
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 6ae021b48f66..43530365360b 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
@@ -55,6 +55,7 @@ import android.view.ViewGroup;
import androidx.test.annotation.UiThreadTest;
import androidx.test.filters.SmallTest;
+import com.android.keyguard.BouncerPanelExpansionCalculator;
import com.android.systemui.ExpandHelper;
import com.android.systemui.R;
import com.android.systemui.SysuiTestCase;
@@ -179,6 +180,40 @@ public class NotificationStackScrollLayoutTest extends SysuiTestCase {
}
@Test
+ public void testUpdateStackHeight_qsExpansionGreaterThanZero() {
+ final float expansionFraction = 0.2f;
+ final float overExpansion = 50f;
+
+ mStackScroller.setQsExpansionFraction(1f);
+ mAmbientState.setExpansionFraction(expansionFraction);
+ mAmbientState.setOverExpansion(overExpansion);
+ when(mAmbientState.isBouncerInTransit()).thenReturn(true);
+
+
+ mStackScroller.setExpandedHeight(100f);
+
+ float expected = MathUtils.lerp(0, overExpansion,
+ BouncerPanelExpansionCalculator.aboutToShowBouncerProgress(expansionFraction));
+ assertThat(mAmbientState.getStackY()).isEqualTo(expected);
+ }
+
+ @Test
+ public void testUpdateStackHeight_qsExpansionZero() {
+ final float expansionFraction = 0.2f;
+ final float overExpansion = 50f;
+
+ mStackScroller.setQsExpansionFraction(0f);
+ mAmbientState.setExpansionFraction(expansionFraction);
+ mAmbientState.setOverExpansion(overExpansion);
+ when(mAmbientState.isBouncerInTransit()).thenReturn(true);
+
+ mStackScroller.setExpandedHeight(100f);
+
+ float expected = MathUtils.lerp(0, overExpansion, expansionFraction);
+ assertThat(mAmbientState.getStackY()).isEqualTo(expected);
+ }
+
+ @Test
public void testUpdateStackHeight_withDozeAmount_whenDozeChanging() {
final float dozeAmount = 0.5f;
mAmbientState.setDozeAmount(dozeAmount);