Loading packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardClockInteractorTest.kt +5 −5 Original line number Diff line number Diff line Loading @@ -36,8 +36,8 @@ import com.android.systemui.keyguard.shared.model.DozeTransitionModel import com.android.systemui.keyguard.shared.model.KeyguardState import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.testScope import com.android.systemui.media.controls.data.repository.mediaFilterRepository import com.android.systemui.media.controls.shared.model.MediaData import com.android.systemui.media.remedia.data.repository.mediaPipelineRepository import com.android.systemui.shade.data.repository.shadeRepository import com.android.systemui.statusbar.notification.data.repository.activeNotificationListRepository import com.android.systemui.statusbar.notification.data.repository.setActiveNotifs Loading Loading @@ -120,7 +120,7 @@ class KeyguardClockInteractorTest : SysuiTestCase() { val value by collectLastValue(underTest.clockSize) kosmos.shadeRepository.setShadeLayoutWide(false) val userMedia = MediaData().copy(active = true) kosmos.mediaFilterRepository.addCurrentUserMediaEntry(userMedia) kosmos.mediaPipelineRepository.addCurrentUserMediaEntry(userMedia) assertThat(value).isEqualTo(ClockSize.SMALL) } Loading @@ -132,7 +132,7 @@ class KeyguardClockInteractorTest : SysuiTestCase() { val value by collectLastValue(underTest.clockSize) val userMedia = MediaData().copy(active = true) kosmos.shadeRepository.setShadeLayoutWide(true) kosmos.mediaFilterRepository.addCurrentUserMediaEntry(userMedia) kosmos.mediaPipelineRepository.addCurrentUserMediaEntry(userMedia) kosmos.keyguardRepository.setIsDozing(false) assertThat(value).isEqualTo(ClockSize.SMALL) Loading @@ -156,7 +156,7 @@ class KeyguardClockInteractorTest : SysuiTestCase() { val value by collectLastValue(underTest.clockSize) val userMedia = MediaData().copy(active = true) kosmos.shadeRepository.setShadeLayoutWide(true) kosmos.mediaFilterRepository.addCurrentUserMediaEntry(userMedia) kosmos.mediaPipelineRepository.addCurrentUserMediaEntry(userMedia) kosmos.keyguardRepository.setIsDozing(true) assertThat(value).isEqualTo(ClockSize.LARGE) Loading @@ -170,7 +170,7 @@ class KeyguardClockInteractorTest : SysuiTestCase() { val userMedia = MediaData().copy(active = true) kosmos.fakeKeyguardClockRepository.setSelectedClockSize(ClockSizeSetting.SMALL) kosmos.shadeRepository.setShadeLayoutWide(true) kosmos.mediaFilterRepository.addCurrentUserMediaEntry(userMedia) kosmos.mediaPipelineRepository.addCurrentUserMediaEntry(userMedia) kosmos.keyguardRepository.setIsDozing(true) assertThat(value).isEqualTo(ClockSize.SMALL) Loading packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardMediaViewModelTest.kt +3 −3 Original line number Diff line number Diff line Loading @@ -24,8 +24,8 @@ import com.android.systemui.kosmos.runTest import com.android.systemui.kosmos.testScope import com.android.systemui.kosmos.useUnconfinedTestDispatcher import com.android.systemui.lifecycle.activateIn import com.android.systemui.media.controls.data.repository.mediaFilterRepository import com.android.systemui.media.controls.shared.model.MediaData import com.android.systemui.media.remedia.data.repository.mediaPipelineRepository import com.android.systemui.testKosmos import com.google.common.truth.Truth.assertThat import org.junit.Before Loading Loading @@ -57,7 +57,7 @@ class KeyguardMediaViewModelTest : SysuiTestCase() { kosmos.runTest { val userMedia = MediaData(active = true) mediaFilterRepository.addCurrentUserMediaEntry(userMedia) mediaPipelineRepository.addCurrentUserMediaEntry(userMedia) keyguardRepository.setIsDozing(true) assertThat(underTest.isMediaVisible).isFalse() Loading @@ -68,7 +68,7 @@ class KeyguardMediaViewModelTest : SysuiTestCase() { kosmos.runTest { val userMedia = MediaData(active = true) mediaFilterRepository.addCurrentUserMediaEntry(userMedia) mediaPipelineRepository.addCurrentUserMediaEntry(userMedia) keyguardRepository.setIsDozing(false) assertThat(underTest.isMediaVisible).isTrue() Loading packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/domain/interactor/MediaCarouselInteractorTest.kt +6 −9 Original line number Diff line number Diff line Loading @@ -21,11 +21,10 @@ import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.coroutines.collectLastValue import com.android.systemui.kosmos.testScope import com.android.systemui.media.controls.data.repository.MediaFilterRepository import com.android.systemui.media.controls.data.repository.mediaFilterRepository import com.android.systemui.media.controls.domain.pipeline.interactor.MediaCarouselInteractor import com.android.systemui.media.controls.domain.pipeline.interactor.mediaCarouselInteractor import com.android.systemui.media.controls.shared.model.MediaData import com.android.systemui.media.remedia.data.repository.mediaPipelineRepository import com.android.systemui.testKosmos import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.test.runTest Loading @@ -39,9 +38,7 @@ class MediaCarouselInteractorTest : SysuiTestCase() { private val kosmos = testKosmos() private val testScope = kosmos.testScope private val mediaFilterRepository: MediaFilterRepository = with(kosmos) { mediaFilterRepository } private val mediaPipelineRepository = kosmos.mediaPipelineRepository private val underTest: MediaCarouselInteractor = kosmos.mediaCarouselInteractor Loading @@ -57,13 +54,13 @@ class MediaCarouselInteractorTest : SysuiTestCase() { val userMedia = MediaData(active = true) mediaFilterRepository.addCurrentUserMediaEntry(userMedia) mediaPipelineRepository.addCurrentUserMediaEntry(userMedia) assertThat(hasActiveMedia).isTrue() assertThat(underTest.hasActiveMedia()).isTrue() assertThat(underTest.hasAnyMedia()).isTrue() mediaFilterRepository.addCurrentUserMediaEntry(userMedia.copy(active = false)) mediaPipelineRepository.addCurrentUserMediaEntry(userMedia.copy(active = false)) assertThat(hasActiveMedia).isFalse() assertThat(underTest.hasActiveMedia()).isFalse() Loading @@ -78,13 +75,13 @@ class MediaCarouselInteractorTest : SysuiTestCase() { val userMedia = MediaData(active = false) val instanceId = userMedia.instanceId mediaFilterRepository.addCurrentUserMediaEntry(userMedia) mediaPipelineRepository.addCurrentUserMediaEntry(userMedia) assertThat(hasActiveMedia).isFalse() assertThat(underTest.hasActiveMedia()).isFalse() assertThat(underTest.hasAnyMedia()).isTrue() assertThat(mediaFilterRepository.removeCurrentUserMediaEntry(instanceId, userMedia)) assertThat(mediaPipelineRepository.removeCurrentUserMediaEntry(instanceId, userMedia)) .isTrue() assertThat(hasActiveMedia).isFalse() Loading packages/SystemUI/multivalentTests/src/com/android/systemui/notifications/ui/viewmodel/NotificationsShadeOverlayContentViewModelTest.kt +6 −6 Original line number Diff line number Diff line Loading @@ -35,8 +35,8 @@ import com.android.systemui.kosmos.runCurrent import com.android.systemui.kosmos.testScope import com.android.systemui.kosmos.useUnconfinedTestDispatcher import com.android.systemui.lifecycle.activateIn import com.android.systemui.media.controls.data.repository.mediaFilterRepository import com.android.systemui.media.controls.shared.model.MediaData import com.android.systemui.media.remedia.data.repository.mediaPipelineRepository 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 Loading Loading @@ -150,7 +150,7 @@ class NotificationsShadeOverlayContentViewModelTest : SysuiTestCase() { @Test fun showMedia_activeMedia_true() = testScope.runTest { kosmos.mediaFilterRepository.addCurrentUserMediaEntry(MediaData(active = true)) kosmos.mediaPipelineRepository.addCurrentUserMediaEntry(MediaData(active = true)) runCurrent() assertThat(underTest.showMedia).isTrue() Loading @@ -159,7 +159,7 @@ class NotificationsShadeOverlayContentViewModelTest : SysuiTestCase() { @Test fun showMedia_InactiveMedia_false() = testScope.runTest { kosmos.mediaFilterRepository.addCurrentUserMediaEntry(MediaData(active = false)) kosmos.mediaPipelineRepository.addCurrentUserMediaEntry(MediaData(active = false)) runCurrent() assertThat(underTest.showMedia).isFalse() Loading @@ -168,8 +168,8 @@ class NotificationsShadeOverlayContentViewModelTest : SysuiTestCase() { @Test fun showMedia_noMedia_false() = testScope.runTest { kosmos.mediaFilterRepository.addCurrentUserMediaEntry(MediaData(active = true)) kosmos.mediaFilterRepository.clearCurrentUserMedia() kosmos.mediaPipelineRepository.addCurrentUserMediaEntry(MediaData(active = true)) kosmos.mediaPipelineRepository.clearCurrentUserMedia() runCurrent() assertThat(underTest.showMedia).isFalse() Loading @@ -178,7 +178,7 @@ class NotificationsShadeOverlayContentViewModelTest : SysuiTestCase() { @Test fun showMedia_qsDisabled_false() = testScope.runTest { kosmos.mediaFilterRepository.addCurrentUserMediaEntry(MediaData(active = true)) kosmos.mediaPipelineRepository.addCurrentUserMediaEntry(MediaData(active = true)) kosmos.fakeDisableFlagsRepository.disableFlags.update { it.copy(disable2 = DISABLE2_QUICK_SETTINGS) } Loading packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/ui/viewmodel/MediaInRowInLandscapeViewModelTest.kt +62 −20 Original line number Diff line number Diff line Loading @@ -18,10 +18,14 @@ package com.android.systemui.qs.panels.ui.viewmodel import android.content.res.Configuration import android.content.res.mainResources import android.platform.test.flag.junit.FlagsParameterization import android.platform.test.flag.junit.FlagsParameterization.progressionOf import androidx.test.filters.SmallTest import com.android.systemui.Flags import com.android.systemui.Flags.mediaControlsInCompose import com.android.systemui.SysuiTestCase import com.android.systemui.common.ui.data.repository.fakeConfigurationRepository import com.android.systemui.flags.EnableSceneContainer import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.testScope import com.android.systemui.lifecycle.activateIn import com.android.systemui.media.controls.ui.controller.MediaHierarchyManager.Companion.LOCATION_QQS Loading @@ -29,8 +33,11 @@ import com.android.systemui.media.controls.ui.controller.MediaHierarchyManager.C import com.android.systemui.media.controls.ui.controller.MediaLocation import com.android.systemui.media.controls.ui.controller.mediaHostStatesManager import com.android.systemui.media.controls.ui.view.MediaHost import com.android.systemui.media.remedia.data.repository.setHasActiveMedia import com.android.systemui.media.remedia.ui.compose.MediaUiBehavior import com.android.systemui.qs.composefragment.dagger.usingMediaInComposeFragment import com.android.systemui.qs.ui.viewmodel.QuickSettingsContainerViewModel import com.android.systemui.scene.shared.flag.SceneContainerFlag import com.android.systemui.shade.domain.interactor.enableDualShade import com.android.systemui.shade.domain.interactor.enableSingleShade import com.android.systemui.shade.domain.interactor.enableSplitShade Loading @@ -41,6 +48,7 @@ import kotlin.test.Test import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.runCurrent import kotlinx.coroutines.test.runTest import org.junit.Assume import org.junit.Before import org.junit.runner.RunWith import platform.test.runner.parameterized.ParameterizedAndroidJunit4 Loading @@ -49,19 +57,33 @@ import platform.test.runner.parameterized.Parameters @OptIn(ExperimentalCoroutinesApi::class) @RunWith(ParameterizedAndroidJunit4::class) @SmallTest class MediaInRowInLandscapeViewModelTest(private val testData: TestData) : SysuiTestCase() { class MediaInRowInLandscapeViewModelTest( private val testData: TestData, flags: FlagsParameterization, ) : SysuiTestCase() { init { mSetFlagsRule.setFlagsParameterization(flags) } private val kosmos = testKosmos().apply { usingMediaInComposeFragment = testData.usingMedia } private val underTest by lazy { kosmos.mediaInRowInLandscapeViewModelFactory.create( TESTED_MEDIA_LOCATION, TESTED_MEDIA_BEHAVIOR, private val Kosmos.underTest by Kosmos.Fixture { mediaInRowInLandscapeViewModelFactory.create( testData.mediaLocation, toMediaBehavior(testData.mediaLocation), ) } @Before fun setUp() { // Skip this test if SceneContainerFlag is disabled and testData.shadeMode is Dual Assume.assumeFalse( "Skipping test: Dual shade requires SceneContainerFlag to be enabled.", !SceneContainerFlag.isEnabled && testData.shadeMode == ShadeMode.Dual, ) when (testData.shadeMode) { ShadeMode.Single -> kosmos.enableSingleShade() ShadeMode.Split -> kosmos.enableSplitShade() Loading @@ -70,7 +92,6 @@ class MediaInRowInLandscapeViewModelTest(private val testData: TestData) : Sysui } @Test @EnableSceneContainer fun shouldMediaShowInRow() = with(kosmos) { testScope.runTest { Loading @@ -83,16 +104,27 @@ class MediaInRowInLandscapeViewModelTest(private val testData: TestData) : Sysui } fakeConfigurationRepository.onConfigurationChange(config) mainResources.configuration.updateFrom(config) if (mediaControlsInCompose()) { setHasActiveMedia(testData.mediaVisible) } else { mediaHostStatesManager.updateHostState( testData.mediaLocation, MediaHost.MediaHostStateHolder().apply { visible = testData.mediaVisible }, ) runCurrent() } assertThat(underTest.shouldMediaShowInRow).isEqualTo(testData.mediaInRowExpected) } } private fun toMediaBehavior(@MediaLocation location: Int): MediaUiBehavior { return when (location) { LOCATION_QS -> QuickSettingsContainerViewModel.mediaUiBehavior else -> QuickQuickSettingsViewModel.mediaUiBehavior } } data class TestData( val usingMedia: Boolean, val shadeMode: ShadeMode, Loading @@ -107,17 +139,27 @@ class MediaInRowInLandscapeViewModelTest(private val testData: TestData) : Sysui shadeMode == ShadeMode.Single && orientation == Configuration.ORIENTATION_LANDSCAPE && screenLayoutLong == Configuration.SCREENLAYOUT_LONG_YES && mediaVisible && mediaLocation == TESTED_MEDIA_LOCATION mediaVisible } companion object { private const val TESTED_MEDIA_LOCATION = LOCATION_QS private val TESTED_MEDIA_BEHAVIOR = QuickSettingsContainerViewModel.mediaUiBehavior @JvmStatic @Parameters(name = "{0}") fun data(): Collection<TestData> { @Parameters(name = "testData={0}, flags={1}") fun data(): List<Array<Any>> { val allFlagsParameterization = progressionOf(Flags.FLAG_MEDIA_CONTROLS_IN_COMPOSE, Flags.FLAG_SCENE_CONTAINER) val testDataList = generateTestDataList() val allParameters = mutableListOf<Array<Any>>() testDataList.map { testData -> allFlagsParameterization.map { flagParam -> allParameters.add(arrayOf(testData, flagParam)) } } return allParameters } private fun generateTestDataList(): Collection<TestData> { val usingMediaValues = setOf(true, false) val shadeModeValues = setOf(ShadeMode.Single, ShadeMode.Split, ShadeMode.Dual) val orientationValues = Loading Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardClockInteractorTest.kt +5 −5 Original line number Diff line number Diff line Loading @@ -36,8 +36,8 @@ import com.android.systemui.keyguard.shared.model.DozeTransitionModel import com.android.systemui.keyguard.shared.model.KeyguardState import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.testScope import com.android.systemui.media.controls.data.repository.mediaFilterRepository import com.android.systemui.media.controls.shared.model.MediaData import com.android.systemui.media.remedia.data.repository.mediaPipelineRepository import com.android.systemui.shade.data.repository.shadeRepository import com.android.systemui.statusbar.notification.data.repository.activeNotificationListRepository import com.android.systemui.statusbar.notification.data.repository.setActiveNotifs Loading Loading @@ -120,7 +120,7 @@ class KeyguardClockInteractorTest : SysuiTestCase() { val value by collectLastValue(underTest.clockSize) kosmos.shadeRepository.setShadeLayoutWide(false) val userMedia = MediaData().copy(active = true) kosmos.mediaFilterRepository.addCurrentUserMediaEntry(userMedia) kosmos.mediaPipelineRepository.addCurrentUserMediaEntry(userMedia) assertThat(value).isEqualTo(ClockSize.SMALL) } Loading @@ -132,7 +132,7 @@ class KeyguardClockInteractorTest : SysuiTestCase() { val value by collectLastValue(underTest.clockSize) val userMedia = MediaData().copy(active = true) kosmos.shadeRepository.setShadeLayoutWide(true) kosmos.mediaFilterRepository.addCurrentUserMediaEntry(userMedia) kosmos.mediaPipelineRepository.addCurrentUserMediaEntry(userMedia) kosmos.keyguardRepository.setIsDozing(false) assertThat(value).isEqualTo(ClockSize.SMALL) Loading @@ -156,7 +156,7 @@ class KeyguardClockInteractorTest : SysuiTestCase() { val value by collectLastValue(underTest.clockSize) val userMedia = MediaData().copy(active = true) kosmos.shadeRepository.setShadeLayoutWide(true) kosmos.mediaFilterRepository.addCurrentUserMediaEntry(userMedia) kosmos.mediaPipelineRepository.addCurrentUserMediaEntry(userMedia) kosmos.keyguardRepository.setIsDozing(true) assertThat(value).isEqualTo(ClockSize.LARGE) Loading @@ -170,7 +170,7 @@ class KeyguardClockInteractorTest : SysuiTestCase() { val userMedia = MediaData().copy(active = true) kosmos.fakeKeyguardClockRepository.setSelectedClockSize(ClockSizeSetting.SMALL) kosmos.shadeRepository.setShadeLayoutWide(true) kosmos.mediaFilterRepository.addCurrentUserMediaEntry(userMedia) kosmos.mediaPipelineRepository.addCurrentUserMediaEntry(userMedia) kosmos.keyguardRepository.setIsDozing(true) assertThat(value).isEqualTo(ClockSize.SMALL) Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardMediaViewModelTest.kt +3 −3 Original line number Diff line number Diff line Loading @@ -24,8 +24,8 @@ import com.android.systemui.kosmos.runTest import com.android.systemui.kosmos.testScope import com.android.systemui.kosmos.useUnconfinedTestDispatcher import com.android.systemui.lifecycle.activateIn import com.android.systemui.media.controls.data.repository.mediaFilterRepository import com.android.systemui.media.controls.shared.model.MediaData import com.android.systemui.media.remedia.data.repository.mediaPipelineRepository import com.android.systemui.testKosmos import com.google.common.truth.Truth.assertThat import org.junit.Before Loading Loading @@ -57,7 +57,7 @@ class KeyguardMediaViewModelTest : SysuiTestCase() { kosmos.runTest { val userMedia = MediaData(active = true) mediaFilterRepository.addCurrentUserMediaEntry(userMedia) mediaPipelineRepository.addCurrentUserMediaEntry(userMedia) keyguardRepository.setIsDozing(true) assertThat(underTest.isMediaVisible).isFalse() Loading @@ -68,7 +68,7 @@ class KeyguardMediaViewModelTest : SysuiTestCase() { kosmos.runTest { val userMedia = MediaData(active = true) mediaFilterRepository.addCurrentUserMediaEntry(userMedia) mediaPipelineRepository.addCurrentUserMediaEntry(userMedia) keyguardRepository.setIsDozing(false) assertThat(underTest.isMediaVisible).isTrue() Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/domain/interactor/MediaCarouselInteractorTest.kt +6 −9 Original line number Diff line number Diff line Loading @@ -21,11 +21,10 @@ import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.coroutines.collectLastValue import com.android.systemui.kosmos.testScope import com.android.systemui.media.controls.data.repository.MediaFilterRepository import com.android.systemui.media.controls.data.repository.mediaFilterRepository import com.android.systemui.media.controls.domain.pipeline.interactor.MediaCarouselInteractor import com.android.systemui.media.controls.domain.pipeline.interactor.mediaCarouselInteractor import com.android.systemui.media.controls.shared.model.MediaData import com.android.systemui.media.remedia.data.repository.mediaPipelineRepository import com.android.systemui.testKosmos import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.test.runTest Loading @@ -39,9 +38,7 @@ class MediaCarouselInteractorTest : SysuiTestCase() { private val kosmos = testKosmos() private val testScope = kosmos.testScope private val mediaFilterRepository: MediaFilterRepository = with(kosmos) { mediaFilterRepository } private val mediaPipelineRepository = kosmos.mediaPipelineRepository private val underTest: MediaCarouselInteractor = kosmos.mediaCarouselInteractor Loading @@ -57,13 +54,13 @@ class MediaCarouselInteractorTest : SysuiTestCase() { val userMedia = MediaData(active = true) mediaFilterRepository.addCurrentUserMediaEntry(userMedia) mediaPipelineRepository.addCurrentUserMediaEntry(userMedia) assertThat(hasActiveMedia).isTrue() assertThat(underTest.hasActiveMedia()).isTrue() assertThat(underTest.hasAnyMedia()).isTrue() mediaFilterRepository.addCurrentUserMediaEntry(userMedia.copy(active = false)) mediaPipelineRepository.addCurrentUserMediaEntry(userMedia.copy(active = false)) assertThat(hasActiveMedia).isFalse() assertThat(underTest.hasActiveMedia()).isFalse() Loading @@ -78,13 +75,13 @@ class MediaCarouselInteractorTest : SysuiTestCase() { val userMedia = MediaData(active = false) val instanceId = userMedia.instanceId mediaFilterRepository.addCurrentUserMediaEntry(userMedia) mediaPipelineRepository.addCurrentUserMediaEntry(userMedia) assertThat(hasActiveMedia).isFalse() assertThat(underTest.hasActiveMedia()).isFalse() assertThat(underTest.hasAnyMedia()).isTrue() assertThat(mediaFilterRepository.removeCurrentUserMediaEntry(instanceId, userMedia)) assertThat(mediaPipelineRepository.removeCurrentUserMediaEntry(instanceId, userMedia)) .isTrue() assertThat(hasActiveMedia).isFalse() Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/notifications/ui/viewmodel/NotificationsShadeOverlayContentViewModelTest.kt +6 −6 Original line number Diff line number Diff line Loading @@ -35,8 +35,8 @@ import com.android.systemui.kosmos.runCurrent import com.android.systemui.kosmos.testScope import com.android.systemui.kosmos.useUnconfinedTestDispatcher import com.android.systemui.lifecycle.activateIn import com.android.systemui.media.controls.data.repository.mediaFilterRepository import com.android.systemui.media.controls.shared.model.MediaData import com.android.systemui.media.remedia.data.repository.mediaPipelineRepository 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 Loading Loading @@ -150,7 +150,7 @@ class NotificationsShadeOverlayContentViewModelTest : SysuiTestCase() { @Test fun showMedia_activeMedia_true() = testScope.runTest { kosmos.mediaFilterRepository.addCurrentUserMediaEntry(MediaData(active = true)) kosmos.mediaPipelineRepository.addCurrentUserMediaEntry(MediaData(active = true)) runCurrent() assertThat(underTest.showMedia).isTrue() Loading @@ -159,7 +159,7 @@ class NotificationsShadeOverlayContentViewModelTest : SysuiTestCase() { @Test fun showMedia_InactiveMedia_false() = testScope.runTest { kosmos.mediaFilterRepository.addCurrentUserMediaEntry(MediaData(active = false)) kosmos.mediaPipelineRepository.addCurrentUserMediaEntry(MediaData(active = false)) runCurrent() assertThat(underTest.showMedia).isFalse() Loading @@ -168,8 +168,8 @@ class NotificationsShadeOverlayContentViewModelTest : SysuiTestCase() { @Test fun showMedia_noMedia_false() = testScope.runTest { kosmos.mediaFilterRepository.addCurrentUserMediaEntry(MediaData(active = true)) kosmos.mediaFilterRepository.clearCurrentUserMedia() kosmos.mediaPipelineRepository.addCurrentUserMediaEntry(MediaData(active = true)) kosmos.mediaPipelineRepository.clearCurrentUserMedia() runCurrent() assertThat(underTest.showMedia).isFalse() Loading @@ -178,7 +178,7 @@ class NotificationsShadeOverlayContentViewModelTest : SysuiTestCase() { @Test fun showMedia_qsDisabled_false() = testScope.runTest { kosmos.mediaFilterRepository.addCurrentUserMediaEntry(MediaData(active = true)) kosmos.mediaPipelineRepository.addCurrentUserMediaEntry(MediaData(active = true)) kosmos.fakeDisableFlagsRepository.disableFlags.update { it.copy(disable2 = DISABLE2_QUICK_SETTINGS) } Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/ui/viewmodel/MediaInRowInLandscapeViewModelTest.kt +62 −20 Original line number Diff line number Diff line Loading @@ -18,10 +18,14 @@ package com.android.systemui.qs.panels.ui.viewmodel import android.content.res.Configuration import android.content.res.mainResources import android.platform.test.flag.junit.FlagsParameterization import android.platform.test.flag.junit.FlagsParameterization.progressionOf import androidx.test.filters.SmallTest import com.android.systemui.Flags import com.android.systemui.Flags.mediaControlsInCompose import com.android.systemui.SysuiTestCase import com.android.systemui.common.ui.data.repository.fakeConfigurationRepository import com.android.systemui.flags.EnableSceneContainer import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.testScope import com.android.systemui.lifecycle.activateIn import com.android.systemui.media.controls.ui.controller.MediaHierarchyManager.Companion.LOCATION_QQS Loading @@ -29,8 +33,11 @@ import com.android.systemui.media.controls.ui.controller.MediaHierarchyManager.C import com.android.systemui.media.controls.ui.controller.MediaLocation import com.android.systemui.media.controls.ui.controller.mediaHostStatesManager import com.android.systemui.media.controls.ui.view.MediaHost import com.android.systemui.media.remedia.data.repository.setHasActiveMedia import com.android.systemui.media.remedia.ui.compose.MediaUiBehavior import com.android.systemui.qs.composefragment.dagger.usingMediaInComposeFragment import com.android.systemui.qs.ui.viewmodel.QuickSettingsContainerViewModel import com.android.systemui.scene.shared.flag.SceneContainerFlag import com.android.systemui.shade.domain.interactor.enableDualShade import com.android.systemui.shade.domain.interactor.enableSingleShade import com.android.systemui.shade.domain.interactor.enableSplitShade Loading @@ -41,6 +48,7 @@ import kotlin.test.Test import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.runCurrent import kotlinx.coroutines.test.runTest import org.junit.Assume import org.junit.Before import org.junit.runner.RunWith import platform.test.runner.parameterized.ParameterizedAndroidJunit4 Loading @@ -49,19 +57,33 @@ import platform.test.runner.parameterized.Parameters @OptIn(ExperimentalCoroutinesApi::class) @RunWith(ParameterizedAndroidJunit4::class) @SmallTest class MediaInRowInLandscapeViewModelTest(private val testData: TestData) : SysuiTestCase() { class MediaInRowInLandscapeViewModelTest( private val testData: TestData, flags: FlagsParameterization, ) : SysuiTestCase() { init { mSetFlagsRule.setFlagsParameterization(flags) } private val kosmos = testKosmos().apply { usingMediaInComposeFragment = testData.usingMedia } private val underTest by lazy { kosmos.mediaInRowInLandscapeViewModelFactory.create( TESTED_MEDIA_LOCATION, TESTED_MEDIA_BEHAVIOR, private val Kosmos.underTest by Kosmos.Fixture { mediaInRowInLandscapeViewModelFactory.create( testData.mediaLocation, toMediaBehavior(testData.mediaLocation), ) } @Before fun setUp() { // Skip this test if SceneContainerFlag is disabled and testData.shadeMode is Dual Assume.assumeFalse( "Skipping test: Dual shade requires SceneContainerFlag to be enabled.", !SceneContainerFlag.isEnabled && testData.shadeMode == ShadeMode.Dual, ) when (testData.shadeMode) { ShadeMode.Single -> kosmos.enableSingleShade() ShadeMode.Split -> kosmos.enableSplitShade() Loading @@ -70,7 +92,6 @@ class MediaInRowInLandscapeViewModelTest(private val testData: TestData) : Sysui } @Test @EnableSceneContainer fun shouldMediaShowInRow() = with(kosmos) { testScope.runTest { Loading @@ -83,16 +104,27 @@ class MediaInRowInLandscapeViewModelTest(private val testData: TestData) : Sysui } fakeConfigurationRepository.onConfigurationChange(config) mainResources.configuration.updateFrom(config) if (mediaControlsInCompose()) { setHasActiveMedia(testData.mediaVisible) } else { mediaHostStatesManager.updateHostState( testData.mediaLocation, MediaHost.MediaHostStateHolder().apply { visible = testData.mediaVisible }, ) runCurrent() } assertThat(underTest.shouldMediaShowInRow).isEqualTo(testData.mediaInRowExpected) } } private fun toMediaBehavior(@MediaLocation location: Int): MediaUiBehavior { return when (location) { LOCATION_QS -> QuickSettingsContainerViewModel.mediaUiBehavior else -> QuickQuickSettingsViewModel.mediaUiBehavior } } data class TestData( val usingMedia: Boolean, val shadeMode: ShadeMode, Loading @@ -107,17 +139,27 @@ class MediaInRowInLandscapeViewModelTest(private val testData: TestData) : Sysui shadeMode == ShadeMode.Single && orientation == Configuration.ORIENTATION_LANDSCAPE && screenLayoutLong == Configuration.SCREENLAYOUT_LONG_YES && mediaVisible && mediaLocation == TESTED_MEDIA_LOCATION mediaVisible } companion object { private const val TESTED_MEDIA_LOCATION = LOCATION_QS private val TESTED_MEDIA_BEHAVIOR = QuickSettingsContainerViewModel.mediaUiBehavior @JvmStatic @Parameters(name = "{0}") fun data(): Collection<TestData> { @Parameters(name = "testData={0}, flags={1}") fun data(): List<Array<Any>> { val allFlagsParameterization = progressionOf(Flags.FLAG_MEDIA_CONTROLS_IN_COMPOSE, Flags.FLAG_SCENE_CONTAINER) val testDataList = generateTestDataList() val allParameters = mutableListOf<Array<Any>>() testDataList.map { testData -> allFlagsParameterization.map { flagParam -> allParameters.add(arrayOf(testData, flagParam)) } } return allParameters } private fun generateTestDataList(): Collection<TestData> { val usingMediaValues = setOf(true, false) val shadeModeValues = setOf(ShadeMode.Single, ShadeMode.Split, ShadeMode.Dual) val orientationValues = Loading