Fix sidefps visibility.

In ag/21915461, there seems to be a regression where the side fps does
not hide when the bouncer hides. This is likely caused by a race
condition between the visibility and when startingToHide is called.

We can fix this by updating the side fps visibility when hide is called
instead of startingToHide.

Fixes: 273563764
Bug: 263924084
Test: added a unit test.
Test: Show bouncer with side fps and hide the bouncer.
Change-Id: Idacf9e74ed3c0f7c2a03d5dd6ffa128b49c50c05
This commit is contained in:
Aaron Liu
2023-03-13 13:03:28 -07:00
parent f7fa5cb414
commit 8b19369a4b
2 changed files with 14 additions and 2 deletions

View File

@@ -70,7 +70,7 @@ constructor(
/** Observe whether we should update fps is showing. */
val shouldUpdateSideFps: Flow<Unit> =
merge(
interactor.startingToHide,
interactor.hide,
interactor.show,
interactor.startingDisappearAnimation.filterNotNull().map {}
)

View File

@@ -93,7 +93,7 @@ class KeyguardBouncerViewModelTest : SysuiTestCase() {
}
@Test
fun shouldUpdateSideFps() = runTest {
fun shouldUpdateSideFps_show() = runTest {
var count = 0
val job = underTest.shouldUpdateSideFps.onEach { count++ }.launchIn(this)
repository.setPrimaryShow(true)
@@ -103,6 +103,18 @@ class KeyguardBouncerViewModelTest : SysuiTestCase() {
job.cancel()
}
@Test
fun shouldUpdateSideFps_hide() = runTest {
repository.setPrimaryShow(true)
var count = 0
val job = underTest.shouldUpdateSideFps.onEach { count++ }.launchIn(this)
repository.setPrimaryShow(false)
// Run the tasks that are pending at this point of virtual time.
runCurrent()
assertThat(count).isEqualTo(1)
job.cancel()
}
@Test
fun sideFpsShowing() = runTest {
var sideFpsIsShowing = false