diff options
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/unfold/FoldAodAnimationController.kt | 11 | ||||
| -rw-r--r-- | packages/SystemUI/tests/src/com/android/systemui/unfold/FoldAodAnimationControllerTest.kt | 25 |
2 files changed, 32 insertions, 4 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/unfold/FoldAodAnimationController.kt b/packages/SystemUI/src/com/android/systemui/unfold/FoldAodAnimationController.kt index 641cc45e01d8..29f67188d59d 100644 --- a/packages/SystemUI/src/com/android/systemui/unfold/FoldAodAnimationController.kt +++ b/packages/SystemUI/src/com/android/systemui/unfold/FoldAodAnimationController.kt @@ -150,10 +150,6 @@ constructor( pendingScrimReadyCallback = onReady } } else if (isFolded && !isFoldHandled && alwaysOnEnabled && isDozing) { - // Screen turning on for the first time after folding and we are already dozing - // We should play the folding to AOD animation - isFoldHandled = true - setAnimationState(playing = true) centralSurfaces.notificationPanelViewController.prepareFoldToAodAnimation() @@ -169,6 +165,13 @@ constructor( // No animation, call ready callback immediately onReady.run() } + + if (isFolded) { + // Any time the screen turns on, this state needs to be reset if the device has been + // folded. Reaching this line implies AOD has been shown in one way or another, + // if enabled + isFoldHandled = true + } } /** Called when keyguard scrim opaque changed */ diff --git a/packages/SystemUI/tests/src/com/android/systemui/unfold/FoldAodAnimationControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/unfold/FoldAodAnimationControllerTest.kt index 7f64867d3868..f788229ddcfd 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/unfold/FoldAodAnimationControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/unfold/FoldAodAnimationControllerTest.kt @@ -198,6 +198,31 @@ class FoldAodAnimationControllerTest : SysuiTestCase() { } @Test + fun onFolded_onScreenTurningOnWithoutDozingThenWithDozing_doesNotLogLatency() = + runBlocking(IMMEDIATE) { + val job = underTest.listenForDozing(this) + keyguardRepository.setDozing(false) + setAodEnabled(enabled = true) + + yield() + + fold() + simulateScreenTurningOn() + reset(latencyTracker) + + // Now enable dozing and trigger a second run through the aod animation code. It should + // not rerun the animation + keyguardRepository.setDozing(true) + yield() + simulateScreenTurningOn() + + verify(latencyTracker, never()).onActionStart(any()) + verify(latencyTracker, never()).onActionEnd(any()) + + job.cancel() + } + + @Test fun onFolded_animationCancelled_doesNotLogLatency() = runBlocking(IMMEDIATE) { val job = underTest.listenForDozing(this) |