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

Commit 845eed58 authored by Justin Weir's avatar Justin Weir
Browse files

Parameterize Lockscreen tests for scene container flag

This is the final batch of Lockscreen tests that are being parameterized
for the scene container flag. Some of these tests do not pass with the
flag enabled and have been marked accordingly. The tracking bug for
fixing the tests is b/339465026.

Bug: 339465026
Bug: 334874076
Test: yes
Flag: ACONFIG com.android.systemui.scene_container DEVELOPMENT
Change-Id: Ice414d9dc4e2198535213893d4b69a76affa642b
parent 99405dc1
Loading
Loading
Loading
Loading
+28 −14
Original line number Diff line number Diff line
@@ -16,13 +16,15 @@

package com.android.systemui.keyguard.ui.viewmodel

import androidx.test.ext.junit.runners.AndroidJUnit4
import android.platform.test.flag.junit.FlagsParameterization
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.bouncer.domain.interactor.mockPrimaryBouncerInteractor
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.coroutines.collectValues
import com.android.systemui.flags.BrokenWithSceneContainer
import com.android.systemui.flags.Flags
import com.android.systemui.flags.andSceneContainer
import com.android.systemui.flags.fakeFeatureFlagsClassic
import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository
import com.android.systemui.keyguard.shared.model.KeyguardState
@@ -31,29 +33,25 @@ import com.android.systemui.keyguard.shared.model.ScrimAlpha
import com.android.systemui.keyguard.shared.model.TransitionState
import com.android.systemui.keyguard.shared.model.TransitionStep
import com.android.systemui.kosmos.testScope
import com.android.systemui.shade.data.repository.shadeRepository
import com.android.systemui.shade.domain.interactor.ShadeInteractor
import com.android.systemui.shade.shadeTestUtil
import com.android.systemui.statusbar.sysuiStatusBarStateController
import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.whenever
import com.google.common.collect.Range
import com.google.common.truth.Truth.assertThat
import kotlin.time.Duration.Companion.milliseconds
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.MockitoAnnotations
import platform.test.runner.parameterized.ParameterizedAndroidJunit4
import platform.test.runner.parameterized.Parameters

@SmallTest
@RunWith(AndroidJUnit4::class)
class BouncerToGoneFlowsTest : SysuiTestCase() {
    @Mock private lateinit var shadeInteractor: ShadeInteractor

    private val shadeExpansionStateFlow = MutableStateFlow(0.1f)
@RunWith(ParameterizedAndroidJunit4::class)
class BouncerToGoneFlowsTest(flags: FlagsParameterization) : SysuiTestCase() {

    private val kosmos =
        testKosmos().apply {
@@ -61,16 +59,31 @@ class BouncerToGoneFlowsTest : SysuiTestCase() {
        }
    private val testScope = kosmos.testScope
    private val keyguardTransitionRepository = kosmos.fakeKeyguardTransitionRepository
    private val shadeRepository = kosmos.shadeRepository
    private val sysuiStatusBarStateController = kosmos.sysuiStatusBarStateController
    private val primaryBouncerInteractor = kosmos.mockPrimaryBouncerInteractor
    private val underTest = kosmos.bouncerToGoneFlows

    private val shadeTestUtil by lazy { kosmos.shadeTestUtil }

    private lateinit var underTest: BouncerToGoneFlows

    companion object {
        @JvmStatic
        @Parameters(name = "{0}")
        fun getParams(): List<FlagsParameterization> {
            return FlagsParameterization.allCombinationsOf().andSceneContainer()
        }
    }

    init {
        mSetFlagsRule.setFlagsParameterization(flags)
    }

    @Before
    fun setUp() {
        MockitoAnnotations.initMocks(this)
        whenever(primaryBouncerInteractor.willRunDismissFromKeyguard()).thenReturn(false)
        sysuiStatusBarStateController.setLeaveOpenOnKeyguardHide(false)
        underTest = kosmos.bouncerToGoneFlows
    }

    @Test
@@ -79,7 +92,7 @@ class BouncerToGoneFlowsTest : SysuiTestCase() {
            val values by collectValues(underTest.scrimAlpha(500.milliseconds, PRIMARY_BOUNCER))
            runCurrent()

            shadeRepository.setLockscreenShadeExpansion(1f)
            shadeTestUtil.setLockscreenShadeExpansion(1f)
            whenever(primaryBouncerInteractor.willRunDismissFromKeyguard()).thenReturn(true)

            keyguardTransitionRepository.sendTransitionSteps(
@@ -99,12 +112,13 @@ class BouncerToGoneFlowsTest : SysuiTestCase() {
        }

    @Test
    @BrokenWithSceneContainer(339465026)
    fun scrimAlpha_runDimissFromKeyguard_shadeNotExpanded() =
        testScope.runTest {
            val values by collectValues(underTest.scrimAlpha(500.milliseconds, PRIMARY_BOUNCER))
            runCurrent()

            shadeRepository.setLockscreenShadeExpansion(0f)
            shadeTestUtil.setLockscreenShadeExpansion(0f)

            whenever(primaryBouncerInteractor.willRunDismissFromKeyguard()).thenReturn(true)

+58 −60
Original line number Diff line number Diff line
@@ -16,97 +16,95 @@

package com.android.systemui.biometrics.ui.viewmodel

import android.platform.test.flag.junit.FlagsParameterization
import androidx.test.filters.SmallTest
import com.android.systemui.SysUITestComponent
import com.android.systemui.SysUITestModule
import com.android.systemui.SysuiTestCase
import com.android.systemui.TestMocksModule
import com.android.systemui.biometrics.domain.BiometricsDomainLayerModule
import com.android.systemui.collectLastValue
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.flags.FakeFeatureFlagsClassicModule
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.flags.BrokenWithSceneContainer
import com.android.systemui.flags.Flags
import com.android.systemui.keyguard.data.repository.FakeKeyguardRepository
import com.android.systemui.flags.fakeFeatureFlagsClassic
import com.android.systemui.flags.parameterizeSceneContainerFlag
import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository
import com.android.systemui.keyguard.shared.model.StatusBarState
import com.android.systemui.runCurrent
import com.android.systemui.runTest
import com.android.systemui.shade.data.repository.FakeShadeRepository
import com.android.systemui.kosmos.testScope
import com.android.systemui.shade.domain.interactor.shadeInteractor
import com.android.systemui.shade.shadeTestUtil
import com.android.systemui.statusbar.phone.SystemUIDialogManager
import com.android.systemui.user.domain.UserDomainLayerModule
import com.android.systemui.util.mockito.mock
import com.android.systemui.statusbar.phone.systemUIDialogManager
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
import dagger.BindsInstance
import dagger.Component
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.runners.JUnit4
import org.mockito.ArgumentCaptor
import org.mockito.Captor
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
import platform.test.runner.parameterized.ParameterizedAndroidJunit4
import platform.test.runner.parameterized.Parameters

@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(JUnit4::class)
class DefaultUdfpsTouchOverlayViewModelTest : SysuiTestCase() {
@RunWith(ParameterizedAndroidJunit4::class)
class DefaultUdfpsTouchOverlayViewModelTest(flags: FlagsParameterization) : SysuiTestCase() {

    private val kosmos =
        testKosmos().apply {
            fakeFeatureFlagsClassic.apply { set(Flags.FULL_SCREEN_USER_SWITCHER, true) }
        }
    private val testScope = kosmos.testScope

    @Captor
    private lateinit var sysuiDialogListenerCaptor: ArgumentCaptor<SystemUIDialogManager.Listener>
    private var systemUIDialogManager: SystemUIDialogManager = mock()
    private var systemUIDialogManager = kosmos.systemUIDialogManager
    private val keyguardRepository = kosmos.fakeKeyguardRepository

    private val shadeTestUtil by lazy { kosmos.shadeTestUtil }

    private lateinit var underTest: DefaultUdfpsTouchOverlayViewModel

    companion object {
        @JvmStatic
        @Parameters(name = "{0}")
        fun getParams(): List<FlagsParameterization> {
            return parameterizeSceneContainerFlag()
        }
    }

    init {
        mSetFlagsRule.setFlagsParameterization(flags)
    }

    @Before
    fun setUp() {
        MockitoAnnotations.initMocks(this)
    }

    @SysUISingleton
    @Component(
        modules =
            [
                SysUITestModule::class,
                UserDomainLayerModule::class,
                BiometricsDomainLayerModule::class,
            ]
        underTest =
            DefaultUdfpsTouchOverlayViewModel(
                kosmos.shadeInteractor,
                systemUIDialogManager,
            )
    interface TestComponent : SysUITestComponent<DefaultUdfpsTouchOverlayViewModel> {
        val keyguardRepository: FakeKeyguardRepository
        val shadeRepository: FakeShadeRepository
        @Component.Factory
        interface Factory {
            fun create(
                @BindsInstance test: SysuiTestCase,
                featureFlags: FakeFeatureFlagsClassicModule,
                mocks: TestMocksModule,
            ): TestComponent
        }
    }

    private fun TestComponent.shadeExpanded(expanded: Boolean) {
    private fun shadeExpanded(expanded: Boolean) {
        if (expanded) {
            shadeRepository.setLegacyShadeExpansion(1f)
            shadeRepository.setLegacyShadeTracking(false)
            shadeRepository.setLegacyExpandedOrAwaitingInputTransfer(true)
            shadeTestUtil.setShadeExpansion(1f)
            shadeTestUtil.setTracking(false)
            shadeTestUtil.setLegacyExpandedOrAwaitingInputTransfer(true)
        } else {
            keyguardRepository.setStatusBarState(StatusBarState.SHADE)
            shadeRepository.setLegacyShadeExpansion(0f)
            shadeRepository.setLegacyShadeTracking(false)
            shadeRepository.setLegacyExpandedOrAwaitingInputTransfer(false)
            shadeTestUtil.setShadeExpansion(0f)
            shadeTestUtil.setTracking(false)
            shadeTestUtil.setLegacyExpandedOrAwaitingInputTransfer(false)
        }
    }

    private val testComponent: TestComponent =
        DaggerDefaultUdfpsTouchOverlayViewModelTest_TestComponent.factory()
            .create(
                test = this,
                featureFlags =
                    FakeFeatureFlagsClassicModule { set(Flags.FULL_SCREEN_USER_SWITCHER, true) },
                mocks = TestMocksModule(systemUIDialogManager = systemUIDialogManager),
            )

    @Test
    @BrokenWithSceneContainer(339465026)
    fun shadeNotExpanded_noDialogShowing_shouldHandleTouchesTrue() =
        testComponent.runTest {
        testScope.runTest {
            val shouldHandleTouches by collectLastValue(underTest.shouldHandleTouches)
            runCurrent()

@@ -120,7 +118,7 @@ class DefaultUdfpsTouchOverlayViewModelTest : SysuiTestCase() {

    @Test
    fun shadeNotExpanded_dialogShowing_shouldHandleTouchesFalse() =
        testComponent.runTest {
        testScope.runTest {
            val shouldHandleTouches by collectLastValue(underTest.shouldHandleTouches)
            runCurrent()

@@ -134,7 +132,7 @@ class DefaultUdfpsTouchOverlayViewModelTest : SysuiTestCase() {

    @Test
    fun shadeExpanded_noDialogShowing_shouldHandleTouchesFalse() =
        testComponent.runTest {
        testScope.runTest {
            val shouldHandleTouches by collectLastValue(underTest.shouldHandleTouches)
            runCurrent()

+32 −8
Original line number Diff line number Diff line
@@ -16,7 +16,7 @@

package com.android.systemui.deviceentry.domain.ui.viewmodel

import androidx.test.ext.junit.runners.AndroidJUnit4
import android.platform.test.flag.junit.FlagsParameterization
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.accessibility.data.repository.fakeAccessibilityRepository
@@ -24,7 +24,9 @@ import com.android.systemui.biometrics.data.repository.fingerprintPropertyReposi
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.deviceentry.data.repository.fakeDeviceEntryRepository
import com.android.systemui.deviceentry.data.ui.viewmodel.deviceEntryUdfpsAccessibilityOverlayViewModel
import com.android.systemui.deviceentry.ui.viewmodel.DeviceEntryUdfpsAccessibilityOverlayViewModel
import com.android.systemui.flags.Flags.FULL_SCREEN_USER_SWITCHER
import com.android.systemui.flags.andSceneContainer
import com.android.systemui.flags.fakeFeatureFlagsClassic
import com.android.systemui.keyguard.data.repository.deviceEntryFingerprintAuthRepository
import com.android.systemui.keyguard.data.repository.fakeBiometricSettingsRepository
@@ -34,19 +36,22 @@ import com.android.systemui.keyguard.shared.model.TransitionState
import com.android.systemui.keyguard.shared.model.TransitionStep
import com.android.systemui.keyguard.ui.viewmodel.fakeDeviceEntryIconViewModelTransition
import com.android.systemui.kosmos.testScope
import com.android.systemui.shade.data.repository.fakeShadeRepository
import com.android.systemui.shade.shadeTestUtil
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
import kotlin.test.Test
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.runner.RunWith
import platform.test.runner.parameterized.ParameterizedAndroidJunit4
import platform.test.runner.parameterized.Parameters

@ExperimentalCoroutinesApi
@SmallTest
@RunWith(AndroidJUnit4::class)
class UdfpsAccessibilityOverlayViewModelTest : SysuiTestCase() {
@RunWith(ParameterizedAndroidJunit4::class)
class UdfpsAccessibilityOverlayViewModelTest(flags: FlagsParameterization) : SysuiTestCase() {
    private val kosmos =
        testKosmos().apply {
            fakeFeatureFlagsClassic.apply { set(FULL_SCREEN_USER_SWITCHER, false) }
@@ -59,8 +64,27 @@ class UdfpsAccessibilityOverlayViewModelTest : SysuiTestCase() {
    private val fingerprintPropertyRepository = kosmos.fingerprintPropertyRepository
    private val deviceEntryFingerprintAuthRepository = kosmos.deviceEntryFingerprintAuthRepository
    private val deviceEntryRepository = kosmos.fakeDeviceEntryRepository
    private val shadeRepository = kosmos.fakeShadeRepository
    private val underTest = kosmos.deviceEntryUdfpsAccessibilityOverlayViewModel

    private val shadeTestUtil by lazy { kosmos.shadeTestUtil }

    private lateinit var underTest: DeviceEntryUdfpsAccessibilityOverlayViewModel

    companion object {
        @JvmStatic
        @Parameters(name = "{0}")
        fun getParams(): List<FlagsParameterization> {
            return FlagsParameterization.allCombinationsOf().andSceneContainer()
        }
    }

    init {
        mSetFlagsRule.setFlagsParameterization(flags)
    }

    @Before
    fun setup() {
        underTest = kosmos.deviceEntryUdfpsAccessibilityOverlayViewModel
    }

    @Test
    fun visible() =
@@ -142,7 +166,7 @@ class UdfpsAccessibilityOverlayViewModelTest : SysuiTestCase() {
        )

        // Shade not expanded
        shadeRepository.qsExpansion.value = 0f
        shadeRepository.lockscreenShadeExpansion.value = 0f
        shadeTestUtil.setQsExpansion(0f)
        shadeTestUtil.setLockscreenShadeExpansion(0f)
    }
}
+49 −12
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.systemui.keyguard.domain.interactor

import android.app.StatusBarManager
import android.platform.test.flag.junit.FlagsParameterization
import androidx.test.filters.SmallTest
import com.android.compose.animation.scene.ObservableTransitionState
import com.android.keyguard.KeyguardSecurityModel
@@ -29,7 +30,9 @@ import com.android.systemui.communal.domain.interactor.communalInteractor
import com.android.systemui.communal.domain.interactor.setCommunalAvailable
import com.android.systemui.communal.shared.model.CommunalScenes
import com.android.systemui.dock.fakeDockManager
import com.android.systemui.flags.BrokenWithSceneContainer
import com.android.systemui.flags.FakeFeatureFlags
import com.android.systemui.flags.andSceneContainer
import com.android.systemui.keyguard.data.repository.FakeKeyguardTransitionRepository
import com.android.systemui.keyguard.data.repository.fakeCommandQueue
import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository
@@ -46,7 +49,8 @@ import com.android.systemui.kosmos.testScope
import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.setAsleepForTest
import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.setAwakeForTest
import com.android.systemui.power.domain.interactor.powerInteractor
import com.android.systemui.shade.data.repository.fakeShadeRepository
import com.android.systemui.scene.shared.flag.SceneContainerFlag
import com.android.systemui.shade.shadeTestUtil
import com.android.systemui.statusbar.commandQueue
import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.whenever
@@ -61,13 +65,14 @@ import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.runners.JUnit4
import org.mockito.ArgumentMatchers.anyInt
import org.mockito.Mock
import org.mockito.Mockito.clearInvocations
import org.mockito.Mockito.reset
import org.mockito.Mockito.spy
import org.mockito.MockitoAnnotations
import platform.test.runner.parameterized.ParameterizedAndroidJunit4
import platform.test.runner.parameterized.Parameters

/**
 * Class for testing user journeys through the interactors. They will all be activated during setup,
@@ -75,8 +80,8 @@ import org.mockito.MockitoAnnotations
 */
@ExperimentalCoroutinesApi
@SmallTest
@RunWith(JUnit4::class)
class KeyguardTransitionScenariosTest : SysuiTestCase() {
@RunWith(ParameterizedAndroidJunit4::class)
class KeyguardTransitionScenariosTest(flags: FlagsParameterization?) : SysuiTestCase() {
    private val kosmos =
        testKosmos().apply {
            fakeKeyguardTransitionRepository = spy(FakeKeyguardTransitionRepository())
@@ -87,7 +92,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
    private val keyguardRepository = kosmos.fakeKeyguardRepository
    private val bouncerRepository = kosmos.fakeKeyguardBouncerRepository
    private var commandQueue = kosmos.fakeCommandQueue
    private val shadeRepository = kosmos.fakeShadeRepository
    private val shadeTestUtil by lazy { kosmos.shadeTestUtil }
    private val transitionRepository = kosmos.fakeKeyguardTransitionRepository
    private lateinit var featureFlags: FakeFeatureFlags

@@ -112,6 +117,18 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
    private val communalInteractor = kosmos.communalInteractor
    private val dockManager = kosmos.fakeDockManager

    companion object {
        @JvmStatic
        @Parameters(name = "{0}")
        fun getParams(): List<FlagsParameterization> {
            return FlagsParameterization.allCombinationsOf().andSceneContainer()
        }
    }

    init {
        mSetFlagsRule.setFlagsParameterization(flags!!)
    }

    @Before
    fun setUp() {
        MockitoAnnotations.initMocks(this)
@@ -119,9 +136,11 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
        whenever(keyguardSecurityModel.getSecurityMode(anyInt())).thenReturn(PIN)

        mSetFlagsRule.enableFlags(FLAG_COMMUNAL_HUB)
        if (!SceneContainerFlag.isEnabled) {
            mSetFlagsRule.disableFlags(
                Flags.FLAG_KEYGUARD_WM_STATE_REFACTOR,
            )
        }
        featureFlags = FakeFeatureFlags()

        fromLockscreenTransitionInteractor.start()
@@ -210,6 +229,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
        }

    @Test
    @BrokenWithSceneContainer(339465026)
    fun lockscreenToDreaming() =
        testScope.runTest {
            // GIVEN a device that is not dreaming or dozing
@@ -238,6 +258,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
        }

    @Test
    @BrokenWithSceneContainer(339465026)
    fun lockscreenToDreamingLockscreenHosted() =
        testScope.runTest {
            // GIVEN a device that is not dreaming or dozing
@@ -527,6 +548,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
        }

    @Test
    @BrokenWithSceneContainer(339465026)
    fun dozingToGoneWithUnlock() =
        testScope.runTest {
            // GIVEN a prior transition has run to DOZING
@@ -706,6 +728,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
        }

    @Test
    @BrokenWithSceneContainer(339465026)
    fun goneToLockscreen() =
        testScope.runTest {
            // GIVEN a prior transition has run to GONE
@@ -755,6 +778,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
        }

    @Test
    @BrokenWithSceneContainer(339465026)
    fun goneToGlanceableHub() =
        testScope.runTest {
            // GIVEN a prior transition has run to GONE
@@ -897,6 +921,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
        }

    @Test
    @BrokenWithSceneContainer(339465026)
    fun alternateBouncerToGone() =
        testScope.runTest {
            // GIVEN a prior transition has run to ALTERNATE_BOUNCER
@@ -1135,6 +1160,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
        }

    @Test
    @BrokenWithSceneContainer(339465026)
    fun occludedToGone() =
        testScope.runTest {
            // GIVEN a device on lockscreen
@@ -1165,6 +1191,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
        }

    @Test
    @BrokenWithSceneContainer(339465026)
    fun occludedToLockscreen() =
        testScope.runTest {
            // GIVEN a device on lockscreen
@@ -1193,6 +1220,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
        }

    @Test
    @BrokenWithSceneContainer(339465026)
    fun occludedToGlanceableHub() =
        testScope.runTest {
            // GIVEN a device on lockscreen
@@ -1229,6 +1257,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
        }

    @Test
    @BrokenWithSceneContainer(339465026)
    fun occludedToGlanceableHubWhenInitiallyOnHub() =
        testScope.runTest {
            // GIVEN a device on lockscreen and communal is available
@@ -1314,6 +1343,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
        }

    @Test
    @BrokenWithSceneContainer(339465026)
    fun primaryBouncerToOccluded() =
        testScope.runTest {
            // GIVEN a prior transition has run to PRIMARY_BOUNCER
@@ -1339,6 +1369,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
        }

    @Test
    @BrokenWithSceneContainer(339465026)
    fun dozingToOccluded() =
        testScope.runTest {
            // GIVEN a prior transition has run to DOZING
@@ -1364,6 +1395,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
        }

    @Test
    @BrokenWithSceneContainer(339465026)
    fun dreamingToOccluded() =
        testScope.runTest {
            // GIVEN a prior transition has run to DREAMING
@@ -1484,6 +1516,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
        }

    @Test
    @BrokenWithSceneContainer(339465026)
    fun lockscreenToOccluded() =
        testScope.runTest {
            // GIVEN a prior transition has run to LOCKSCREEN
@@ -1507,6 +1540,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
        }

    @Test
    @BrokenWithSceneContainer(339465026)
    fun aodToOccluded() =
        testScope.runTest {
            // GIVEN a prior transition has run to AOD
@@ -1553,6 +1587,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
        }

    @Test
    @BrokenWithSceneContainer(339465026)
    fun lockscreenToOccluded_fromCameraGesture() =
        testScope.runTest {
            // GIVEN a prior transition has run to LOCKSCREEN
@@ -1586,6 +1621,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
        }

    @Test
    @BrokenWithSceneContainer(339465026)
    fun lockscreenToPrimaryBouncerDragging() =
        testScope.runTest {
            // GIVEN a prior transition has run to LOCKSCREEN
@@ -1595,8 +1631,8 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
            // GIVEN the keyguard is showing locked
            keyguardRepository.setStatusBarState(StatusBarState.KEYGUARD)
            runCurrent()
            shadeRepository.setLegacyShadeTracking(true)
            shadeRepository.setLegacyShadeExpansion(.9f)
            shadeTestUtil.setTracking(true)
            shadeTestUtil.setShadeExpansion(.9f)
            runCurrent()

            // THEN a transition from LOCKSCREEN => PRIMARY_BOUNCER should occur
@@ -1613,8 +1649,8 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
            // WHEN the user stops dragging and shade is back to expanded
            clearInvocations(transitionRepository)
            runTransitionAndSetWakefulness(KeyguardState.LOCKSCREEN, KeyguardState.PRIMARY_BOUNCER)
            shadeRepository.setLegacyShadeTracking(false)
            shadeRepository.setLegacyShadeExpansion(1f)
            shadeTestUtil.setTracking(false)
            shadeTestUtil.setShadeExpansion(1f)
            runCurrent()

            // THEN a transition from LOCKSCREEN => PRIMARY_BOUNCER should occur
@@ -1803,6 +1839,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
        }

    @Test
    @BrokenWithSceneContainer(339465026)
    fun glanceableHubToOccluded() =
        testScope.runTest {
            // GIVEN a prior transition has run to GLANCEABLE_HUB
+17 −0
Original line number Diff line number Diff line
@@ -81,6 +81,11 @@ class ShadeTestUtil constructor(val delegate: ShadeTestUtilDelegate) {
        delegate.assertFlagValid()
        delegate.setQsFullscreen(qsFullscreen)
    }

    fun setLegacyExpandedOrAwaitingInputTransfer(legacyExpandedOrAwaitingInputTransfer: Boolean) {
        delegate.assertFlagValid()
        delegate.setLegacyExpandedOrAwaitingInputTransfer(legacyExpandedOrAwaitingInputTransfer)
    }
}

/** Sets up shade state for tests for a specific value of the scene container flag. */
@@ -110,6 +115,8 @@ interface ShadeTestUtilDelegate {
    fun programmaticCollapseShade()

    fun setQsFullscreen(qsFullscreen: Boolean)

    fun setLegacyExpandedOrAwaitingInputTransfer(legacyExpandedOrAwaitingInputTransfer: Boolean)
}

/** Sets up shade state for tests when the scene container flag is disabled. */
@@ -157,6 +164,10 @@ class ShadeTestUtilLegacyImpl(val testScope: TestScope, val shadeRepository: Fak
    override fun setQsFullscreen(qsFullscreen: Boolean) {
        shadeRepository.legacyQsFullscreen.value = true
    }

    override fun setLegacyExpandedOrAwaitingInputTransfer(expanded: Boolean) {
        shadeRepository.setLegacyExpandedOrAwaitingInputTransfer(expanded)
    }
}

/** Sets up shade state for tests when the scene container flag is enabled. */
@@ -198,6 +209,12 @@ class ShadeTestUtilSceneImpl(val testScope: TestScope, val sceneInteractor: Scen
        setQsExpansion(1f)
    }

    override fun setLegacyExpandedOrAwaitingInputTransfer(
        legacyExpandedOrAwaitingInputTransfer: Boolean
    ) {
        setShadeExpansion(.1f)
    }

    override fun setLockscreenShadeExpansion(lockscreenShadeExpansion: Float) {
        if (lockscreenShadeExpansion == 0f) {
            setIdleScene(Scenes.Lockscreen)