Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 133bb9d5 authored by Beverly's avatar Beverly Committed by Beverly Tai
Browse files

[flexiglass] Immediately apply doze display states

Temporary fix that doesn't rely on the scrim controller to update
before sending the display request.

Bug: 433477971
Fixes: 427899033
Test: atest DozeScreenStateTest
Test: enable sceneContainer flag; enable
AoD; block prox sensor for 10s+; observe display
turns off
Flag: com.android.systemui.scene_container

Change-Id: I8fbf7a1c7b59890241b56e6fe6e4ecdc4a22b46f
parent 6280ac14
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -50,6 +50,8 @@ import androidx.test.runner.AndroidJUnit4;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.biometrics.AuthController;
import com.android.systemui.biometrics.UdfpsController;
import com.android.systemui.flags.DisableSceneContainer;
import com.android.systemui.flags.EnableSceneContainer;
import com.android.systemui.keyguard.domain.interactor.DozeInteractor;
import com.android.systemui.statusbar.phone.DozeParameters;
import com.android.systemui.user.domain.interactor.SelectedUserInteractor;
@@ -230,6 +232,7 @@ public class DozeScreenStateTest extends SysuiTestCase {
    }

    @Test
    @DisableSceneContainer
    public void test_animatesPausing() {
        ArgumentCaptor<Runnable> captor = ArgumentCaptor.forClass(Runnable.class);
        doAnswer(invocation -> null).when(mDozeHost).prepareForGentleSleep(captor.capture());
@@ -246,6 +249,7 @@ public class DozeScreenStateTest extends SysuiTestCase {
    }

    @Test
    @DisableSceneContainer
    public void test_animatesOff() {
        ArgumentCaptor<Runnable> captor = ArgumentCaptor.forClass(Runnable.class);
        doAnswer(invocation -> null).when(mDozeHost).prepareForGentleSleep(captor.capture());
@@ -261,6 +265,19 @@ public class DozeScreenStateTest extends SysuiTestCase {
        assertEquals(Display.STATE_OFF, mServiceFake.screenState);
    }

    @Test
    @EnableSceneContainer
    public void aodPausedDisplayOff() {
        mHandlerFake.setMode(QUEUEING);

        mScreen.transitionTo(UNINITIALIZED, INITIALIZED);
        mScreen.transitionTo(INITIALIZED, DOZE_AOD_PAUSING);
        mScreen.transitionTo(DOZE_AOD_PAUSING, DOZE_AOD_PAUSED);

        mHandlerFake.dispatchQueuedMessages();
        assertEquals(Display.STATE_OFF, mServiceFake.screenState);
    }

    @Test
    public void testDelayEnterDozeScreenState_whenUdfpsFingerDown() {
        // GIVEN AOD is initialized
+7 −2
Original line number Diff line number Diff line
@@ -36,8 +36,9 @@ import com.android.systemui.biometrics.UdfpsController;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.doze.dagger.DozeScope;
import com.android.systemui.doze.dagger.WrappedService;
import com.android.systemui.statusbar.phone.DozeParameters;
import com.android.systemui.keyguard.domain.interactor.DozeInteractor;
import com.android.systemui.scene.shared.flag.SceneContainerFlag;
import com.android.systemui.statusbar.phone.DozeParameters;
import com.android.systemui.user.domain.interactor.SelectedUserInteractor;
import com.android.systemui.util.wakelock.SettableWakeLock;
import com.android.systemui.util.wakelock.WakeLock;
@@ -208,7 +209,11 @@ public class DozeScreenState implements DozeMachine.Part {
                mWakeLock.setAcquired(true);
            }
        } else if (turningOff) {
            if (SceneContainerFlag.isEnabled()) {
                applyScreenState(screenState);
            } else {
                mDozeHost.prepareForGentleSleep(() -> applyScreenState(screenState));
            }
        } else {
            applyScreenState(screenState);
        }