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

Commit 3f62917a authored by Andreas Miko's avatar Andreas Miko Committed by Android (Google) Code Review
Browse files

Merge "[KTF integration] Fix surfaceBehindVisibility" into main

parents ba89d985 8f1414d1
Loading
Loading
Loading
Loading
+11 −11
Original line number Original line Diff line number Diff line
@@ -26,8 +26,11 @@ import com.android.systemui.keyguard.KeyguardWmStateRefactor
import com.android.systemui.keyguard.data.repository.KeyguardTransitionRepository
import com.android.systemui.keyguard.data.repository.KeyguardTransitionRepository
import com.android.systemui.keyguard.shared.model.Edge
import com.android.systemui.keyguard.shared.model.Edge
import com.android.systemui.keyguard.shared.model.KeyguardState
import com.android.systemui.keyguard.shared.model.KeyguardState
import com.android.systemui.keyguard.shared.model.TransitionStep
import com.android.systemui.power.domain.interactor.PowerInteractor
import com.android.systemui.power.domain.interactor.PowerInteractor
import com.android.systemui.scene.shared.flag.SceneContainerFlag
import com.android.systemui.scene.shared.flag.SceneContainerFlag
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.util.kotlin.Utils.Companion.sample as sampleCombine
import com.android.wm.shell.animation.Interpolators
import com.android.wm.shell.animation.Interpolators
import javax.inject.Inject
import javax.inject.Inject
import kotlin.time.Duration.Companion.milliseconds
import kotlin.time.Duration.Companion.milliseconds
@@ -36,7 +39,6 @@ import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.delay
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.emptyFlow
import kotlinx.coroutines.flow.emptyFlow
import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.flow.filter
@@ -46,7 +48,6 @@ import kotlinx.coroutines.flow.merge
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.flow.onStart
import kotlinx.coroutines.flow.onStart
import kotlinx.coroutines.launch
import kotlinx.coroutines.launch
import com.android.systemui.util.kotlin.Utils.Companion.sample as sampleCombine


@ExperimentalCoroutinesApi
@ExperimentalCoroutinesApi
@SysUISingleton
@SysUISingleton
@@ -82,17 +83,16 @@ constructor(
    }
    }


    val surfaceBehindVisibility: Flow<Boolean?> =
    val surfaceBehindVisibility: Flow<Boolean?> =
        combine(
        transitionInteractor
                transitionInteractor.startedKeyguardTransitionStep,
            .transition(
                transitionInteractor.transition(Edge.create(from = KeyguardState.ALTERNATE_BOUNCER))
                edge = Edge.create(from = KeyguardState.ALTERNATE_BOUNCER, to = Scenes.Gone),
            ) { startedStep, fromBouncerStep ->
                edgeWithoutSceneContainer =
                if (startedStep.to != KeyguardState.GONE) {
                    Edge.create(from = KeyguardState.ALTERNATE_BOUNCER, to = KeyguardState.GONE)
                    return@combine null
            )
                }
            .map<TransitionStep, Boolean?> {

                // The alt bouncer is pretty fast to hide, so start the surface behind animation
                // The alt bouncer is pretty fast to hide, so start the surface behind animation
                // around 30%.
                // around 30%.
                fromBouncerStep.value > 0.3f
                it.value > 0.3f
            }
            }
            .onStart {
            .onStart {
                // Default to null ("don't care, use a reasonable default").
                // Default to null ("don't care, use a reasonable default").
+10 −10
Original line number Original line Diff line number Diff line
@@ -24,16 +24,18 @@ import com.android.systemui.Flags
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.flags.FeatureFlags
import com.android.systemui.keyguard.KeyguardWmStateRefactor
import com.android.systemui.keyguard.KeyguardWmStateRefactor
import com.android.systemui.keyguard.data.repository.KeyguardTransitionRepository
import com.android.systemui.keyguard.data.repository.KeyguardTransitionRepository
import com.android.systemui.keyguard.shared.model.Edge
import com.android.systemui.keyguard.shared.model.KeyguardState
import com.android.systemui.keyguard.shared.model.KeyguardState
import com.android.systemui.keyguard.shared.model.StatusBarState.KEYGUARD
import com.android.systemui.keyguard.shared.model.StatusBarState.KEYGUARD
import com.android.systemui.keyguard.shared.model.TransitionInfo
import com.android.systemui.keyguard.shared.model.TransitionInfo
import com.android.systemui.keyguard.shared.model.TransitionModeOnCanceled
import com.android.systemui.keyguard.shared.model.TransitionModeOnCanceled
import com.android.systemui.keyguard.shared.model.TransitionState
import com.android.systemui.keyguard.shared.model.TransitionState
import com.android.systemui.keyguard.shared.model.TransitionStep
import com.android.systemui.power.domain.interactor.PowerInteractor
import com.android.systemui.power.domain.interactor.PowerInteractor
import com.android.systemui.scene.shared.flag.SceneContainerFlag
import com.android.systemui.scene.shared.flag.SceneContainerFlag
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.shade.data.repository.ShadeRepository
import com.android.systemui.shade.data.repository.ShadeRepository
import com.android.systemui.util.kotlin.Utils.Companion.sample as sampleCombine
import com.android.systemui.util.kotlin.Utils.Companion.sample as sampleCombine
import java.util.UUID
import java.util.UUID
@@ -59,7 +61,6 @@ constructor(
    @Background bgDispatcher: CoroutineDispatcher,
    @Background bgDispatcher: CoroutineDispatcher,
    @Main mainDispatcher: CoroutineDispatcher,
    @Main mainDispatcher: CoroutineDispatcher,
    keyguardInteractor: KeyguardInteractor,
    keyguardInteractor: KeyguardInteractor,
    private val flags: FeatureFlags,
    private val shadeRepository: ShadeRepository,
    private val shadeRepository: ShadeRepository,
    powerInteractor: PowerInteractor,
    powerInteractor: PowerInteractor,
    private val glanceableHubTransitions: GlanceableHubTransitions,
    private val glanceableHubTransitions: GlanceableHubTransitions,
@@ -97,14 +98,13 @@ constructor(
     * LOCKSCREEN is running.
     * LOCKSCREEN is running.
     */
     */
    val surfaceBehindVisibility: Flow<Boolean?> =
    val surfaceBehindVisibility: Flow<Boolean?> =
        transitionInteractor.startedKeyguardTransitionStep
        transitionInteractor
            .map { startedStep ->
            .transition(
                if (startedStep.to != KeyguardState.GONE) {
                edge = Edge.create(from = KeyguardState.LOCKSCREEN, to = Scenes.Gone),
                    // LOCKSCREEN to anything but GONE does not require any special surface
                edgeWithoutSceneContainer =
                    // visibility handling.
                    Edge.create(from = KeyguardState.LOCKSCREEN, to = KeyguardState.GONE)
                    return@map null
            )
                }
            .map<TransitionStep, Boolean?> {

                true // Make the surface visible during LS -> GONE transitions.
                true // Make the surface visible during LS -> GONE transitions.
            }
            }
            .onStart {
            .onStart {
+20 −20
Original line number Original line Diff line number Diff line
@@ -22,15 +22,14 @@ import com.android.systemui.communal.domain.interactor.CommunalInteractor
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.flags.FeatureFlags
import com.android.systemui.keyguard.KeyguardWmStateRefactor
import com.android.systemui.keyguard.KeyguardWmStateRefactor
import com.android.systemui.keyguard.data.repository.KeyguardTransitionRepository
import com.android.systemui.keyguard.data.repository.KeyguardTransitionRepository
import com.android.systemui.keyguard.shared.model.Edge
import com.android.systemui.keyguard.shared.model.Edge
import com.android.systemui.keyguard.shared.model.KeyguardState
import com.android.systemui.keyguard.shared.model.KeyguardState
import com.android.systemui.keyguard.shared.model.TransitionModeOnCanceled
import com.android.systemui.keyguard.shared.model.TransitionModeOnCanceled
import com.android.systemui.keyguard.shared.model.TransitionStep
import com.android.systemui.power.domain.interactor.PowerInteractor
import com.android.systemui.power.domain.interactor.PowerInteractor
import com.android.systemui.scene.shared.flag.SceneContainerFlag
import com.android.systemui.scene.shared.flag.SceneContainerFlag
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.user.domain.interactor.SelectedUserInteractor
import com.android.systemui.user.domain.interactor.SelectedUserInteractor
import com.android.systemui.util.kotlin.Utils.Companion.sample
import com.android.systemui.util.kotlin.Utils.Companion.sample
import com.android.systemui.util.kotlin.sample
import com.android.systemui.util.kotlin.sample
@@ -40,8 +39,9 @@ import kotlin.time.Duration.Companion.milliseconds
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.onStart
import kotlinx.coroutines.flow.onStart
import kotlinx.coroutines.launch
import kotlinx.coroutines.launch


@@ -56,7 +56,6 @@ constructor(
    @Main mainDispatcher: CoroutineDispatcher,
    @Main mainDispatcher: CoroutineDispatcher,
    keyguardInteractor: KeyguardInteractor,
    keyguardInteractor: KeyguardInteractor,
    private val communalInteractor: CommunalInteractor,
    private val communalInteractor: CommunalInteractor,
    private val flags: FeatureFlags,
    private val keyguardSecurityModel: KeyguardSecurityModel,
    private val keyguardSecurityModel: KeyguardSecurityModel,
    private val selectedUserInteractor: SelectedUserInteractor,
    private val selectedUserInteractor: SelectedUserInteractor,
    powerInteractor: PowerInteractor,
    powerInteractor: PowerInteractor,
@@ -81,24 +80,25 @@ constructor(
    }
    }


    val surfaceBehindVisibility: Flow<Boolean?> =
    val surfaceBehindVisibility: Flow<Boolean?> =
        combine(
        if (SceneContainerFlag.isEnabled) {
                transitionInteractor.startedKeyguardTransitionStep,
            // The edge Scenes.Bouncer <-> Scenes.Gone is handled by STL
                transitionInteractor.transition(
            flowOf(null)
                    edge = Edge.create(from = Scenes.Bouncer),
        } else {
                    edgeWithoutSceneContainer = Edge.create(from = KeyguardState.PRIMARY_BOUNCER)
            transitionInteractor
                .transition(
                    edge = Edge.INVALID,
                    edgeWithoutSceneContainer =
                        Edge.create(from = KeyguardState.PRIMARY_BOUNCER, to = KeyguardState.GONE)
                )
                )
            ) { startedStep, fromBouncerStep ->
                .map<TransitionStep, Boolean?> {
                if (startedStep.to != KeyguardState.GONE) {
                    it.value > TO_GONE_SURFACE_BEHIND_VISIBLE_THRESHOLD
                    return@combine null
                }

                fromBouncerStep.value > TO_GONE_SURFACE_BEHIND_VISIBLE_THRESHOLD
                }
                }
                .onStart {
                .onStart {
                    // Default to null ("don't care, use a reasonable default").
                    // Default to null ("don't care, use a reasonable default").
                    emit(null)
                    emit(null)
                }
                }
                .distinctUntilChanged()
                .distinctUntilChanged()
        }


    fun dismissPrimaryBouncer() {
    fun dismissPrimaryBouncer() {
        scope.launch { startTransitionTo(KeyguardState.GONE) }
        scope.launch { startTransitionTo(KeyguardState.GONE) }
+0 −2
Original line number Original line Diff line number Diff line
@@ -16,7 +16,6 @@


package com.android.systemui.keyguard.domain.interactor
package com.android.systemui.keyguard.domain.interactor


import com.android.systemui.flags.featureFlagsClassic
import com.android.systemui.keyguard.data.repository.keyguardTransitionRepository
import com.android.systemui.keyguard.data.repository.keyguardTransitionRepository
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.applicationCoroutineScope
import com.android.systemui.kosmos.applicationCoroutineScope
@@ -34,7 +33,6 @@ var Kosmos.fromLockscreenTransitionInteractor by
            bgDispatcher = testDispatcher,
            bgDispatcher = testDispatcher,
            mainDispatcher = testDispatcher,
            mainDispatcher = testDispatcher,
            keyguardInteractor = keyguardInteractor,
            keyguardInteractor = keyguardInteractor,
            flags = featureFlagsClassic,
            shadeRepository = shadeRepository,
            shadeRepository = shadeRepository,
            powerInteractor = powerInteractor,
            powerInteractor = powerInteractor,
            glanceableHubTransitions = glanceableHubTransitions,
            glanceableHubTransitions = glanceableHubTransitions,
+0 −2
Original line number Original line Diff line number Diff line
@@ -18,7 +18,6 @@ package com.android.systemui.keyguard.domain.interactor


import com.android.keyguard.keyguardSecurityModel
import com.android.keyguard.keyguardSecurityModel
import com.android.systemui.communal.domain.interactor.communalInteractor
import com.android.systemui.communal.domain.interactor.communalInteractor
import com.android.systemui.flags.featureFlagsClassic
import com.android.systemui.keyguard.data.repository.keyguardTransitionRepository
import com.android.systemui.keyguard.data.repository.keyguardTransitionRepository
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.applicationCoroutineScope
import com.android.systemui.kosmos.applicationCoroutineScope
@@ -37,7 +36,6 @@ var Kosmos.fromPrimaryBouncerTransitionInteractor by
            mainDispatcher = testDispatcher,
            mainDispatcher = testDispatcher,
            keyguardInteractor = keyguardInteractor,
            keyguardInteractor = keyguardInteractor,
            communalInteractor = communalInteractor,
            communalInteractor = communalInteractor,
            flags = featureFlagsClassic,
            keyguardSecurityModel = keyguardSecurityModel,
            keyguardSecurityModel = keyguardSecurityModel,
            selectedUserInteractor = selectedUserInteractor,
            selectedUserInteractor = selectedUserInteractor,
            powerInteractor = powerInteractor,
            powerInteractor = powerInteractor,