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

Commit 27d2723c authored by Bharat Singh's avatar Bharat Singh Committed by Android (Google) Code Review
Browse files

Merge "[Flexiglass] Fix DeviceEntryIcon background's alpha being shown as...

Merge "[Flexiglass] Fix DeviceEntryIcon background's alpha being shown as white circle on AOD" into main
parents f24b311a 9c9d15ca
Loading
Loading
Loading
Loading
+20 −2
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.systemui.keyguard.ui.viewmodel
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.compose.animation.scene.ObservableTransitionState
import com.android.compose.animation.scene.SceneKey
import com.android.systemui.SysuiTestCase
import com.android.systemui.coroutines.collectValues
import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository
@@ -25,8 +26,14 @@ import com.android.systemui.keyguard.shared.model.KeyguardState
import com.android.systemui.keyguard.shared.model.TransitionState
import com.android.systemui.keyguard.shared.model.TransitionState.RUNNING
import com.android.systemui.keyguard.shared.model.TransitionStep
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.collectValues
import com.android.systemui.kosmos.runTest
import com.android.systemui.kosmos.testScope
import com.android.systemui.scene.data.repository.Transition
import com.android.systemui.scene.data.repository.sceneContainerRepository
import com.android.systemui.scene.data.repository.setSceneTransition
import com.android.systemui.scene.shared.flag.SceneContainerFlag
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
@@ -50,13 +57,13 @@ class DozingToDreamingTransitionViewModelTest : SysuiTestCase() {
                ObservableTransitionState.Idle(Scenes.Lockscreen)
            )
        )
        kosmos.setupSceneTransition(from = Scenes.Lockscreen, to = Scenes.Dream)
    }

    @Test
    fun deviceEntryParentViewDisappear() =
        testScope.runTest {
            val values by collectValues(underTest.deviceEntryParentViewAlpha)

            kosmos.fakeKeyguardTransitionRepository.sendTransitionSteps(
                listOf(
                    step(0f, TransitionState.STARTED),
@@ -75,9 +82,20 @@ class DozingToDreamingTransitionViewModelTest : SysuiTestCase() {
    private fun step(value: Float, transitionState: TransitionState = RUNNING) =
        TransitionStep(
            from = KeyguardState.DOZING,
            to = KeyguardState.DREAMING,
            to =
                if (SceneContainerFlag.isEnabled) {
                    KeyguardState.UNDEFINED
                } else {
                    KeyguardState.DREAMING
                },
            value = value,
            transitionState = transitionState,
            ownerName = "dozingToDreamingTransitionViewModelTest",
        )

    private fun Kosmos.setupSceneTransition(from: SceneKey, to: SceneKey) {
        if (SceneContainerFlag.isEnabled) {
            setSceneTransition(Transition(from = from, to = to))
        }
    }
}
+35 −15
Original line number Diff line number Diff line
@@ -23,7 +23,11 @@ import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor
import com.android.systemui.keyguard.shared.model.KeyguardState
import com.android.systemui.scene.domain.interactor.SceneInteractor
import com.android.systemui.scene.shared.flag.SceneContainerFlag
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.shade.ShadeDisplayAware
import dagger.Lazy
import javax.inject.Inject
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flatMapLatest
@@ -62,6 +66,7 @@ constructor(
    lockscreenToDozingTransitionViewModel: LockscreenToDozingTransitionViewModel,
    glanceableHubToAodTransitionViewModel: GlanceableHubToAodTransitionViewModel,
    glanceableHubToLockscreenTransitionViewModel: GlanceableHubToLockscreenTransitionViewModel,
    private val sceneInteractor: Lazy<SceneInteractor>,
) {
    val color: Flow<Int> =
        deviceEntryIconViewModel.useBackgroundProtection.flatMapLatest { useBackground ->
@@ -113,9 +118,19 @@ constructor(
                    )
                    .merge()
                    .onStart {
                        when (
                        emit(
                            calculateDeviceEntryIconBackgroundAlpha(
                                keyguardTransitionInteractor.currentKeyguardState.replayCache.last()
                        ) {
                            )
                        )
                    }
            } else {
                flowOf(0f)
            }
        }

    private fun calculateDeviceEntryIconBackgroundAlpha(state: KeyguardState): Float {
        return when (state) {
            KeyguardState.GLANCEABLE_HUB,
            KeyguardState.GONE,
            KeyguardState.OCCLUDED,
@@ -123,14 +138,19 @@ constructor(
            KeyguardState.DOZING,
            KeyguardState.DREAMING,
            KeyguardState.PRIMARY_BOUNCER,
                            KeyguardState.AOD -> emit(0f)
                            KeyguardState.UNDEFINED,
            KeyguardState.AOD -> 0f
            KeyguardState.ALTERNATE_BOUNCER,
                            KeyguardState.LOCKSCREEN -> emit(1f)
                        }
            KeyguardState.LOCKSCREEN -> 1f
            KeyguardState.UNDEFINED ->
                if (SceneContainerFlag.isEnabled) {
                    when (sceneInteractor.get().currentScene.value) {
                        Scenes.Shade,
                        Scenes.QuickSettings -> 1f
                        else -> 0f
                    }
                } else {
                flowOf(0f)
                    1f
                }
        }
    }
}
+7 −4
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import com.android.systemui.keyguard.shared.model.KeyguardState.DOZING
import com.android.systemui.keyguard.shared.model.KeyguardState.DREAMING
import com.android.systemui.keyguard.ui.KeyguardTransitionAnimationFlow
import com.android.systemui.keyguard.ui.transitions.DeviceEntryIconTransition
import com.android.systemui.scene.shared.model.Scenes
import javax.inject.Inject
import kotlinx.coroutines.flow.Flow

@@ -34,10 +35,12 @@ class DozingToDreamingTransitionViewModel
@Inject
constructor(animationFlow: KeyguardTransitionAnimationFlow) : DeviceEntryIconTransition {
    private val transitionAnimation =
        animationFlow.setup(
        animationFlow
            .setup(
                duration = TO_DREAMING_DURATION,
            edge = Edge.create(from = DOZING, to = DREAMING),
                edge = Edge.create(from = DOZING, to = Scenes.Dream),
            )
            .setupWithoutSceneContainer(edge = Edge.create(from = DOZING, to = DREAMING))

    val lockscreenAlpha: Flow<Float> = transitionAnimation.immediatelyTransitionTo(0f)

+8 −8
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import com.android.systemui.keyguard.shared.model.KeyguardState.AOD
import com.android.systemui.keyguard.shared.model.KeyguardState.DREAMING
import com.android.systemui.keyguard.ui.KeyguardTransitionAnimationFlow
import com.android.systemui.keyguard.ui.transitions.DeviceEntryIconTransition
import com.android.systemui.scene.shared.model.Scenes
import javax.inject.Inject
import kotlin.time.Duration.Companion.milliseconds
import kotlinx.coroutines.flow.Flow
@@ -39,17 +40,16 @@ constructor(
    animationFlow: KeyguardTransitionAnimationFlow,
) : DeviceEntryIconTransition {
    private val transitionAnimation =
        animationFlow.setup(
        animationFlow
            .setup(
                duration = FromDreamingTransitionInteractor.TO_AOD_DURATION,
            edge = Edge.create(from = DREAMING, to = AOD),
                edge = Edge.create(from = Scenes.Dream, to = AOD),
            )
            .setupWithoutSceneContainer(edge = Edge.create(from = DREAMING, to = AOD))

    /** Lockscreen views alpha */
    val lockscreenAlpha: Flow<Float> =
        transitionAnimation.sharedFlow(
            duration = 300.milliseconds,
            onStep = { it },
        )
        transitionAnimation.sharedFlow(duration = 300.milliseconds, onStep = { it })

    val deviceEntryBackgroundViewAlpha: Flow<Float> =
        transitionAnimation.immediatelyTransitionTo(0f)
+2 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import com.android.systemui.common.ui.domain.interactor.configurationInteractor
import com.android.systemui.keyguard.domain.interactor.keyguardTransitionInteractor
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.Kosmos.Fixture
import com.android.systemui.scene.domain.interactor.sceneInteractor

val Kosmos.deviceEntryBackgroundViewModel by Fixture {
    DeviceEntryBackgroundViewModel(
@@ -49,5 +50,6 @@ val Kosmos.deviceEntryBackgroundViewModel by Fixture {
        lockscreenToDozingTransitionViewModel = lockscreenToDozingTransitionViewModel,
        glanceableHubToAodTransitionViewModel = glanceableHubToAodTransitionViewModel,
        glanceableHubToLockscreenTransitionViewModel = glanceableHubToLockscreenTransitionViewModel,
        sceneInteractor = { sceneInteractor },
    )
}