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

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

Merge "Fix glanceable hub screen not getting blurred based on whether bouncer...

Merge "Fix glanceable hub screen not getting blurred based on whether bouncer is showing or not" into main
parents e482bab3 0c854e41
Loading
Loading
Loading
Loading
+23 −1
Original line number Diff line number Diff line
@@ -97,6 +97,7 @@ import com.android.systemui.scene.data.repository.Transition
import com.android.systemui.scene.data.repository.setTransition
import com.android.systemui.scene.domain.interactor.sceneInteractor
import com.android.systemui.scene.shared.flag.SceneContainerFlag
import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.settings.fakeUserTracker
import com.android.systemui.shade.domain.interactor.shadeInteractor
@@ -947,11 +948,32 @@ class CommunalViewModelTest(flags: FlagsParameterization) : SysuiTestCase() {
        kosmos.runTest {
            val viewModel = createViewModel()
            val isUiBlurred by collectLastValue(viewModel.isUiBlurred)

            kosmos.sceneInteractor.changeScene(
                Scenes.Lockscreen,
                "go to lockscreen",
                hideAllOverlays = false,
            )
            kosmos.sceneInteractor.instantlyShowOverlay(Overlays.Bouncer, "go to bouncer")
            kosmos.sceneInteractor.setTransitionState(
                flowOf(
                    ObservableTransitionState.Idle(
                        sceneInteractor.currentScene.value,
                        setOf(Overlays.Bouncer),
                    )
                )
            )
            fakeKeyguardBouncerRepository.setPrimaryShow(true)
            runCurrent()

            assertThat(isUiBlurred).isTrue()

            fakeKeyguardBouncerRepository.setPrimaryShow(false)
            kosmos.sceneInteractor.instantlyHideOverlay(Overlays.Bouncer, "go to bouncer")
            kosmos.sceneInteractor.setTransitionState(
                flowOf(ObservableTransitionState.Idle(sceneInteractor.currentScene.value))
            )
            runCurrent()

            assertThat(isUiBlurred).isFalse()
        }

+4 −0
Original line number Diff line number Diff line
@@ -43,6 +43,8 @@ import com.android.systemui.Flags as AConfigFlags
import com.android.systemui.SysuiTestCase
import com.android.systemui.bouncer.data.repository.fakeKeyguardBouncerRepository
import com.android.systemui.bouncer.domain.interactor.alternateBouncerInteractor
import com.android.systemui.bouncer.domain.interactor.bouncerIsNotShowing
import com.android.systemui.bouncer.domain.interactor.bouncerIsShowing
import com.android.systemui.concurrency.fakeExecutor
import com.android.systemui.coroutines.FlowValue
import com.android.systemui.coroutines.collectLastValue
@@ -679,6 +681,7 @@ class DeviceEntryFaceAuthRepositoryTest : SysuiTestCase() {
            allPreconditionsToRunFaceAuthAreTrue()
            bouncerRepository.setAlternateVisible(false)
            bouncerRepository.setPrimaryShow(false)
            kosmos.bouncerIsNotShowing()

            assertThat(canFaceAuthRun()).isTrue()

@@ -693,6 +696,7 @@ class DeviceEntryFaceAuthRepositoryTest : SysuiTestCase() {

            // but bouncer is shown after that.
            bouncerRepository.setPrimaryShow(true)
            kosmos.bouncerIsShowing()
            assertThat(canFaceAuthRun()).isTrue()
        }

+7 −0
Original line number Diff line number Diff line
@@ -25,6 +25,8 @@ import com.android.compose.animation.scene.ObservableTransitionState
import com.android.systemui.Flags.FLAG_KEYGUARD_WM_STATE_REFACTOR
import com.android.systemui.SysuiTestCase
import com.android.systemui.bouncer.data.repository.keyguardBouncerRepository
import com.android.systemui.bouncer.domain.interactor.bouncerIsNotShowing
import com.android.systemui.bouncer.domain.interactor.bouncerIsShowing
import com.android.systemui.common.ui.data.repository.fakeConfigurationRepository
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.coroutines.collectValues
@@ -163,6 +165,7 @@ class KeyguardInteractorTest : SysuiTestCase() {
            assertThat(secureCameraActive()).isTrue()

            bouncerRepository.setPrimaryShow(true)
            kosmos.bouncerIsShowing()
            assertThat(secureCameraActive()).isFalse()
        }

@@ -254,10 +257,12 @@ class KeyguardInteractorTest : SysuiTestCase() {

            // Show bouncer
            bouncerRepository.setPrimaryShow(true)
            kosmos.bouncerIsShowing()
            assertThat(secureCameraActive()).isFalse()

            // WHEN device is unlocked (and therefore the bouncer is no longer showing)
            bouncerRepository.setPrimaryShow(false)
            kosmos.bouncerIsNotShowing()

            // THEN we still show secure camera as *not* active
            assertThat(secureCameraActive()).isFalse()
@@ -675,6 +680,7 @@ class KeyguardInteractorTest : SysuiTestCase() {
        testScope.runTest {
            val primaryBouncerShowing by collectLastValue(underTest.primaryBouncerShowing)
            bouncerRepository.setPrimaryShow(true)
            kosmos.bouncerIsShowing()
            runCurrent()
            assertThat(primaryBouncerShowing).isTrue()
        }
@@ -684,6 +690,7 @@ class KeyguardInteractorTest : SysuiTestCase() {
        testScope.runTest {
            val primaryBouncerShowing by collectLastValue(underTest.primaryBouncerShowing)
            bouncerRepository.setPrimaryShowingSoon(true)
            kosmos.bouncerIsShowing()
            runCurrent()
            assertThat(primaryBouncerShowing).isTrue()
        }
+2 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import androidx.test.filters.SmallTest
import com.android.systemui.Flags
import com.android.systemui.SysuiTestCase
import com.android.systemui.bouncer.data.repository.fakeKeyguardBouncerRepository
import com.android.systemui.bouncer.domain.interactor.bouncerIsShowing
import com.android.systemui.kosmos.testScope
import com.android.systemui.kosmos.useUnconfinedTestDispatcher
import com.android.systemui.testKosmos
@@ -44,6 +45,7 @@ class WindowRootViewBlurInteractorTest : SysuiTestCase() {
    fun shadeBlurIsNotAppliedWhenBouncerBlurIsActive() =
        testScope.runTest {
            kosmos.fakeKeyguardBouncerRepository.setPrimaryShow(true)
            kosmos.bouncerIsShowing()

            assertThat(underTest.requestBlurForShade(30, 1.0f)).isFalse()
        }
+12 −5
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ import com.android.systemui.log.table.logDiffsForTable
import com.android.systemui.res.R
import com.android.systemui.scene.domain.interactor.SceneInteractor
import com.android.systemui.scene.shared.flag.SceneContainerFlag
import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.shade.ShadeDisplayAware
import com.android.systemui.shade.data.repository.ShadeRepository
@@ -278,12 +279,18 @@ constructor(
    /** Whether the primary bouncer is showing or about to show soon. */
    @JvmField
    val primaryBouncerShowing: StateFlow<Boolean> =
        if (SceneContainerFlag.isEnabled) {
                sceneInteractorProvider.get().transitionState.map {
                    it.isIdle(Overlays.Bouncer) || it.isTransitioning(to = Overlays.Bouncer)
                }
            } else {
                combine(
                    bouncerRepository.primaryBouncerShow,
                    bouncerRepository.primaryBouncerShowingSoon,
                ) { showing, showingSoon ->
                    showing || showingSoon
                }
            }
            .stateIn(
                scope = applicationScope,
                started = SharingStarted.WhileSubscribed(),
Loading