summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/homecontrols/HomeControlsDreamStartableTest.kt134
1 files changed, 77 insertions, 57 deletions
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/homecontrols/HomeControlsDreamStartableTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/homecontrols/HomeControlsDreamStartableTest.kt
index ed45e8cff1f4..ef02817eb4ac 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/homecontrols/HomeControlsDreamStartableTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/homecontrols/HomeControlsDreamStartableTest.kt
@@ -23,88 +23,86 @@ import android.content.pm.ServiceInfo
import android.content.pm.UserInfo
import android.platform.test.annotations.DisableFlags
import android.platform.test.annotations.EnableFlags
+import android.platform.test.flag.junit.FlagsParameterization
import android.service.controls.flags.Flags.FLAG_HOME_PANEL_DREAM
-import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
+import com.android.systemui.Flags.FLAG_HOME_CONTROLS_DREAM_HSUM
+import com.android.systemui.Flags.homeControlsDreamHsum
import com.android.systemui.SysuiTestCase
import com.android.systemui.controls.ControlsServiceInfo
-import com.android.systemui.controls.dagger.ControlsComponent
-import com.android.systemui.controls.management.ControlsListingController
-import com.android.systemui.controls.panels.AuthorizedPanelsRepository
import com.android.systemui.controls.panels.SelectedComponentRepository
import com.android.systemui.controls.panels.authorizedPanelsRepository
import com.android.systemui.controls.panels.selectedComponentRepository
import com.android.systemui.dreams.homecontrols.system.HomeControlsDreamStartable
-import com.android.systemui.dreams.homecontrols.system.domain.interactor.HomeControlsComponentInteractor
import com.android.systemui.dreams.homecontrols.system.domain.interactor.controlsComponent
import com.android.systemui.dreams.homecontrols.system.domain.interactor.controlsListingController
import com.android.systemui.dreams.homecontrols.system.domain.interactor.homeControlsComponentInteractor
import com.android.systemui.kosmos.applicationCoroutineScope
import com.android.systemui.kosmos.testScope
+import com.android.systemui.settings.fakeUserTracker
import com.android.systemui.settings.userTracker
import com.android.systemui.testKosmos
-import com.android.systemui.user.data.repository.FakeUserRepository
import com.android.systemui.user.data.repository.fakeUserRepository
-import com.android.systemui.util.mockito.eq
-import com.android.systemui.util.mockito.whenever
import java.util.Optional
+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.mockito.Mock
import org.mockito.Mockito.verify
-import org.mockito.MockitoAnnotations
-
+import org.mockito.kotlin.doReturn
+import org.mockito.kotlin.eq
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.stub
+import org.mockito.kotlin.whenever
+import platform.test.runner.parameterized.ParameterizedAndroidJunit4
+import platform.test.runner.parameterized.Parameters
+
+@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
-@RunWith(AndroidJUnit4::class)
-class HomeControlsDreamStartableTest : SysuiTestCase() {
+@RunWith(ParameterizedAndroidJunit4::class)
+class HomeControlsDreamStartableTest(flags: FlagsParameterization) : SysuiTestCase() {
+ init {
+ mSetFlagsRule.setFlagsParameterization(flags)
+ }
private val kosmos = testKosmos()
+ private val testScope = kosmos.testScope
- @Mock private lateinit var packageManager: PackageManager
+ private val systemUserPackageManager = mock<PackageManager>()
+ private val userPackageManager = mock<PackageManager>()
- private lateinit var homeControlsComponentInteractor: HomeControlsComponentInteractor
- private lateinit var selectedComponentRepository: SelectedComponentRepository
- private lateinit var authorizedPanelsRepository: AuthorizedPanelsRepository
- private lateinit var userRepository: FakeUserRepository
- private lateinit var controlsComponent: ControlsComponent
- private lateinit var controlsListingController: ControlsListingController
+ private val selectedComponentRepository = kosmos.selectedComponentRepository
+ private val userRepository =
+ kosmos.fakeUserRepository.apply { setUserInfos(listOf(PRIMARY_USER)) }
+ private val controlsListingController =
+ kosmos.controlsListingController.stub {
+ on { getCurrentServices() } doReturn
+ listOf(buildControlsServiceInfo(TEST_COMPONENT_PANEL, "panel", hasPanel = true))
+ }
+ private val controlsComponent =
+ kosmos.controlsComponent.stub {
+ on { getControlsListingController() } doReturn Optional.of(controlsListingController)
+ }
- private lateinit var startable: HomeControlsDreamStartable
+ private val underTest by lazy {
+ HomeControlsDreamStartable(
+ mContext,
+ systemUserPackageManager,
+ kosmos.userTracker,
+ kosmos.homeControlsComponentInteractor,
+ kosmos.applicationCoroutineScope,
+ )
+ }
private val componentName = ComponentName(context, HomeControlsDreamService::class.java)
- private val testScope = kosmos.testScope
@Before
fun setUp() {
- MockitoAnnotations.initMocks(this)
-
- selectedComponentRepository = kosmos.selectedComponentRepository
- authorizedPanelsRepository = kosmos.authorizedPanelsRepository
- userRepository = kosmos.fakeUserRepository
- controlsComponent = kosmos.controlsComponent
- controlsListingController = kosmos.controlsListingController
-
- userRepository.setUserInfos(listOf(PRIMARY_USER))
-
- authorizedPanelsRepository.addAuthorizedPanels(setOf(TEST_PACKAGE_PANEL))
-
+ kosmos.authorizedPanelsRepository.addAuthorizedPanels(setOf(TEST_PACKAGE_PANEL))
whenever(controlsComponent.getControlsListingController())
.thenReturn(Optional.of(controlsListingController))
- whenever(controlsListingController.getCurrentServices())
- .thenReturn(listOf(ControlsServiceInfo(TEST_COMPONENT_PANEL, "panel", hasPanel = true)))
-
- homeControlsComponentInteractor = kosmos.homeControlsComponentInteractor
-
- startable =
- HomeControlsDreamStartable(
- mContext,
- packageManager,
- kosmos.userTracker,
- homeControlsComponentInteractor,
- kosmos.applicationCoroutineScope,
- )
+ whenever(kosmos.fakeUserTracker.userContext.packageManager).thenReturn(userPackageManager)
}
@Test
@@ -113,13 +111,19 @@ class HomeControlsDreamStartableTest : SysuiTestCase() {
testScope.runTest {
userRepository.setSelectedUserInfo(PRIMARY_USER)
selectedComponentRepository.setSelectedComponent(TEST_SELECTED_COMPONENT_PANEL)
- startable.start()
+ underTest.start()
runCurrent()
+ val packageManager =
+ if (homeControlsDreamHsum()) {
+ userPackageManager
+ } else {
+ systemUserPackageManager
+ }
verify(packageManager)
.setComponentEnabledSetting(
- eq(componentName),
- eq(PackageManager.COMPONENT_ENABLED_STATE_ENABLED),
- eq(PackageManager.DONT_KILL_APP),
+ componentName,
+ PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
+ PackageManager.DONT_KILL_APP,
)
}
@@ -128,13 +132,19 @@ class HomeControlsDreamStartableTest : SysuiTestCase() {
fun testStartDisablesHomeControlsDreamServiceWhenPanelComponentIsNull() =
testScope.runTest {
selectedComponentRepository.setSelectedComponent(TEST_SELECTED_COMPONENT_NON_PANEL)
- startable.start()
+ underTest.start()
runCurrent()
+ val packageManager =
+ if (homeControlsDreamHsum()) {
+ userPackageManager
+ } else {
+ systemUserPackageManager
+ }
verify(packageManager)
.setComponentEnabledSetting(
- eq(componentName),
- eq(PackageManager.COMPONENT_ENABLED_STATE_DISABLED),
- eq(PackageManager.DONT_KILL_APP),
+ componentName,
+ PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
+ PackageManager.DONT_KILL_APP,
)
}
@@ -143,8 +153,14 @@ class HomeControlsDreamStartableTest : SysuiTestCase() {
fun testStartDisablesDreamServiceWhenFlagIsDisabled() =
testScope.runTest {
selectedComponentRepository.setSelectedComponent(TEST_SELECTED_COMPONENT_NON_PANEL)
- startable.start()
+ underTest.start()
runCurrent()
+ val packageManager =
+ if (homeControlsDreamHsum()) {
+ userPackageManager
+ } else {
+ systemUserPackageManager
+ }
verify(packageManager)
.setComponentEnabledSetting(
eq(componentName),
@@ -153,7 +169,7 @@ class HomeControlsDreamStartableTest : SysuiTestCase() {
)
}
- private fun ControlsServiceInfo(
+ private fun buildControlsServiceInfo(
componentName: ComponentName,
label: CharSequence,
hasPanel: Boolean,
@@ -186,6 +202,10 @@ class HomeControlsDreamStartableTest : SysuiTestCase() {
}
companion object {
+ @get:Parameters(name = "{0}")
+ @JvmStatic
+ val params = FlagsParameterization.allCombinationsOf(FLAG_HOME_CONTROLS_DREAM_HSUM)
+
private const val PRIMARY_USER_ID = 0
private val PRIMARY_USER =
UserInfo(