Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java +3 −1 Original line number Diff line number Diff line Loading @@ -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); Loading packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java +35 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -178,6 +179,40 @@ public class NotificationStackScrollLayoutTest extends SysuiTestCase { doNothing().when(mNotificationShelf).setAnimationsEnabled(anyBoolean()); } @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; Loading Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java +3 −1 Original line number Diff line number Diff line Loading @@ -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); Loading
packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java +35 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -178,6 +179,40 @@ public class NotificationStackScrollLayoutTest extends SysuiTestCase { doNothing().when(mNotificationShelf).setAnimationsEnabled(anyBoolean()); } @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; Loading