Loading packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/LockscreenScene.kt +5 −6 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import javax.inject.Inject import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.stateIn Loading @@ -43,23 +44,21 @@ class LockscreenScene @Inject constructor( @Application private val applicationScope: CoroutineScope, private val viewModel: LockscreenSceneViewModel, viewModel: LockscreenSceneViewModel, private val lockscreenContent: Lazy<LockscreenContent>, ) : ComposableScene { override val key = SceneKey.Lockscreen override val destinationScenes: StateFlow<Map<UserAction, SceneModel>> = viewModel.upDestinationSceneKey .map { pageKey -> destinationScenes(up = pageKey, left = viewModel.leftDestinationSceneKey) } combine(viewModel.upDestinationSceneKey, viewModel.leftDestinationSceneKey, ::Pair) .map { (upKey, leftKey) -> destinationScenes(up = upKey, left = leftKey) } .stateIn( scope = applicationScope, started = SharingStarted.Eagerly, initialValue = destinationScenes( up = viewModel.upDestinationSceneKey.value, left = viewModel.leftDestinationSceneKey, left = viewModel.leftDestinationSceneKey.value, ) ) Loading packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalRepositoryImplTest.kt +0 −50 Original line number Diff line number Diff line Loading @@ -16,26 +16,18 @@ package com.android.systemui.communal.data.repository import android.content.pm.UserInfo 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 import com.android.systemui.communal.shared.model.CommunalSceneKey import com.android.systemui.communal.shared.model.ObservableCommunalTransitionState import com.android.systemui.coroutines.collectLastValue import com.android.systemui.flags.Flags import com.android.systemui.flags.fakeFeatureFlagsClassic import com.android.systemui.kosmos.testDispatcher import com.android.systemui.kosmos.testScope import com.android.systemui.scene.data.repository.sceneContainerRepository import com.android.systemui.scene.shared.flag.fakeSceneContainerFlags import com.android.systemui.scene.shared.model.SceneKey import com.android.systemui.scene.shared.model.SceneModel 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.settings.FakeSettings import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.test.runTest Loading @@ -48,37 +40,20 @@ import org.junit.runner.RunWith class CommunalRepositoryImplTest : SysuiTestCase() { private lateinit var underTest: CommunalRepositoryImpl private lateinit var secureSettings: FakeSettings private lateinit var userRepository: FakeUserRepository private val kosmos = testKosmos() private val testScope = kosmos.testScope private val sceneContainerRepository = kosmos.sceneContainerRepository @Before fun setUp() { secureSettings = FakeSettings() userRepository = kosmos.fakeUserRepository val listOfUserInfo = listOf(MAIN_USER_INFO) userRepository.setUserInfos(listOfUserInfo) kosmos.fakeFeatureFlagsClassic.apply { set(Flags.COMMUNAL_SERVICE_ENABLED, true) } mSetFlagsRule.enableFlags(FLAG_COMMUNAL_HUB) underTest = createRepositoryImpl(false) } private fun createRepositoryImpl(sceneContainerEnabled: Boolean): CommunalRepositoryImpl { return CommunalRepositoryImpl( testScope.backgroundScope, testScope.backgroundScope, kosmos.testDispatcher, kosmos.fakeFeatureFlagsClassic, kosmos.fakeSceneContainerFlags.apply { enabled = sceneContainerEnabled }, sceneContainerRepository, kosmos.fakeUserRepository, secureSettings, ) } Loading Loading @@ -159,29 +134,4 @@ class CommunalRepositoryImplTest : SysuiTestCase() { assertThat(transitionState) .isEqualTo(ObservableCommunalTransitionState.Idle(CommunalSceneKey.DEFAULT)) } @Test fun communalEnabledState_false_whenGlanceableHubSettingFalse() = testScope.runTest { userRepository.setSelectedUserInfo(MAIN_USER_INFO) secureSettings.putIntForUser(GLANCEABLE_HUB_ENABLED, 0, MAIN_USER_INFO.id) val communalEnabled by collectLastValue(underTest.communalEnabledState) assertThat(communalEnabled).isFalse() } @Test fun communalEnabledState_true_whenGlanceableHubSettingTrue() = testScope.runTest { userRepository.setSelectedUserInfo(MAIN_USER_INFO) secureSettings.putIntForUser(GLANCEABLE_HUB_ENABLED, 1, MAIN_USER_INFO.id) val communalEnabled by collectLastValue(underTest.communalEnabledState) assertThat(communalEnabled).isTrue() } companion object { private const val GLANCEABLE_HUB_ENABLED = "glanceable_hub_enabled" private val MAIN_USER_INFO = UserInfo(0, "primary", UserInfo.FLAG_MAIN) } } packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalSettingsRepositoryImplTest.kt 0 → 100644 +153 −0 Original line number Diff line number Diff line /* * Copyright (C) 2024 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.systemui.communal.data.repository import android.app.admin.DevicePolicyManager import android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_FEATURES_NONE import android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_WIDGETS_ALL import android.app.admin.devicePolicyManager import android.content.Intent import android.content.pm.UserInfo import android.platform.test.annotations.DisableFlags import android.platform.test.annotations.EnableFlags 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 import com.android.systemui.broadcast.broadcastDispatcher import com.android.systemui.communal.data.model.DisabledReason import com.android.systemui.communal.data.repository.CommunalSettingsRepositoryImpl.Companion.GLANCEABLE_HUB_ENABLED import com.android.systemui.coroutines.collectLastValue import com.android.systemui.flags.Flags.COMMUNAL_SERVICE_ENABLED import com.android.systemui.flags.fakeFeatureFlagsClassic import com.android.systemui.kosmos.testScope import com.android.systemui.testKosmos import com.android.systemui.util.mockito.nullable import com.android.systemui.util.mockito.whenever import com.android.systemui.util.settings.fakeSettings import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.test.runTest import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.mockito.ArgumentMatchers.eq @SmallTest @RunWith(AndroidJUnit4::class) class CommunalSettingsRepositoryImplTest : SysuiTestCase() { private val kosmos = testKosmos() private val testScope = kosmos.testScope private lateinit var underTest: CommunalSettingsRepository @Before fun setUp() { kosmos.fakeFeatureFlagsClassic.set(COMMUNAL_SERVICE_ENABLED, true) setKeyguardFeaturesDisabled(PRIMARY_USER, KEYGUARD_DISABLE_FEATURES_NONE) setKeyguardFeaturesDisabled(SECONDARY_USER, KEYGUARD_DISABLE_FEATURES_NONE) underTest = kosmos.communalSettingsRepository } @EnableFlags(FLAG_COMMUNAL_HUB) @Test fun secondaryUserIsInvalid() = testScope.runTest { val enabledState by collectLastValue(underTest.getEnabledState(SECONDARY_USER)) assertThat(enabledState?.enabled).isFalse() assertThat(enabledState).containsExactly(DisabledReason.DISABLED_REASON_INVALID_USER) } @EnableFlags(FLAG_COMMUNAL_HUB) @Test fun classicFlagIsDisabled() = testScope.runTest { kosmos.fakeFeatureFlagsClassic.set(COMMUNAL_SERVICE_ENABLED, false) val enabledState by collectLastValue(underTest.getEnabledState(PRIMARY_USER)) assertThat(enabledState?.enabled).isFalse() assertThat(enabledState).containsExactly(DisabledReason.DISABLED_REASON_FLAG) } @DisableFlags(FLAG_COMMUNAL_HUB) @Test fun communalHubFlagIsDisabled() = testScope.runTest { val enabledState by collectLastValue(underTest.getEnabledState(PRIMARY_USER)) assertThat(enabledState?.enabled).isFalse() assertThat(enabledState).containsExactly(DisabledReason.DISABLED_REASON_FLAG) } @EnableFlags(FLAG_COMMUNAL_HUB) @Test fun hubIsDisabledByUser() = testScope.runTest { kosmos.fakeSettings.putIntForUser(GLANCEABLE_HUB_ENABLED, 0, PRIMARY_USER.id) val enabledState by collectLastValue(underTest.getEnabledState(PRIMARY_USER)) assertThat(enabledState?.enabled).isFalse() assertThat(enabledState).containsExactly(DisabledReason.DISABLED_REASON_USER_SETTING) kosmos.fakeSettings.putIntForUser(GLANCEABLE_HUB_ENABLED, 1, SECONDARY_USER.id) assertThat(enabledState?.enabled).isFalse() kosmos.fakeSettings.putIntForUser(GLANCEABLE_HUB_ENABLED, 1, PRIMARY_USER.id) assertThat(enabledState?.enabled).isTrue() } @EnableFlags(FLAG_COMMUNAL_HUB) @Test fun hubIsDisabledByDevicePolicy() = testScope.runTest { val enabledState by collectLastValue(underTest.getEnabledState(PRIMARY_USER)) assertThat(enabledState?.enabled).isTrue() setKeyguardFeaturesDisabled(PRIMARY_USER, KEYGUARD_DISABLE_WIDGETS_ALL) assertThat(enabledState?.enabled).isFalse() assertThat(enabledState).containsExactly(DisabledReason.DISABLED_REASON_DEVICE_POLICY) } @EnableFlags(FLAG_COMMUNAL_HUB) @Test fun hubIsDisabledByUserAndDevicePolicy() = testScope.runTest { val enabledState by collectLastValue(underTest.getEnabledState(PRIMARY_USER)) assertThat(enabledState?.enabled).isTrue() kosmos.fakeSettings.putIntForUser(GLANCEABLE_HUB_ENABLED, 0, PRIMARY_USER.id) setKeyguardFeaturesDisabled(PRIMARY_USER, KEYGUARD_DISABLE_WIDGETS_ALL) assertThat(enabledState?.enabled).isFalse() assertThat(enabledState) .containsExactly( DisabledReason.DISABLED_REASON_DEVICE_POLICY, DisabledReason.DISABLED_REASON_USER_SETTING, ) } private fun setKeyguardFeaturesDisabled(user: UserInfo, disabledFlags: Int) { whenever(kosmos.devicePolicyManager.getKeyguardDisabledFeatures(nullable(), eq(user.id))) .thenReturn(disabledFlags) kosmos.broadcastDispatcher.sendIntentToMatchingReceiversOnly( context, Intent(DevicePolicyManager.ACTION_DEVICE_POLICY_MANAGER_STATE_CHANGED), ) } private companion object { val PRIMARY_USER = UserInfo(/* id= */ 0, /* name= */ "primary user", /* flags= */ UserInfo.FLAG_MAIN) val SECONDARY_USER = UserInfo(/* id= */ 1, /* name= */ "secondary user", /* flags= */ 0) } } packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalInteractorCommunalDisabledTest.kt +2 −1 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.systemui.communal.domain.interactor 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 import com.android.systemui.communal.data.repository.FakeCommunalRepository import com.android.systemui.communal.data.repository.FakeCommunalWidgetRepository Loading Loading @@ -59,7 +60,7 @@ class CommunalInteractorCommunalDisabledTest : SysuiTestCase() { widgetRepository = kosmos.fakeCommunalWidgetRepository keyguardRepository = kosmos.fakeKeyguardRepository communalRepository.setIsCommunalEnabled(false) mSetFlagsRule.disableFlags(FLAG_COMMUNAL_HUB) underTest = kosmos.communalInteractor } Loading packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalInteractorTest.kt +13 −6 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import android.provider.Settings.Secure.HUB_MODE_TUTORIAL_COMPLETED 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 import com.android.systemui.communal.data.repository.FakeCommunalMediaRepository import com.android.systemui.communal.data.repository.FakeCommunalPrefsRepository Loading @@ -41,6 +42,8 @@ import com.android.systemui.communal.shared.model.CommunalWidgetContentModel import com.android.systemui.communal.shared.model.ObservableCommunalTransitionState import com.android.systemui.communal.widgets.EditWidgetsActivityStarter import com.android.systemui.coroutines.collectLastValue import com.android.systemui.flags.Flags import com.android.systemui.flags.fakeFeatureFlagsClassic import com.android.systemui.keyguard.data.repository.FakeKeyguardRepository import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository import com.android.systemui.kosmos.testScope Loading Loading @@ -109,12 +112,19 @@ class CommunalInteractorTest : SysuiTestCase() { whenever(secondaryUser.isMain).thenReturn(false) userRepository.setUserInfos(listOf(mainUser, secondaryUser)) kosmos.fakeFeatureFlagsClassic.set(Flags.COMMUNAL_SERVICE_ENABLED, true) mSetFlagsRule.enableFlags(FLAG_COMMUNAL_HUB) underTest = kosmos.communalInteractor } @Test fun communalEnabled_true() = testScope.runTest { assertThat(underTest.isCommunalEnabled).isTrue() } testScope.runTest { userRepository.setSelectedUserInfo(mainUser) runCurrent() assertThat(underTest.isCommunalEnabled).isTrue() } @Test fun isCommunalAvailable_storageUnlockedAndMainUser_true() = Loading @@ -125,7 +135,6 @@ class CommunalInteractorTest : SysuiTestCase() { keyguardRepository.setIsEncryptedOrLockdown(false) userRepository.setSelectedUserInfo(mainUser) keyguardRepository.setKeyguardShowing(true) communalRepository.setCommunalEnabledState(true) assertThat(isAvailable).isTrue() } Loading @@ -139,7 +148,6 @@ class CommunalInteractorTest : SysuiTestCase() { keyguardRepository.setIsEncryptedOrLockdown(true) userRepository.setSelectedUserInfo(mainUser) keyguardRepository.setKeyguardShowing(true) communalRepository.setCommunalEnabledState(true) assertThat(isAvailable).isFalse() } Loading @@ -153,7 +161,6 @@ class CommunalInteractorTest : SysuiTestCase() { keyguardRepository.setIsEncryptedOrLockdown(false) userRepository.setSelectedUserInfo(secondaryUser) keyguardRepository.setKeyguardShowing(true) communalRepository.setCommunalEnabledState(true) assertThat(isAvailable).isFalse() } Loading @@ -167,7 +174,6 @@ class CommunalInteractorTest : SysuiTestCase() { keyguardRepository.setIsEncryptedOrLockdown(false) userRepository.setSelectedUserInfo(mainUser) keyguardRepository.setDreaming(true) communalRepository.setCommunalEnabledState(true) assertThat(isAvailable).isTrue() } Loading @@ -175,13 +181,14 @@ class CommunalInteractorTest : SysuiTestCase() { @Test fun isCommunalAvailable_communalDisabled_false() = testScope.runTest { mSetFlagsRule.disableFlags(FLAG_COMMUNAL_HUB) val isAvailable by collectLastValue(underTest.isCommunalAvailable) assertThat(isAvailable).isFalse() keyguardRepository.setIsEncryptedOrLockdown(false) userRepository.setSelectedUserInfo(mainUser) keyguardRepository.setKeyguardShowing(true) communalRepository.setCommunalEnabledState(false) assertThat(isAvailable).isFalse() } Loading Loading
packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/LockscreenScene.kt +5 −6 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import javax.inject.Inject import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.stateIn Loading @@ -43,23 +44,21 @@ class LockscreenScene @Inject constructor( @Application private val applicationScope: CoroutineScope, private val viewModel: LockscreenSceneViewModel, viewModel: LockscreenSceneViewModel, private val lockscreenContent: Lazy<LockscreenContent>, ) : ComposableScene { override val key = SceneKey.Lockscreen override val destinationScenes: StateFlow<Map<UserAction, SceneModel>> = viewModel.upDestinationSceneKey .map { pageKey -> destinationScenes(up = pageKey, left = viewModel.leftDestinationSceneKey) } combine(viewModel.upDestinationSceneKey, viewModel.leftDestinationSceneKey, ::Pair) .map { (upKey, leftKey) -> destinationScenes(up = upKey, left = leftKey) } .stateIn( scope = applicationScope, started = SharingStarted.Eagerly, initialValue = destinationScenes( up = viewModel.upDestinationSceneKey.value, left = viewModel.leftDestinationSceneKey, left = viewModel.leftDestinationSceneKey.value, ) ) Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalRepositoryImplTest.kt +0 −50 Original line number Diff line number Diff line Loading @@ -16,26 +16,18 @@ package com.android.systemui.communal.data.repository import android.content.pm.UserInfo 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 import com.android.systemui.communal.shared.model.CommunalSceneKey import com.android.systemui.communal.shared.model.ObservableCommunalTransitionState import com.android.systemui.coroutines.collectLastValue import com.android.systemui.flags.Flags import com.android.systemui.flags.fakeFeatureFlagsClassic import com.android.systemui.kosmos.testDispatcher import com.android.systemui.kosmos.testScope import com.android.systemui.scene.data.repository.sceneContainerRepository import com.android.systemui.scene.shared.flag.fakeSceneContainerFlags import com.android.systemui.scene.shared.model.SceneKey import com.android.systemui.scene.shared.model.SceneModel 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.settings.FakeSettings import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.test.runTest Loading @@ -48,37 +40,20 @@ import org.junit.runner.RunWith class CommunalRepositoryImplTest : SysuiTestCase() { private lateinit var underTest: CommunalRepositoryImpl private lateinit var secureSettings: FakeSettings private lateinit var userRepository: FakeUserRepository private val kosmos = testKosmos() private val testScope = kosmos.testScope private val sceneContainerRepository = kosmos.sceneContainerRepository @Before fun setUp() { secureSettings = FakeSettings() userRepository = kosmos.fakeUserRepository val listOfUserInfo = listOf(MAIN_USER_INFO) userRepository.setUserInfos(listOfUserInfo) kosmos.fakeFeatureFlagsClassic.apply { set(Flags.COMMUNAL_SERVICE_ENABLED, true) } mSetFlagsRule.enableFlags(FLAG_COMMUNAL_HUB) underTest = createRepositoryImpl(false) } private fun createRepositoryImpl(sceneContainerEnabled: Boolean): CommunalRepositoryImpl { return CommunalRepositoryImpl( testScope.backgroundScope, testScope.backgroundScope, kosmos.testDispatcher, kosmos.fakeFeatureFlagsClassic, kosmos.fakeSceneContainerFlags.apply { enabled = sceneContainerEnabled }, sceneContainerRepository, kosmos.fakeUserRepository, secureSettings, ) } Loading Loading @@ -159,29 +134,4 @@ class CommunalRepositoryImplTest : SysuiTestCase() { assertThat(transitionState) .isEqualTo(ObservableCommunalTransitionState.Idle(CommunalSceneKey.DEFAULT)) } @Test fun communalEnabledState_false_whenGlanceableHubSettingFalse() = testScope.runTest { userRepository.setSelectedUserInfo(MAIN_USER_INFO) secureSettings.putIntForUser(GLANCEABLE_HUB_ENABLED, 0, MAIN_USER_INFO.id) val communalEnabled by collectLastValue(underTest.communalEnabledState) assertThat(communalEnabled).isFalse() } @Test fun communalEnabledState_true_whenGlanceableHubSettingTrue() = testScope.runTest { userRepository.setSelectedUserInfo(MAIN_USER_INFO) secureSettings.putIntForUser(GLANCEABLE_HUB_ENABLED, 1, MAIN_USER_INFO.id) val communalEnabled by collectLastValue(underTest.communalEnabledState) assertThat(communalEnabled).isTrue() } companion object { private const val GLANCEABLE_HUB_ENABLED = "glanceable_hub_enabled" private val MAIN_USER_INFO = UserInfo(0, "primary", UserInfo.FLAG_MAIN) } }
packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalSettingsRepositoryImplTest.kt 0 → 100644 +153 −0 Original line number Diff line number Diff line /* * Copyright (C) 2024 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.systemui.communal.data.repository import android.app.admin.DevicePolicyManager import android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_FEATURES_NONE import android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_WIDGETS_ALL import android.app.admin.devicePolicyManager import android.content.Intent import android.content.pm.UserInfo import android.platform.test.annotations.DisableFlags import android.platform.test.annotations.EnableFlags 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 import com.android.systemui.broadcast.broadcastDispatcher import com.android.systemui.communal.data.model.DisabledReason import com.android.systemui.communal.data.repository.CommunalSettingsRepositoryImpl.Companion.GLANCEABLE_HUB_ENABLED import com.android.systemui.coroutines.collectLastValue import com.android.systemui.flags.Flags.COMMUNAL_SERVICE_ENABLED import com.android.systemui.flags.fakeFeatureFlagsClassic import com.android.systemui.kosmos.testScope import com.android.systemui.testKosmos import com.android.systemui.util.mockito.nullable import com.android.systemui.util.mockito.whenever import com.android.systemui.util.settings.fakeSettings import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.test.runTest import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.mockito.ArgumentMatchers.eq @SmallTest @RunWith(AndroidJUnit4::class) class CommunalSettingsRepositoryImplTest : SysuiTestCase() { private val kosmos = testKosmos() private val testScope = kosmos.testScope private lateinit var underTest: CommunalSettingsRepository @Before fun setUp() { kosmos.fakeFeatureFlagsClassic.set(COMMUNAL_SERVICE_ENABLED, true) setKeyguardFeaturesDisabled(PRIMARY_USER, KEYGUARD_DISABLE_FEATURES_NONE) setKeyguardFeaturesDisabled(SECONDARY_USER, KEYGUARD_DISABLE_FEATURES_NONE) underTest = kosmos.communalSettingsRepository } @EnableFlags(FLAG_COMMUNAL_HUB) @Test fun secondaryUserIsInvalid() = testScope.runTest { val enabledState by collectLastValue(underTest.getEnabledState(SECONDARY_USER)) assertThat(enabledState?.enabled).isFalse() assertThat(enabledState).containsExactly(DisabledReason.DISABLED_REASON_INVALID_USER) } @EnableFlags(FLAG_COMMUNAL_HUB) @Test fun classicFlagIsDisabled() = testScope.runTest { kosmos.fakeFeatureFlagsClassic.set(COMMUNAL_SERVICE_ENABLED, false) val enabledState by collectLastValue(underTest.getEnabledState(PRIMARY_USER)) assertThat(enabledState?.enabled).isFalse() assertThat(enabledState).containsExactly(DisabledReason.DISABLED_REASON_FLAG) } @DisableFlags(FLAG_COMMUNAL_HUB) @Test fun communalHubFlagIsDisabled() = testScope.runTest { val enabledState by collectLastValue(underTest.getEnabledState(PRIMARY_USER)) assertThat(enabledState?.enabled).isFalse() assertThat(enabledState).containsExactly(DisabledReason.DISABLED_REASON_FLAG) } @EnableFlags(FLAG_COMMUNAL_HUB) @Test fun hubIsDisabledByUser() = testScope.runTest { kosmos.fakeSettings.putIntForUser(GLANCEABLE_HUB_ENABLED, 0, PRIMARY_USER.id) val enabledState by collectLastValue(underTest.getEnabledState(PRIMARY_USER)) assertThat(enabledState?.enabled).isFalse() assertThat(enabledState).containsExactly(DisabledReason.DISABLED_REASON_USER_SETTING) kosmos.fakeSettings.putIntForUser(GLANCEABLE_HUB_ENABLED, 1, SECONDARY_USER.id) assertThat(enabledState?.enabled).isFalse() kosmos.fakeSettings.putIntForUser(GLANCEABLE_HUB_ENABLED, 1, PRIMARY_USER.id) assertThat(enabledState?.enabled).isTrue() } @EnableFlags(FLAG_COMMUNAL_HUB) @Test fun hubIsDisabledByDevicePolicy() = testScope.runTest { val enabledState by collectLastValue(underTest.getEnabledState(PRIMARY_USER)) assertThat(enabledState?.enabled).isTrue() setKeyguardFeaturesDisabled(PRIMARY_USER, KEYGUARD_DISABLE_WIDGETS_ALL) assertThat(enabledState?.enabled).isFalse() assertThat(enabledState).containsExactly(DisabledReason.DISABLED_REASON_DEVICE_POLICY) } @EnableFlags(FLAG_COMMUNAL_HUB) @Test fun hubIsDisabledByUserAndDevicePolicy() = testScope.runTest { val enabledState by collectLastValue(underTest.getEnabledState(PRIMARY_USER)) assertThat(enabledState?.enabled).isTrue() kosmos.fakeSettings.putIntForUser(GLANCEABLE_HUB_ENABLED, 0, PRIMARY_USER.id) setKeyguardFeaturesDisabled(PRIMARY_USER, KEYGUARD_DISABLE_WIDGETS_ALL) assertThat(enabledState?.enabled).isFalse() assertThat(enabledState) .containsExactly( DisabledReason.DISABLED_REASON_DEVICE_POLICY, DisabledReason.DISABLED_REASON_USER_SETTING, ) } private fun setKeyguardFeaturesDisabled(user: UserInfo, disabledFlags: Int) { whenever(kosmos.devicePolicyManager.getKeyguardDisabledFeatures(nullable(), eq(user.id))) .thenReturn(disabledFlags) kosmos.broadcastDispatcher.sendIntentToMatchingReceiversOnly( context, Intent(DevicePolicyManager.ACTION_DEVICE_POLICY_MANAGER_STATE_CHANGED), ) } private companion object { val PRIMARY_USER = UserInfo(/* id= */ 0, /* name= */ "primary user", /* flags= */ UserInfo.FLAG_MAIN) val SECONDARY_USER = UserInfo(/* id= */ 1, /* name= */ "secondary user", /* flags= */ 0) } }
packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalInteractorCommunalDisabledTest.kt +2 −1 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.systemui.communal.domain.interactor 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 import com.android.systemui.communal.data.repository.FakeCommunalRepository import com.android.systemui.communal.data.repository.FakeCommunalWidgetRepository Loading Loading @@ -59,7 +60,7 @@ class CommunalInteractorCommunalDisabledTest : SysuiTestCase() { widgetRepository = kosmos.fakeCommunalWidgetRepository keyguardRepository = kosmos.fakeKeyguardRepository communalRepository.setIsCommunalEnabled(false) mSetFlagsRule.disableFlags(FLAG_COMMUNAL_HUB) underTest = kosmos.communalInteractor } Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/communal/domain/interactor/CommunalInteractorTest.kt +13 −6 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import android.provider.Settings.Secure.HUB_MODE_TUTORIAL_COMPLETED 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 import com.android.systemui.communal.data.repository.FakeCommunalMediaRepository import com.android.systemui.communal.data.repository.FakeCommunalPrefsRepository Loading @@ -41,6 +42,8 @@ import com.android.systemui.communal.shared.model.CommunalWidgetContentModel import com.android.systemui.communal.shared.model.ObservableCommunalTransitionState import com.android.systemui.communal.widgets.EditWidgetsActivityStarter import com.android.systemui.coroutines.collectLastValue import com.android.systemui.flags.Flags import com.android.systemui.flags.fakeFeatureFlagsClassic import com.android.systemui.keyguard.data.repository.FakeKeyguardRepository import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository import com.android.systemui.kosmos.testScope Loading Loading @@ -109,12 +112,19 @@ class CommunalInteractorTest : SysuiTestCase() { whenever(secondaryUser.isMain).thenReturn(false) userRepository.setUserInfos(listOf(mainUser, secondaryUser)) kosmos.fakeFeatureFlagsClassic.set(Flags.COMMUNAL_SERVICE_ENABLED, true) mSetFlagsRule.enableFlags(FLAG_COMMUNAL_HUB) underTest = kosmos.communalInteractor } @Test fun communalEnabled_true() = testScope.runTest { assertThat(underTest.isCommunalEnabled).isTrue() } testScope.runTest { userRepository.setSelectedUserInfo(mainUser) runCurrent() assertThat(underTest.isCommunalEnabled).isTrue() } @Test fun isCommunalAvailable_storageUnlockedAndMainUser_true() = Loading @@ -125,7 +135,6 @@ class CommunalInteractorTest : SysuiTestCase() { keyguardRepository.setIsEncryptedOrLockdown(false) userRepository.setSelectedUserInfo(mainUser) keyguardRepository.setKeyguardShowing(true) communalRepository.setCommunalEnabledState(true) assertThat(isAvailable).isTrue() } Loading @@ -139,7 +148,6 @@ class CommunalInteractorTest : SysuiTestCase() { keyguardRepository.setIsEncryptedOrLockdown(true) userRepository.setSelectedUserInfo(mainUser) keyguardRepository.setKeyguardShowing(true) communalRepository.setCommunalEnabledState(true) assertThat(isAvailable).isFalse() } Loading @@ -153,7 +161,6 @@ class CommunalInteractorTest : SysuiTestCase() { keyguardRepository.setIsEncryptedOrLockdown(false) userRepository.setSelectedUserInfo(secondaryUser) keyguardRepository.setKeyguardShowing(true) communalRepository.setCommunalEnabledState(true) assertThat(isAvailable).isFalse() } Loading @@ -167,7 +174,6 @@ class CommunalInteractorTest : SysuiTestCase() { keyguardRepository.setIsEncryptedOrLockdown(false) userRepository.setSelectedUserInfo(mainUser) keyguardRepository.setDreaming(true) communalRepository.setCommunalEnabledState(true) assertThat(isAvailable).isTrue() } Loading @@ -175,13 +181,14 @@ class CommunalInteractorTest : SysuiTestCase() { @Test fun isCommunalAvailable_communalDisabled_false() = testScope.runTest { mSetFlagsRule.disableFlags(FLAG_COMMUNAL_HUB) val isAvailable by collectLastValue(underTest.isCommunalAvailable) assertThat(isAvailable).isFalse() keyguardRepository.setIsEncryptedOrLockdown(false) userRepository.setSelectedUserInfo(mainUser) keyguardRepository.setKeyguardShowing(true) communalRepository.setCommunalEnabledState(false) assertThat(isAvailable).isFalse() } Loading