Loading packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/homecontrols/HomeControlsDreamStartableTest.kt +77 −57 Original line number Diff line number Diff line Loading @@ -23,89 +23,87 @@ 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() @Mock private lateinit var packageManager: 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 lateinit var startable: HomeControlsDreamStartable private val componentName = ComponentName(context, HomeControlsDreamService::class.java) private val testScope = kosmos.testScope @Before fun setUp() { MockitoAnnotations.initMocks(this) private val systemUserPackageManager = mock<PackageManager>() private val userPackageManager = mock<PackageManager>() 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)) whenever(controlsComponent.getControlsListingController()) .thenReturn(Optional.of(controlsListingController)) whenever(controlsListingController.getCurrentServices()) .thenReturn(listOf(ControlsServiceInfo(TEST_COMPONENT_PANEL, "panel", hasPanel = true))) homeControlsComponentInteractor = kosmos.homeControlsComponentInteractor 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) } startable = private val underTest by lazy { HomeControlsDreamStartable( mContext, packageManager, systemUserPackageManager, kosmos.userTracker, homeControlsComponentInteractor, kosmos.homeControlsComponentInteractor, kosmos.applicationCoroutineScope, ) } private val componentName = ComponentName(context, HomeControlsDreamService::class.java) @Before fun setUp() { kosmos.authorizedPanelsRepository.addAuthorizedPanels(setOf(TEST_PACKAGE_PANEL)) whenever(controlsComponent.getControlsListingController()) .thenReturn(Optional.of(controlsListingController)) whenever(kosmos.fakeUserTracker.userContext.packageManager).thenReturn(userPackageManager) } @Test @EnableFlags(FLAG_HOME_PANEL_DREAM) Loading @@ -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, ) } Loading @@ -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, ) } Loading @@ -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), Loading @@ -153,7 +169,7 @@ class HomeControlsDreamStartableTest : SysuiTestCase() { ) } private fun ControlsServiceInfo( private fun buildControlsServiceInfo( componentName: ComponentName, label: CharSequence, hasPanel: Boolean, Loading Loading @@ -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( Loading Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/dreams/homecontrols/HomeControlsDreamStartableTest.kt +77 −57 Original line number Diff line number Diff line Loading @@ -23,89 +23,87 @@ 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() @Mock private lateinit var packageManager: 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 lateinit var startable: HomeControlsDreamStartable private val componentName = ComponentName(context, HomeControlsDreamService::class.java) private val testScope = kosmos.testScope @Before fun setUp() { MockitoAnnotations.initMocks(this) private val systemUserPackageManager = mock<PackageManager>() private val userPackageManager = mock<PackageManager>() 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)) whenever(controlsComponent.getControlsListingController()) .thenReturn(Optional.of(controlsListingController)) whenever(controlsListingController.getCurrentServices()) .thenReturn(listOf(ControlsServiceInfo(TEST_COMPONENT_PANEL, "panel", hasPanel = true))) homeControlsComponentInteractor = kosmos.homeControlsComponentInteractor 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) } startable = private val underTest by lazy { HomeControlsDreamStartable( mContext, packageManager, systemUserPackageManager, kosmos.userTracker, homeControlsComponentInteractor, kosmos.homeControlsComponentInteractor, kosmos.applicationCoroutineScope, ) } private val componentName = ComponentName(context, HomeControlsDreamService::class.java) @Before fun setUp() { kosmos.authorizedPanelsRepository.addAuthorizedPanels(setOf(TEST_PACKAGE_PANEL)) whenever(controlsComponent.getControlsListingController()) .thenReturn(Optional.of(controlsListingController)) whenever(kosmos.fakeUserTracker.userContext.packageManager).thenReturn(userPackageManager) } @Test @EnableFlags(FLAG_HOME_PANEL_DREAM) Loading @@ -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, ) } Loading @@ -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, ) } Loading @@ -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), Loading @@ -153,7 +169,7 @@ class HomeControlsDreamStartableTest : SysuiTestCase() { ) } private fun ControlsServiceInfo( private fun buildControlsServiceInfo( componentName: ComponentName, label: CharSequence, hasPanel: Boolean, Loading Loading @@ -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( Loading