Fix alpha not fading on notifications after the first shade expansion

The problem has regressed due to b/239903210 fix. During the development, we have made a refactoring where we centralized all the `alpha` handling logic. While centralising the code, we inlined a function which had an early return statement and caused the code execution to stop before expected. By changing the early return to a `continue` we ensure the fade works correctly.

Test: manual

Test: atest ~/tm-qpr-dev/frameworks/base/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithmTest.kt

Fixes: 245506240

Change-Id: Iee6c2ed0e5ef83e5cb659ee0363cbd80a3c2166e
This commit is contained in:
Marcello Galhardo
2022-09-07 12:01:17 +00:00
parent 27c368063d
commit e5152328e2
2 changed files with 29 additions and 2 deletions

View File

@@ -163,7 +163,7 @@ public class StackScrollAlgorithm {
// which is more expensive.
if (shelfState.hidden) {
// When the shelf is hidden, it won't clip views, so we don't hide rows
return;
continue;
}
final float shelfTop = shelfState.yTranslation;

View File

@@ -179,7 +179,28 @@ class StackScrollAlgorithmTest : SysuiTestCase() {
}
@Test
fun resetViewStates_hiddenShelf_viewAlphaDoesNotChange() {
fun resetViewStates_hiddenShelf_allRowsBecomesTransparent() {
hostView.removeAllViews()
val row1 = mockExpandableNotificationRow()
hostView.addView(row1)
val row2 = mockExpandableNotificationRow()
hostView.addView(row2)
ambientState.setStatusBarState(StatusBarState.KEYGUARD)
ambientState.hideAmount = 0.25f
notificationShelf.viewState.hidden = true
ambientState.shelf = notificationShelf
stackScrollAlgorithm.initView(context)
stackScrollAlgorithm.resetViewStates(ambientState, /* speedBumpIndex= */ 0)
val expected = 1f - ambientState.hideAmount
assertThat(row1.viewState.alpha).isEqualTo(expected)
assertThat(row2.viewState.alpha).isEqualTo(expected)
}
@Test
fun resetViewStates_hiddenShelf_shelfAlphaDoesNotChange() {
val expected = notificationShelf.viewState.alpha
notificationShelf.viewState.hidden = true
ambientState.shelf = notificationShelf
@@ -459,3 +480,9 @@ class StackScrollAlgorithmTest : SysuiTestCase() {
assertEquals(1f, currentRoundness)
}
}
private fun mockExpandableNotificationRow(): ExpandableNotificationRow {
return mock(ExpandableNotificationRow::class.java).apply {
whenever(viewState).thenReturn(ExpandableViewState())
}
}