summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Justin Weir <justinweir@google.com> 2024-04-26 13:29:47 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-04-26 13:29:47 +0000
commit1f447a8eea6988c44efa87e4b7a68b68aeada64d (patch)
treed64590d4f54c6bc5e86cf038c0e80ed690b672df
parenta4641776f4a4854146d274e42e44b9eda8dfe403 (diff)
parent4b616b1d3a053cd9e481da8e200b51d446c3a151 (diff)
Merge "Parameterize communal hub tests for scene container flag" into main
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/communal/view/viewmodel/CommunalViewModelTest.kt28
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/shade/GlanceableHubContainerControllerTest.kt34
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/shade/ShadeTestUtil.kt45
3 files changed, 93 insertions, 14 deletions
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/view/viewmodel/CommunalViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/view/viewmodel/CommunalViewModelTest.kt
index 779e79ed80c9..0f8f1a216f3f 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/view/viewmodel/CommunalViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/view/viewmodel/CommunalViewModelTest.kt
@@ -20,9 +20,9 @@ import android.app.smartspace.SmartspaceTarget
import android.appwidget.AppWidgetProviderInfo
import android.content.pm.UserInfo
import android.os.UserHandle
+import android.platform.test.flag.junit.FlagsParameterization
import android.provider.Settings
import android.widget.RemoteViews
-import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.Flags.FLAG_COMMUNAL_HUB
import com.android.systemui.SysuiTestCase
@@ -41,6 +41,7 @@ import com.android.systemui.communal.ui.viewmodel.CommunalViewModel.Companion.PO
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.deviceentry.domain.interactor.deviceEntryInteractor
import com.android.systemui.flags.Flags.COMMUNAL_SERVICE_ENABLED
+import com.android.systemui.flags.andSceneContainer
import com.android.systemui.flags.fakeFeatureFlagsClassic
import com.android.systemui.keyguard.data.repository.FakeKeyguardRepository
import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository
@@ -50,8 +51,9 @@ import com.android.systemui.log.logcatLogBuffer
import com.android.systemui.media.controls.ui.controller.MediaHierarchyManager
import com.android.systemui.media.controls.ui.view.MediaHost
import com.android.systemui.settings.fakeUserTracker
-import com.android.systemui.shade.data.repository.fakeShadeRepository
+import com.android.systemui.shade.ShadeTestUtil
import com.android.systemui.shade.domain.interactor.shadeInteractor
+import com.android.systemui.shade.shadeTestUtil
import com.android.systemui.smartspace.data.repository.FakeSmartspaceRepository
import com.android.systemui.smartspace.data.repository.fakeSmartspaceRepository
import com.android.systemui.testKosmos
@@ -70,11 +72,13 @@ import org.mockito.Mock
import org.mockito.Mockito
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(AndroidJUnit4::class)
-class CommunalViewModelTest : SysuiTestCase() {
+@RunWith(ParameterizedAndroidJunit4::class)
+class CommunalViewModelTest(flags: FlagsParameterization?) : SysuiTestCase() {
@Mock private lateinit var mediaHost: MediaHost
@Mock private lateinit var user: UserInfo
@Mock private lateinit var providerInfo: AppWidgetProviderInfo
@@ -88,9 +92,14 @@ class CommunalViewModelTest : SysuiTestCase() {
private lateinit var smartspaceRepository: FakeSmartspaceRepository
private lateinit var mediaRepository: FakeCommunalMediaRepository
private lateinit var userRepository: FakeUserRepository
+ private lateinit var shadeTestUtil: ShadeTestUtil
private lateinit var underTest: CommunalViewModel
+ init {
+ mSetFlagsRule.setFlagsParameterization(flags!!)
+ }
+
@Before
fun setUp() {
MockitoAnnotations.initMocks(this)
@@ -101,6 +110,7 @@ class CommunalViewModelTest : SysuiTestCase() {
smartspaceRepository = kosmos.fakeSmartspaceRepository
mediaRepository = kosmos.fakeCommunalMediaRepository
userRepository = kosmos.fakeUserRepository
+ shadeTestUtil = kosmos.shadeTestUtil
kosmos.fakeFeatureFlagsClassic.set(COMMUNAL_SERVICE_ENABLED, true)
mSetFlagsRule.enableFlags(FLAG_COMMUNAL_HUB)
@@ -274,7 +284,7 @@ class CommunalViewModelTest : SysuiTestCase() {
testScope.runTest {
// On keyguard without any shade expansion.
kosmos.fakeKeyguardRepository.setStatusBarState(StatusBarState.KEYGUARD)
- kosmos.fakeShadeRepository.setLockscreenShadeExpansion(0f)
+ shadeTestUtil.setLockscreenShadeExpansion(0f)
runCurrent()
assertThat(underTest.canChangeScene()).isTrue()
}
@@ -284,7 +294,7 @@ class CommunalViewModelTest : SysuiTestCase() {
testScope.runTest {
// On keyguard with shade fully expanded.
kosmos.fakeKeyguardRepository.setStatusBarState(StatusBarState.KEYGUARD)
- kosmos.fakeShadeRepository.setLockscreenShadeExpansion(1f)
+ shadeTestUtil.setLockscreenShadeExpansion(1f)
runCurrent()
assertThat(underTest.canChangeScene()).isFalse()
}
@@ -297,5 +307,11 @@ class CommunalViewModelTest : SysuiTestCase() {
private companion object {
val MAIN_USER_INFO = UserInfo(0, "primary", UserInfo.FLAG_MAIN)
+
+ @JvmStatic
+ @Parameters(name = "{0}")
+ fun getParams(): List<FlagsParameterization> {
+ return FlagsParameterization.allCombinationsOf().andSceneContainer()
+ }
}
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/GlanceableHubContainerControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shade/GlanceableHubContainerControllerTest.kt
index 7b5c1d3fe139..19b137c01ce4 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/shade/GlanceableHubContainerControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/shade/GlanceableHubContainerControllerTest.kt
@@ -18,7 +18,7 @@ package com.android.systemui.shade
import android.graphics.Rect
import android.os.PowerManager
-import android.testing.AndroidTestingRunner
+import android.platform.test.flag.junit.FlagsParameterization
import android.testing.TestableLooper
import android.testing.ViewUtils
import android.view.MotionEvent
@@ -41,6 +41,7 @@ import com.android.systemui.communal.shared.model.CommunalScenes
import com.android.systemui.communal.ui.viewmodel.CommunalViewModel
import com.android.systemui.communal.util.CommunalColors
import com.android.systemui.coroutines.collectLastValue
+import com.android.systemui.flags.andSceneContainer
import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository
import com.android.systemui.keyguard.domain.interactor.keyguardInteractor
import com.android.systemui.keyguard.domain.interactor.keyguardTransitionInteractor
@@ -49,8 +50,10 @@ import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.testDispatcher
import com.android.systemui.kosmos.testScope
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.Scenes
import com.android.systemui.scene.shared.model.sceneDataSourceDelegator
-import com.android.systemui.shade.data.repository.fakeShadeRepository
import com.android.systemui.shade.domain.interactor.shadeInteractor
import com.android.systemui.statusbar.phone.SystemUIDialogFactory
import com.android.systemui.testKosmos
@@ -69,12 +72,14 @@ import org.mockito.Mock
import org.mockito.Mockito.times
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
+import platform.test.runner.parameterized.ParameterizedAndroidJunit4
+import platform.test.runner.parameterized.Parameters
@ExperimentalCoroutinesApi
-@RunWith(AndroidTestingRunner::class)
+@RunWith(ParameterizedAndroidJunit4::class)
@TestableLooper.RunWithLooper(setAsMainLooper = true)
@SmallTest
-class GlanceableHubContainerControllerTest : SysuiTestCase() {
+class GlanceableHubContainerControllerTest(flags: FlagsParameterization?) : SysuiTestCase() {
private val kosmos: Kosmos =
testKosmos().apply {
// UnconfinedTestDispatcher makes testing simpler due to CommunalInteractor flows using
@@ -96,6 +101,10 @@ class GlanceableHubContainerControllerTest : SysuiTestCase() {
private lateinit var communalRepository: FakeCommunalRepository
private lateinit var underTest: GlanceableHubContainerController
+ init {
+ mSetFlagsRule.setFlagsParameterization(flags!!)
+ }
+
@Before
fun setUp() {
MockitoAnnotations.initMocks(this)
@@ -251,7 +260,7 @@ class GlanceableHubContainerControllerTest : SysuiTestCase() {
goToScene(CommunalScenes.Communal)
// Shade shows up.
- fakeShadeRepository.setQsExpansion(1.0f)
+ shadeTestUtil.setQsExpansion(1.0f)
testableLooper.processAllMessages()
// Touch events are not intercepted.
@@ -405,7 +414,7 @@ class GlanceableHubContainerControllerTest : SysuiTestCase() {
goToScene(CommunalScenes.Communal)
// Shade shows up.
- fakeShadeRepository.setQsExpansion(1.0f)
+ shadeTestUtil.setQsExpansion(1.0f)
testableLooper.processAllMessages()
assertThat(underTest.lifecycle.currentState).isEqualTo(Lifecycle.State.STARTED)
@@ -458,6 +467,13 @@ class GlanceableHubContainerControllerTest : SysuiTestCase() {
}
private fun goToScene(scene: SceneKey) {
+ if (SceneContainerFlag.isEnabled) {
+ if (scene == CommunalScenes.Communal) {
+ kosmos.sceneInteractor.changeScene(Scenes.Communal, "test")
+ } else {
+ kosmos.sceneInteractor.changeScene(Scenes.Lockscreen, "test")
+ }
+ }
communalRepository.changeScene(scene)
testableLooper.processAllMessages()
}
@@ -486,5 +502,11 @@ class GlanceableHubContainerControllerTest : SysuiTestCase() {
MotionEvent.obtain(0L, 0L, MotionEvent.ACTION_DOWN, CONTAINER_WIDTH.toFloat(), 0f, 0)
private val MOVE_EVENT = MotionEvent.obtain(0L, 0L, MotionEvent.ACTION_MOVE, 0f, 0f, 0)
private val UP_EVENT = MotionEvent.obtain(0L, 0L, MotionEvent.ACTION_UP, 0f, 0f, 0)
+
+ @JvmStatic
+ @Parameters(name = "{0}")
+ fun getParams(): List<FlagsParameterization> {
+ return FlagsParameterization.allCombinationsOf().andSceneContainer()
+ }
}
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/shade/ShadeTestUtil.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/shade/ShadeTestUtil.kt
index 4b85a42b3b9b..d17dd6c518a4 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/shade/ShadeTestUtil.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/shade/ShadeTestUtil.kt
@@ -31,6 +31,16 @@ import org.junit.Assert
/** Sets up shade state for tests for either value of the scene container flag. */
class ShadeTestUtil constructor(val delegate: ShadeTestUtilDelegate) {
+ /** Sets shade expansion to a value between 0-1. */
+ fun setShadeExpansion(shadeExpansion: Float) {
+ setShadeAndQsExpansion(shadeExpansion, 0f)
+ }
+
+ /** Sets QS expansion to a value between 0-1. */
+ fun setQsExpansion(qsExpansion: Float) {
+ setShadeAndQsExpansion(0f, qsExpansion)
+ }
+
/** Sets both shade and QS expansion. One value must be zero or values must add up to 1f. */
fun setShadeAndQsExpansion(shadeExpansion: Float, qsExpansion: Float) {
Assert.assertTrue(
@@ -40,15 +50,24 @@ class ShadeTestUtil constructor(val delegate: ShadeTestUtilDelegate) {
delegate.assertFlagValid()
delegate.setShadeAndQsExpansionInternal(shadeExpansion, qsExpansion)
}
+
+ /** Sets the shade expansion on the lockscreen to the given amount from 0-1. */
+ fun setLockscreenShadeExpansion(lockscreenShadeExpansion: Float) {
+ delegate.assertFlagValid()
+ delegate.setLockscreenShadeExpansion(lockscreenShadeExpansion)
+ }
}
/** Sets up shade state for tests for a specific value of the scene container flag. */
interface ShadeTestUtilDelegate {
+ /** Asserts that the scene container flag matches this implementation. */
+ fun assertFlagValid()
+
/** Sets both shade and QS expansion. One value must be zero or values must add up to 1f. */
fun setShadeAndQsExpansionInternal(shadeExpansion: Float, qsExpansion: Float)
- /** Asserts that the scene container flag matches this implementation. */
- fun assertFlagValid()
+ /** Sets the shade expansion on the lockscreen to the given amount from 0-1. */
+ fun setLockscreenShadeExpansion(lockscreenShadeExpansion: Float)
}
/** Sets up shade state for tests when the scene container flag is disabled. */
@@ -60,6 +79,10 @@ class ShadeTestUtilLegacyImpl(val testScope: TestScope, val shadeRepository: Fak
testScope.runCurrent()
}
+ override fun setLockscreenShadeExpansion(lockscreenShadeExpansion: Float) {
+ shadeRepository.setLockscreenShadeExpansion(lockscreenShadeExpansion)
+ }
+
override fun assertFlagValid() {
Assert.assertFalse(SceneContainerFlag.isEnabled)
}
@@ -78,6 +101,24 @@ class ShadeTestUtilSceneImpl(val testScope: TestScope, val sceneInteractor: Scen
}
}
+ override fun setLockscreenShadeExpansion(lockscreenShadeExpansion: Float) {
+ if (lockscreenShadeExpansion == 0f) {
+ setIdleScene(Scenes.Lockscreen)
+ } else if (lockscreenShadeExpansion == 1f) {
+ setIdleScene(Scenes.Shade)
+ } else {
+ setTransitionProgress(Scenes.Lockscreen, Scenes.Shade, lockscreenShadeExpansion)
+ }
+ }
+
+ private fun setIdleScene(scene: SceneKey) {
+ sceneInteractor.changeScene(scene, "test")
+ val transitionState =
+ MutableStateFlow<ObservableTransitionState>(ObservableTransitionState.Idle(scene))
+ sceneInteractor.setTransitionState(transitionState)
+ testScope.runCurrent()
+ }
+
private fun setTransitionProgress(from: SceneKey, to: SceneKey, progress: Float) {
sceneInteractor.changeScene(from, "test")
val transitionState =