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

Commit 3ee763ea authored by Beverly Tai's avatar Beverly Tai Committed by Automerger Merge Worker
Browse files

Merge "Quick pickup triggers AOD2 instead of AOD1" into sc-dev am: 196f7457

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15029247

Change-Id: I9312217988e5e601ef226d98389c1245fe995762
parents ceeb8061 196f7457
Loading
Loading
Loading
Loading
+6 −45
Original line number Original line Diff line number Diff line
@@ -71,7 +71,6 @@ public class DozeTriggers implements DozeMachine.Part {
     * Assuming that the screen should start on.
     * Assuming that the screen should start on.
     */
     */
    private static boolean sWakeDisplaySensorState = true;
    private static boolean sWakeDisplaySensorState = true;
    private Runnable mQuickPickupDozeCancellable;


    private static final int PROXIMITY_TIMEOUT_DELAY_MS = 500;
    private static final int PROXIMITY_TIMEOUT_DELAY_MS = 500;


@@ -279,14 +278,14 @@ public class DozeTriggers implements DozeMachine.Part {
        boolean isWakeDisplayEvent = isQuickPickup || ((isWakeOnPresence || isWakeOnReach)
        boolean isWakeDisplayEvent = isQuickPickup || ((isWakeOnPresence || isWakeOnReach)
                && rawValues != null && rawValues.length > 0 && rawValues[0] != 0);
                && rawValues != null && rawValues.length > 0 && rawValues[0] != 0);


        if (isWakeOnPresence || isQuickPickup) {
        if (isWakeOnPresence) {
            onWakeScreen(isQuickPickup || isWakeDisplayEvent,
            onWakeScreen(isWakeDisplayEvent,
                    mMachine.isExecutingTransition() ? null : mMachine.getState(),
                    mMachine.isExecutingTransition() ? null : mMachine.getState(),
                    pulseReason);
                    pulseReason);
        } else if (isLongPress) {
        } else if (isLongPress) {
            requestPulse(pulseReason, true /* alreadyPerformedProxCheck */,
            requestPulse(pulseReason, true /* alreadyPerformedProxCheck */,
                    null /* onPulseSuppressedListener */);
                    null /* onPulseSuppressedListener */);
        } else if (isWakeOnReach) {
        } else if (isWakeOnReach || isQuickPickup) {
            if (isWakeDisplayEvent) {
            if (isWakeDisplayEvent) {
                requestPulse(pulseReason, true /* alreadyPerformedProxCheck */,
                requestPulse(pulseReason, true /* alreadyPerformedProxCheck */,
                        null /* onPulseSuppressedListener */);
                        null /* onPulseSuppressedListener */);
@@ -388,11 +387,7 @@ public class DozeTriggers implements DozeMachine.Part {
     */
     */
    private void onWakeScreen(boolean wake, @Nullable DozeMachine.State state, int reason) {
    private void onWakeScreen(boolean wake, @Nullable DozeMachine.State state, int reason) {
        mDozeLog.traceWakeDisplay(wake, reason);
        mDozeLog.traceWakeDisplay(wake, reason);
        final boolean isWakeOnPresence = reason == DozeLog.REASON_SENSOR_WAKE_UP;
        final boolean isQuickPickup = reason == DozeLog.REASON_SENSOR_QUICK_PICKUP;
        if (isWakeOnPresence) {
        sWakeDisplaySensorState = wake;
        sWakeDisplaySensorState = wake;
        }


        if (wake) {
        if (wake) {
            proximityCheckThenCall((result) -> {
            proximityCheckThenCall((result) -> {
@@ -405,27 +400,13 @@ public class DozeTriggers implements DozeMachine.Part {
                    // Log sensor triggered
                    // Log sensor triggered
                    Optional.ofNullable(DozingUpdateUiEvent.fromReason(reason))
                    Optional.ofNullable(DozingUpdateUiEvent.fromReason(reason))
                            .ifPresent(mUiEventLogger::log);
                            .ifPresent(mUiEventLogger::log);

                    if (isQuickPickup) {
                        // schedule runnable to go back to DOZE
                        onQuickPickup();
                }
                }
                } else if (state == DozeMachine.State.DOZE_AOD && isQuickPickup) {
            }, false /* alreadyPerformedProxCheck */, reason);
                    // elongate time in DOZE_AOD, schedule new runnable to go back to DOZE
                    onQuickPickup();
                }
            }, isQuickPickup /* alreadyPerformedProxCheck */, reason);
        } else {
        } else {
            boolean paused = (state == DozeMachine.State.DOZE_AOD_PAUSED);
            boolean paused = (state == DozeMachine.State.DOZE_AOD_PAUSED);
            boolean pausing = (state == DozeMachine.State.DOZE_AOD_PAUSING);
            boolean pausing = (state == DozeMachine.State.DOZE_AOD_PAUSING);
            boolean pulse = (state == DozeMachine.State.DOZE_REQUEST_PULSE)

                    || (state == DozeMachine.State.DOZE_PULSING)
                    || (state == DozeMachine.State.DOZE_PULSING_BRIGHT);
            boolean docked = (state == DozeMachine.State.DOZE_AOD_DOCKED);
            if (!pausing && !paused) {
            if (!pausing && !paused) {
                if (isQuickPickup && (pulse || docked)) {
                    return;
                }
                mMachine.requestState(DozeMachine.State.DOZE);
                mMachine.requestState(DozeMachine.State.DOZE);
                // log wake timeout
                // log wake timeout
                mUiEventLogger.log(DozingUpdateUiEvent.DOZING_UPDATE_WAKE_TIMEOUT);
                mUiEventLogger.log(DozingUpdateUiEvent.DOZING_UPDATE_WAKE_TIMEOUT);
@@ -433,15 +414,6 @@ public class DozeTriggers implements DozeMachine.Part {
        }
        }
    }
    }


    private void onQuickPickup() {
        cancelQuickPickupDelayableDoze();
        mQuickPickupDozeCancellable = mMainExecutor.executeDelayed(() -> {
            onWakeScreen(false,
                    mMachine.isExecutingTransition() ? null : mMachine.getState(),
                    DozeLog.REASON_SENSOR_QUICK_PICKUP);
        }, mDozeParameters.getQuickPickupAodDuration());
    }

    @Override
    @Override
    public void transitionTo(DozeMachine.State oldState, DozeMachine.State newState) {
    public void transitionTo(DozeMachine.State oldState, DozeMachine.State newState) {
        switch (newState) {
        switch (newState) {
@@ -481,7 +453,6 @@ public class DozeTriggers implements DozeMachine.Part {
                mDozeSensors.requestTemporaryDisable();
                mDozeSensors.requestTemporaryDisable();
                break;
                break;
            case FINISH:
            case FINISH:
                cancelQuickPickupDelayableDoze();
                mBroadcastReceiver.unregister(mBroadcastDispatcher);
                mBroadcastReceiver.unregister(mBroadcastDispatcher);
                mDozeHost.removeCallback(mHostCallback);
                mDozeHost.removeCallback(mHostCallback);
                mDockManager.removeListener(mDockEventListener);
                mDockManager.removeListener(mDockEventListener);
@@ -510,16 +481,6 @@ public class DozeTriggers implements DozeMachine.Part {
        }
        }
    }
    }


    /**
     * Cancels last scheduled Runnable that transitions to STATE_DOZE (blank screen) after
     * going into STATE_AOD (AOD screen) from the quick pickup gesture.
     */
    private void cancelQuickPickupDelayableDoze() {
        if (mQuickPickupDozeCancellable != null) {
            mQuickPickupDozeCancellable.run();
            mQuickPickupDozeCancellable = null;
        }
    }


    private void checkTriggersAtInit() {
    private void checkTriggersAtInit() {
        if (mUiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_CAR
        if (mUiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_CAR
+2 −21
Original line number Original line Diff line number Diff line
@@ -209,32 +209,13 @@ public class DozeTriggersTest extends SysuiTestCase {
        // WHEN quick pick up is triggered
        // WHEN quick pick up is triggered
        mTriggers.onSensor(DozeLog.REASON_SENSOR_QUICK_PICKUP, 100, 100, null);
        mTriggers.onSensor(DozeLog.REASON_SENSOR_QUICK_PICKUP, 100, 100, null);


        // THEN device goes into aod (shows clock with black background)
        // THEN request pulse
        verify(mMachine).requestState(DOZE_AOD);
        verify(mMachine).requestPulse(anyInt());


        // THEN a log is taken that quick pick up was triggered
        // THEN a log is taken that quick pick up was triggered
        verify(mUiEventLogger).log(DozingUpdateUiEvent.DOZING_UPDATE_QUICK_PICKUP);
        verify(mUiEventLogger).log(DozingUpdateUiEvent.DOZING_UPDATE_QUICK_PICKUP);
    }
    }


    @Test
    public void testQuickPickupTimeOutAfterExecutables() {
        // GIVEN quick pickup is triggered when device is in DOZE
        when(mMachine.getState()).thenReturn(DozeMachine.State.DOZE);
        mTriggers.onSensor(DozeLog.REASON_SENSOR_QUICK_PICKUP, 100, 100, null);
        verify(mMachine).requestState(DOZE_AOD);
        verify(mMachine, never()).requestState(DozeMachine.State.DOZE);

        // WHEN next executable is run
        mExecutor.advanceClockToLast();
        mExecutor.runAllReady();

        // THEN device goes back into DOZE
        verify(mMachine).requestState(DozeMachine.State.DOZE);

        // THEN a log is taken that wake up timeout expired
        verify(mUiEventLogger).log(DozingUpdateUiEvent.DOZING_UPDATE_WAKE_TIMEOUT);
    }

    @Test
    @Test
    public void testOnSensor_Fingerprint() {
    public void testOnSensor_Fingerprint() {
        // GIVEN dozing state
        // GIVEN dozing state