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

Commit 47ec040a authored by Matt Pietal's avatar Matt Pietal Committed by Android (Google) Code Review
Browse files

Merge "Keyguard Transitions - Add REVERSE option" into main

parents 49119488 cbc9a775
Loading
Loading
Loading
Loading
+9 −14
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.util.Log
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.keyguard.shared.model.KeyguardState
import com.android.systemui.keyguard.shared.model.TransitionInfo
import com.android.systemui.keyguard.shared.model.TransitionModeOnCanceled
import com.android.systemui.keyguard.shared.model.TransitionState
import com.android.systemui.keyguard.shared.model.TransitionStep
import java.util.UUID
@@ -48,8 +49,8 @@ import kotlinx.coroutines.flow.filter
 * [TransitionInteractor]. These interactors will call [startTransition] and [updateTransition] on
 * this repository.
 *
 * To print all transitions to logcat to help with debugging, run this command:
 * adb shell settings put global systemui/buffer/KeyguardLog VERBOSE
 * To print all transitions to logcat to help with debugging, run this command: adb shell settings
 * put global systemui/buffer/KeyguardLog VERBOSE
 *
 * This will print all keyguard transitions to logcat with the KeyguardTransitionAuditLogger tag.
 */
@@ -73,11 +74,8 @@ interface KeyguardTransitionRepository {
    /**
     * Begin a transition from one state to another. Transitions are interruptible, and will issue a
     * [TransitionStep] with state = [TransitionState.CANCELED] before beginning the next one.
     *
     * When canceled, there are two options: to continue from the current position of the prior
     * transition, or to reset the position. When [resetIfCanceled] == true, it will do the latter.
     */
    fun startTransition(info: TransitionInfo, resetIfCanceled: Boolean = false): UUID?
    fun startTransition(info: TransitionInfo): UUID?

    /**
     * Allows manual control of a transition. When calling [startTransition], the consumer must pass
@@ -138,10 +136,7 @@ class KeyguardTransitionRepositoryImpl @Inject constructor() : KeyguardTransitio
        )
    }

    override fun startTransition(
        info: TransitionInfo,
        resetIfCanceled: Boolean,
    ): UUID? {
    override fun startTransition(info: TransitionInfo): UUID? {
        if (lastStep.from == info.from && lastStep.to == info.to) {
            Log.i(TAG, "Duplicate call to start the transition, rejecting: $info")
            return null
@@ -149,10 +144,10 @@ class KeyguardTransitionRepositoryImpl @Inject constructor() : KeyguardTransitio
        val startingValue =
            if (lastStep.transitionState != TransitionState.FINISHED) {
                Log.i(TAG, "Transition still active: $lastStep, canceling")
                if (resetIfCanceled) {
                    0f
                } else {
                    lastStep.value
                when (info.modeOnCanceled) {
                    TransitionModeOnCanceled.LAST_VALUE -> lastStep.value
                    TransitionModeOnCanceled.RESET -> 0f
                    TransitionModeOnCanceled.REVERSE -> 1f - lastStep.value
                }
            } else {
                0f
+15 −1
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import com.android.systemui.keyguard.data.repository.KeyguardTransitionRepositor
import com.android.systemui.keyguard.shared.model.BiometricUnlockModel.Companion.isWakeAndUnlock
import com.android.systemui.keyguard.shared.model.DozeStateModel
import com.android.systemui.keyguard.shared.model.KeyguardState
import com.android.systemui.keyguard.shared.model.TransitionModeOnCanceled
import com.android.systemui.util.kotlin.Utils.Companion.toTriple
import com.android.systemui.util.kotlin.sample
import javax.inject.Inject
@@ -65,8 +66,21 @@ constructor(
                )
                .collect { (_, lastStartedStep, occluded) ->
                    if (lastStartedStep.to == KeyguardState.AOD) {
                        startTransitionTo(
                        val toState =
                            if (occluded) KeyguardState.OCCLUDED else KeyguardState.LOCKSCREEN
                        val modeOnCanceled =
                            if (
                                toState == KeyguardState.LOCKSCREEN &&
                                    lastStartedStep.from == KeyguardState.LOCKSCREEN
                            ) {
                                TransitionModeOnCanceled.REVERSE
                            } else {
                                TransitionModeOnCanceled.LAST_VALUE
                            }

                        startTransitionTo(
                            toState = toState,
                            modeOnCanceled = modeOnCanceled,
                        )
                    }
                }
+4 −2
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.keyguard.data.repository.KeyguardTransitionRepository
import com.android.systemui.keyguard.shared.model.KeyguardState
import com.android.systemui.keyguard.shared.model.TransitionModeOnCanceled
import com.android.systemui.power.domain.interactor.PowerInteractor
import com.android.systemui.util.kotlin.Utils.Companion.toTriple
import com.android.systemui.util.kotlin.sample
@@ -114,8 +115,9 @@ constructor(
                .collect { (isAsleep, lastStartedStep, isAodAvailable) ->
                    if (lastStartedStep.to == KeyguardState.GONE && isAsleep) {
                        startTransitionTo(
                            toState =
                                if (isAodAvailable) KeyguardState.AOD else KeyguardState.DOZING,
                            resetIfCancelled = true,
                            modeOnCanceled = TransitionModeOnCanceled.RESET,
                        )
                    }
                }
+14 −1
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import com.android.systemui.keyguard.shared.model.KeyguardState
import com.android.systemui.keyguard.shared.model.KeyguardSurfaceBehindModel
import com.android.systemui.keyguard.shared.model.StatusBarState.KEYGUARD
import com.android.systemui.keyguard.shared.model.TransitionInfo
import com.android.systemui.keyguard.shared.model.TransitionModeOnCanceled
import com.android.systemui.keyguard.shared.model.TransitionState
import com.android.systemui.power.domain.interactor.PowerInteractor
import com.android.systemui.shade.data.repository.ShadeRepository
@@ -340,8 +341,20 @@ constructor(
                )
                .collect { (isAsleep, lastStartedStep, isAodAvailable) ->
                    if (lastStartedStep.to == KeyguardState.LOCKSCREEN && isAsleep) {
                        startTransitionTo(
                        val toState =
                            if (isAodAvailable) KeyguardState.AOD else KeyguardState.DOZING
                        val modeOnCanceled =
                            if (
                                toState == KeyguardState.AOD &&
                                    lastStartedStep.from == KeyguardState.AOD
                            ) {
                                TransitionModeOnCanceled.REVERSE
                            } else {
                                TransitionModeOnCanceled.LAST_VALUE
                            }
                        startTransitionTo(
                            toState = toState,
                            modeOnCanceled = modeOnCanceled,
                        )
                    }
                }
+2 −1
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import com.android.systemui.flags.Flags
import com.android.systemui.keyguard.data.repository.KeyguardTransitionRepository
import com.android.systemui.keyguard.shared.model.KeyguardState
import com.android.systemui.keyguard.shared.model.KeyguardSurfaceBehindModel
import com.android.systemui.keyguard.shared.model.TransitionModeOnCanceled
import com.android.systemui.power.domain.interactor.PowerInteractor
import com.android.systemui.user.domain.interactor.SelectedUserInteractor
import com.android.systemui.util.kotlin.Utils.Companion.toQuad
@@ -236,7 +237,7 @@ constructor(
                                getDefaultAnimatorForTransitionsToState(KeyguardState.GONE).apply {
                                    this.duration = duration.inWholeMilliseconds
                                },
                            resetIfCancelled = true
                            modeOnCanceled = TransitionModeOnCanceled.RESET,
                        )
                    }
                }
Loading