Fix StatusBar chip location not updated after screen rotation

Bug: 289875579
Test: atest SystemEventChipAnimationController, Manual, i.e. checking chip locations after rotations
Change-Id: Ifd1df66f9615e61a569cc3f97ba9856c7b9e5baa
This commit is contained in:
Johannes Gallmann
2023-07-13 11:06:30 +02:00
parent 985b432d58
commit eaeb4ad3a1
2 changed files with 11 additions and 1 deletions

View File

@@ -265,6 +265,11 @@ class SystemEventChipAnimationController @Inject constructor(
// not animating then [prepareChipAnimation] will take care of it for us
currentAnimatedView?.let {
updateChipBounds(it, newContentArea)
// Since updateCurrentAnimatedView can only be called during an animation, we
// have to create a dummy animator here to apply the new chip bounds
val animator = ValueAnimator.ofInt(0, 1).setDuration(0)
animator.addUpdateListener { updateCurrentAnimatedView() }
animator.start()
}
}
})

View File

@@ -18,6 +18,8 @@ package com.android.systemui.statusbar.events
import android.content.Context
import android.graphics.Rect
import android.testing.AndroidTestingRunner
import android.testing.TestableLooper
import android.util.Pair
import android.view.Gravity
import android.view.View
@@ -37,11 +39,14 @@ import org.junit.Assert.assertFalse
import org.junit.Assert.assertTrue
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
@SmallTest
@RunWith(AndroidTestingRunner::class)
@TestableLooper.RunWithLooper
class SystemEventChipAnimationControllerTest : SysuiTestCase() {
private lateinit var controller: SystemEventChipAnimationController
@@ -159,7 +164,7 @@ class SystemEventChipAnimationControllerTest : SysuiTestCase() {
assertThat(chipRect).isEqualTo(Rect(890, 25, 990, 75))
}
class TestView(context: Context) : View(context), BackgroundAnimatableView {
private class TestView(context: Context) : View(context), BackgroundAnimatableView {
override val view: View
get() = this