From cb59b0b7f40912a134e525131fa097c33bf19505 Mon Sep 17 00:00:00 2001 From: Florence Yang Date: Tue, 15 Nov 2022 00:51:13 +0000 Subject: [PATCH] Fix Color Clock on AOD When region sampling text protection was enabled, AOD clock was changing from white clock to lockscreen's colored clock because animateAppearOnLockscreen() was being triggered by onRegionDarknessChanged(). To remedy this, we now ensure that animateAppearOnLockscreen() cannot be called when animation doze state is active (AOD mode). Since animateDoze() already handles the clock color change when going from lockscreen to AOD mode, there is no need for animateAppearOnLockscreen() to be called since the clock color never changes in AOD mode. Test: atest test_aodClock_always_whiteColor Fixes: 258852242 Change-Id: I45484db37c7a728b1c71eacd8c162b580e59f820 --- .../systemui/shared/clocks/DefaultClockController.kt | 8 +++++--- .../systemui/shared/clocks/DefaultClockProviderTest.kt | 9 +++++++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/clocks/DefaultClockController.kt b/packages/SystemUI/shared/src/com/android/systemui/shared/clocks/DefaultClockController.kt index ca780c8dd3c91..1bfaf1d83863c 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/clocks/DefaultClockController.kt +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/clocks/DefaultClockController.kt @@ -128,7 +128,9 @@ class DefaultClockController( currentColor = color view.setColors(DOZE_COLOR, color) - view.animateAppearOnLockscreen() + if (!animations.dozeState.isActive) { + view.animateAppearOnLockscreen() + } } } @@ -188,7 +190,7 @@ class DefaultClockController( dozeFraction: Float, foldFraction: Float, ) : ClockAnimations { - private val dozeState = AnimationState(dozeFraction) + internal val dozeState = AnimationState(dozeFraction) private val foldState = AnimationState(foldFraction) init { @@ -229,7 +231,7 @@ class DefaultClockController( get() = true } - private class AnimationState( + class AnimationState( var fraction: Float, ) { var isActive: Boolean = fraction > 0.5f diff --git a/packages/SystemUI/tests/src/com/android/systemui/shared/clocks/DefaultClockProviderTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shared/clocks/DefaultClockProviderTest.kt index 539a54b731ec7..cf182b790c391 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/shared/clocks/DefaultClockProviderTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/shared/clocks/DefaultClockProviderTest.kt @@ -43,6 +43,7 @@ import org.mockito.ArgumentMatchers.anyFloat import org.mockito.ArgumentMatchers.anyInt import org.mockito.ArgumentMatchers.notNull import org.mockito.Mock +import org.mockito.Mockito.never import org.mockito.Mockito.times import org.mockito.Mockito.verify import org.mockito.Mockito.`when` as whenever @@ -171,4 +172,12 @@ class DefaultClockProviderTest : SysuiTestCase() { verify(mockSmallClockView, times(2)).refreshFormat() verify(mockLargeClockView, times(2)).refreshFormat() } + + @Test + fun test_aodClock_always_whiteColor() { + val clock = provider.createClock(DEFAULT_CLOCK_ID) + clock.animations.doze(0.9f) // set AOD mode to active + clock.smallClock.events.onRegionDarknessChanged(true) + verify((clock.smallClock.view as AnimatableClockView), never()).animateAppearOnLockscreen() + } }