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

Commit 133278bb authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "[flexiglass] Fix issue where AOD doesn't show up when sleeping from OCCLUDED." into main

parents 427bb824 a6afb32c
Loading
Loading
Loading
Loading
+40 −0
Original line number Diff line number Diff line
@@ -25,8 +25,10 @@ import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.flags.DisableSceneContainer
import com.android.systemui.flags.andSceneContainer
import com.android.systemui.keyguard.data.repository.fakeKeyguardClockRepository
import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository
import com.android.systemui.keyguard.data.repository.keyguardOcclusionRepository
import com.android.systemui.keyguard.shared.model.ClockSize
import com.android.systemui.keyguard.shared.model.KeyguardState
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.testScope
import com.android.systemui.lifecycle.activateIn
@@ -236,6 +238,10 @@ class LockscreenContentViewModelTest(flags: FlagsParameterization) : SysuiTestCa
                val isContentVisible by collectLastValue(underTest.isContentVisible)

                keyguardOcclusionRepository.setShowWhenLockedActivityInfo(true, null)
                fakeKeyguardTransitionRepository.transitionTo(
                    KeyguardState.LOCKSCREEN,
                    KeyguardState.OCCLUDED,
                )
                runCurrent()
                assertThat(isContentVisible).isFalse()
            }
@@ -243,15 +249,49 @@ class LockscreenContentViewModelTest(flags: FlagsParameterization) : SysuiTestCa

    @Test
    fun isContentVisible_whenOccluded_notVisible_evenIfShadeShown() =
        with(kosmos) {
            testScope.runTest {
                val isContentVisible by collectLastValue(underTest.isContentVisible)

                keyguardOcclusionRepository.setShowWhenLockedActivityInfo(true, null)
                fakeKeyguardTransitionRepository.transitionTo(
                    KeyguardState.LOCKSCREEN,
                    KeyguardState.OCCLUDED,
                )
                runCurrent()

                sceneInteractor.snapToScene(Scenes.Shade, "")
                runCurrent()
                assertThat(isContentVisible).isFalse()
            }
        }

    @Test
    fun isContentVisible_whenOccluded_notVisibleInOccluded_visibleInAod() =
        with(kosmos) {
            testScope.runTest {
                val isContentVisible by collectLastValue(underTest.isContentVisible)
                keyguardOcclusionRepository.setShowWhenLockedActivityInfo(true, null)
                fakeKeyguardTransitionRepository.transitionTo(
                    KeyguardState.LOCKSCREEN,
                    KeyguardState.OCCLUDED,
                )
                runCurrent()

                sceneInteractor.snapToScene(Scenes.Shade, "")
                runCurrent()
                assertThat(isContentVisible).isFalse()

                fakeKeyguardTransitionRepository.transitionTo(
                    KeyguardState.OCCLUDED,
                    KeyguardState.AOD,
                )
                runCurrent()

                sceneInteractor.snapToScene(Scenes.Lockscreen, "")
                runCurrent()

                assertThat(isContentVisible).isTrue()
            }
        }

+12 −5
Original line number Diff line number Diff line
@@ -24,10 +24,11 @@ import com.android.systemui.customization.R as customR
import com.android.systemui.deviceentry.domain.interactor.DeviceEntryInteractor
import com.android.systemui.keyguard.domain.interactor.KeyguardBlueprintInteractor
import com.android.systemui.keyguard.domain.interactor.KeyguardClockInteractor
import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor
import com.android.systemui.keyguard.shared.model.ClockSize
import com.android.systemui.keyguard.shared.model.KeyguardState
import com.android.systemui.lifecycle.ExclusiveActivatable
import com.android.systemui.res.R
import com.android.systemui.scene.domain.interactor.SceneContainerOcclusionInteractor
import com.android.systemui.shade.domain.interactor.ShadeInteractor
import com.android.systemui.unfold.domain.interactor.UnfoldTransitionInteractor
import dagger.assisted.AssistedFactory
@@ -54,8 +55,8 @@ constructor(
    val touchHandling: KeyguardTouchHandlingViewModel,
    private val shadeInteractor: ShadeInteractor,
    private val unfoldTransitionInteractor: UnfoldTransitionInteractor,
    private val occlusionInteractor: SceneContainerOcclusionInteractor,
    private val deviceEntryInteractor: DeviceEntryInteractor,
    private val transitionInteractor: KeyguardTransitionInteractor,
) : ExclusiveActivatable() {
    @VisibleForTesting val clockSize = clockInteractor.clockSize

@@ -89,9 +90,15 @@ constructor(
            }

            launch {
                occlusionInteractor.isOccludingActivityShown
                    .map { !it }
                    .collect { _isContentVisible.value = it }
                transitionInteractor
                    .transitionValue(KeyguardState.OCCLUDED)
                    .map { it > 0f }
                    .collect { fullyOrPartiallyOccluded ->
                        // Content is visible unless we're OCCLUDED. Currently, we don't have nice
                        // animations into and out of OCCLUDED, so the lockscreen/AOD content is
                        // hidden immediately upon entering/exiting OCCLUDED.
                        _isContentVisible.value = !fullyOrPartiallyOccluded
                    }
            }

            awaitCancellation()
+2 −2
Original line number Diff line number Diff line
@@ -20,8 +20,8 @@ import com.android.systemui.biometrics.authController
import com.android.systemui.deviceentry.domain.interactor.deviceEntryInteractor
import com.android.systemui.keyguard.domain.interactor.keyguardBlueprintInteractor
import com.android.systemui.keyguard.domain.interactor.keyguardClockInteractor
import com.android.systemui.keyguard.domain.interactor.keyguardTransitionInteractor
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.scene.domain.interactor.sceneContainerOcclusionInteractor
import com.android.systemui.shade.domain.interactor.shadeInteractor
import com.android.systemui.unfold.domain.interactor.unfoldTransitionInteractor

@@ -34,7 +34,7 @@ val Kosmos.lockscreenContentViewModel by
            touchHandling = keyguardTouchHandlingViewModel,
            shadeInteractor = shadeInteractor,
            unfoldTransitionInteractor = unfoldTransitionInteractor,
            occlusionInteractor = sceneContainerOcclusionInteractor,
            deviceEntryInteractor = deviceEntryInteractor,
            transitionInteractor = keyguardTransitionInteractor,
        )
    }