From ed5634d9d664e2cff0b1ef838cb03af4c1828924 Mon Sep 17 00:00:00 2001 From: Lucas Dupin Date: Mon, 23 Mar 2020 14:52:26 -0700 Subject: [PATCH] Fix display fade-out animation Display was not turning off animated in some occasions, due to a wrong variable being used. Test: atest DozeScreenStateTest Fixes: 152246123 Change-Id: I5e6f32566d74f67476018b01013fc177702311a7 --- .../android/systemui/doze/DozeScreenState.java | 2 +- .../systemui/doze/DozeScreenStateTest.java | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeScreenState.java b/packages/SystemUI/src/com/android/systemui/doze/DozeScreenState.java index e50f1fb2a3ee3..915359374bfe9 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeScreenState.java +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeScreenState.java @@ -92,7 +92,7 @@ public class DozeScreenState implements DozeMachine.Part { final boolean pulseEnding = oldState == DOZE_PULSE_DONE && newState.isAlwaysOn(); final boolean turningOn = (oldState == DOZE_AOD_PAUSED || oldState == DOZE) && newState.isAlwaysOn(); - final boolean turningOff = (newState.isAlwaysOn() && newState == DOZE) + final boolean turningOff = (oldState.isAlwaysOn() && newState == DOZE) || (oldState == DOZE_AOD_PAUSING && newState == DOZE_AOD_PAUSED); final boolean justInitialized = oldState == DozeMachine.State.INITIALIZED; if (messagePending || justInitialized || pulseEnding || turningOn) { diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenStateTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenStateTest.java index e8a3c0ec2e986..41d7fd64fe7a9 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenStateTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenStateTest.java @@ -217,4 +217,20 @@ public class DozeScreenStateTest extends SysuiTestCase { assertEquals(Display.STATE_OFF, mServiceFake.screenState); } + @Test + public void test_animatesOff() { + ArgumentCaptor captor = ArgumentCaptor.forClass(Runnable.class); + doAnswer(invocation -> null).when(mDozeHost).prepareForGentleSleep(captor.capture()); + mHandlerFake.setMode(QUEUEING); + + mScreen.transitionTo(UNINITIALIZED, INITIALIZED); + mScreen.transitionTo(INITIALIZED, DOZE_AOD); + mScreen.transitionTo(DOZE_AOD, DOZE); + + mHandlerFake.dispatchQueuedMessages(); + verify(mDozeHost).prepareForGentleSleep(eq(captor.getValue())); + captor.getValue().run(); + assertEquals(Display.STATE_OFF, mServiceFake.screenState); + } + } \ No newline at end of file