Loading packages/SystemUI/multivalentTests/src/com/android/systemui/scene/shared/flag/SceneContainerFlagParameterizationTest.kt +9 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import com.android.systemui.Flags.FLAG_EXAMPLE_FLAG import com.android.systemui.Flags.FLAG_SCENE_CONTAINER import com.android.systemui.SysuiTestCase import com.android.systemui.flags.andSceneContainer import com.android.systemui.flags.parameterizeSceneContainerFlag import com.google.common.truth.Truth import org.junit.Test import org.junit.runner.RunWith Loading @@ -40,6 +41,14 @@ internal class SceneContainerFlagParameterizationTest : SysuiTestCase() { Truth.assertThat(result[1].mOverrides[FLAG_SCENE_CONTAINER]).isTrue() } @Test fun parameterizeSceneContainer() { val result = parameterizeSceneContainerFlag() Truth.assertThat(result).hasSize(2) Truth.assertThat(result[0].mOverrides[FLAG_SCENE_CONTAINER]).isFalse() Truth.assertThat(result[1].mOverrides[FLAG_SCENE_CONTAINER]).isTrue() } @Test fun oneUnrelatedAndSceneContainer() { val unrelatedFlag = FLAG_EXAMPLE_FLAG Loading packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowControllerImplTest.java→packages/SystemUI/multivalentTests/src/com/android/systemui/shade/NotificationShadeWindowControllerImplTest.java +17 −107 Original line number Diff line number Diff line Loading @@ -29,7 +29,6 @@ import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.clearInvocations; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.reset; import static org.mockito.Mockito.spy; Loading @@ -37,12 +36,10 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.when; import static kotlinx.coroutines.flow.StateFlowKt.MutableStateFlow; import android.app.IActivityManager; import android.content.pm.ActivityInfo; import android.content.res.Configuration; import android.testing.AndroidTestingRunner; import android.platform.test.flag.junit.FlagsParameterization; import android.testing.TestableLooper.RunWithLooper; import android.view.View; import android.view.WindowManager; Loading @@ -50,51 +47,26 @@ import android.view.WindowManager; import androidx.test.filters.SmallTest; import com.android.internal.colorextraction.ColorExtractor; import com.android.keyguard.KeyguardSecurityModel; import com.android.systemui.SysuiTestCase; import com.android.systemui.biometrics.AuthController; import com.android.systemui.bouncer.data.repository.FakeKeyguardBouncerRepository; import com.android.systemui.colorextraction.SysuiColorExtractor; import com.android.systemui.common.ui.data.repository.FakeConfigurationRepository; import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor; import com.android.systemui.communal.domain.interactor.CommunalInteractor; import com.android.systemui.deviceentry.domain.interactor.DeviceEntryUdfpsInteractor; import com.android.systemui.dump.DumpManager; import com.android.systemui.flags.FakeFeatureFlagsClassic; import com.android.systemui.flags.SceneContainerFlagParameterizationKt; import com.android.systemui.keyguard.KeyguardViewMediator; import com.android.systemui.keyguard.data.repository.FakeCommandQueue; import com.android.systemui.keyguard.data.repository.FakeKeyguardRepository; import com.android.systemui.keyguard.domain.interactor.FromLockscreenTransitionInteractor; import com.android.systemui.keyguard.domain.interactor.FromPrimaryBouncerTransitionInteractor; import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor; import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor; import com.android.systemui.kosmos.KosmosJavaAdapter; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.power.domain.interactor.PowerInteractor; import com.android.systemui.res.R; import com.android.systemui.scene.FakeWindowRootViewComponent; import com.android.systemui.scene.data.repository.SceneContainerRepository; import com.android.systemui.scene.domain.interactor.SceneInteractor; import com.android.systemui.scene.shared.logger.SceneLogger; import com.android.systemui.settings.UserTracker; import com.android.systemui.shade.data.repository.FakeShadeRepository; import com.android.systemui.shade.domain.interactor.ShadeInteractor; import com.android.systemui.shade.domain.interactor.ShadeInteractorImpl; import com.android.systemui.shade.domain.interactor.ShadeInteractorLegacyImpl; import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.SysuiStatusBarStateController; import com.android.systemui.statusbar.disableflags.data.repository.FakeDisableFlagsRepository; import com.android.systemui.statusbar.notification.stack.domain.interactor.SharedNotificationContainerInteractor; import com.android.systemui.statusbar.phone.DozeParameters; import com.android.systemui.statusbar.phone.KeyguardBypassController; import com.android.systemui.statusbar.phone.ScreenOffAnimationController; import com.android.systemui.statusbar.phone.ScrimController; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.statusbar.policy.ResourcesSplitShadeStateController; import com.android.systemui.statusbar.policy.data.repository.FakeUserSetupRepository; import com.android.systemui.user.domain.interactor.SelectedUserInteractor; import com.android.systemui.user.domain.interactor.UserSwitcherInteractor; import com.google.common.util.concurrent.MoreExecutors; Loading @@ -110,13 +82,13 @@ import org.mockito.Spy; import java.util.List; import java.util.concurrent.Executor; import kotlinx.coroutines.test.TestScope; import platform.test.runner.parameterized.ParameterizedAndroidJunit4; import platform.test.runner.parameterized.Parameters; @RunWith(AndroidTestingRunner.class) @RunWith(ParameterizedAndroidJunit4.class) @RunWithLooper(setAsMainLooper = true) @SmallTest public class NotificationShadeWindowControllerImplTest extends SysuiTestCase { @Mock private WindowManager mWindowManager; @Mock private DozeParameters mDozeParameters; @Spy private final NotificationShadeWindowView mNotificationShadeWindowView = spy( Loading @@ -128,29 +100,31 @@ public class NotificationShadeWindowControllerImplTest extends SysuiTestCase { @Mock private SysuiColorExtractor mColorExtractor; @Mock private ColorExtractor.GradientColors mGradientColors; @Mock private DumpManager mDumpManager; @Mock private KeyguardSecurityModel mKeyguardSecurityModel; @Mock private KeyguardStateController mKeyguardStateController; @Mock private AuthController mAuthController; @Mock private ShadeWindowLogger mShadeWindowLogger; @Mock private SelectedUserInteractor mSelectedUserInteractor; @Mock private UserTracker mUserTracker; @Mock private LargeScreenHeaderHelper mLargeScreenHeaderHelper; @Captor private ArgumentCaptor<WindowManager.LayoutParams> mLayoutParameters; @Captor private ArgumentCaptor<StatusBarStateController.StateListener> mStateListener; private final Executor mMainExecutor = MoreExecutors.directExecutor(); private final Executor mBackgroundExecutor = MoreExecutors.directExecutor(); private final KosmosJavaAdapter mKosmos = new KosmosJavaAdapter(this); private final TestScope mTestScope = mKosmos.getTestScope(); private ShadeInteractor mShadeInteractor; private NotificationShadeWindowControllerImpl mNotificationShadeWindowController; private float mPreferredRefreshRate = -1; private FromLockscreenTransitionInteractor mFromLockscreenTransitionInteractor; private FromPrimaryBouncerTransitionInteractor mFromPrimaryBouncerTransitionInteractor; private ScreenOffAnimationController mScreenOffAnimationController; private SysuiStatusBarStateController mStatusBarStateController; @Parameters(name = "{0}") public static List<FlagsParameterization> getParams() { return SceneContainerFlagParameterizationKt.parameterizeSceneContainerFlag(); } public NotificationShadeWindowControllerImplTest(FlagsParameterization flags) { mSetFlagsRule.setFlagsParameterization(flags); } @Before public void setUp() { MockitoAnnotations.initMocks(this); Loading @@ -164,71 +138,7 @@ public class NotificationShadeWindowControllerImplTest extends SysuiTestCase { when(mDozeParameters.getAlwaysOn()).thenReturn(true); when(mColorExtractor.getNeutralColors()).thenReturn(mGradientColors); FakeKeyguardRepository keyguardRepository = new FakeKeyguardRepository(); FakeFeatureFlagsClassic featureFlags = new FakeFeatureFlagsClassic(); FakeShadeRepository shadeRepository = new FakeShadeRepository(); mScreenOffAnimationController = mKosmos.getScreenOffAnimationController(); mStatusBarStateController = spy(mKosmos.getStatusBarStateController()); PowerInteractor powerInteractor = mKosmos.getPowerInteractor(); SceneInteractor sceneInteractor = new SceneInteractor( mTestScope.getBackgroundScope(), new SceneContainerRepository( mTestScope.getBackgroundScope(), mKosmos.getFakeSceneContainerConfig(), mKosmos.getSceneDataSource()), mock(SceneLogger.class), mKosmos.getDeviceUnlockedInteractor()); FakeConfigurationRepository configurationRepository = new FakeConfigurationRepository(); KeyguardTransitionInteractor keyguardTransitionInteractor = mKosmos.getKeyguardTransitionInteractor(); KeyguardInteractor keyguardInteractor = new KeyguardInteractor( keyguardRepository, new FakeCommandQueue(), powerInteractor, new FakeKeyguardBouncerRepository(), new ConfigurationInteractor(configurationRepository), shadeRepository, keyguardTransitionInteractor, () -> sceneInteractor, () -> mKosmos.getFromGoneTransitionInteractor(), () -> mKosmos.getSharedNotificationContainerInteractor(), mTestScope); CommunalInteractor communalInteractor = mKosmos.getCommunalInteractor(); mFromLockscreenTransitionInteractor = mKosmos.getFromLockscreenTransitionInteractor(); mFromPrimaryBouncerTransitionInteractor = mKosmos.getFromPrimaryBouncerTransitionInteractor(); DeviceEntryUdfpsInteractor deviceEntryUdfpsInteractor = mock(DeviceEntryUdfpsInteractor.class); when(deviceEntryUdfpsInteractor.isUdfpsSupported()).thenReturn(MutableStateFlow(false)); mShadeInteractor = new ShadeInteractorImpl( mTestScope.getBackgroundScope(), mKosmos.getDeviceProvisioningInteractor(), new FakeDisableFlagsRepository(), mock(DozeParameters.class), keyguardRepository, keyguardTransitionInteractor, powerInteractor, new FakeUserSetupRepository(), mock(UserSwitcherInteractor.class), new ShadeInteractorLegacyImpl( mTestScope.getBackgroundScope(), keyguardRepository, new SharedNotificationContainerInteractor( configurationRepository, mContext, new ResourcesSplitShadeStateController(), keyguardInteractor, deviceEntryUdfpsInteractor, () -> mLargeScreenHeaderHelper), shadeRepository ) ); mNotificationShadeWindowController = new NotificationShadeWindowControllerImpl( mContext, Loading @@ -245,13 +155,13 @@ public class NotificationShadeWindowControllerImplTest extends SysuiTestCase { mColorExtractor, mDumpManager, mKeyguardStateController, mScreenOffAnimationController, mKosmos.getScreenOffAnimationController(), mAuthController, () -> mShadeInteractor, mKosmos::getShadeInteractor, mShadeWindowLogger, () -> mSelectedUserInteractor, mUserTracker, () -> communalInteractor) { mKosmos::getCommunalInteractor) { @Override protected boolean isDebuggable() { return false; Loading packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeInteractorImplTest.kt +2 −2 Original line number Diff line number Diff line Loading @@ -24,7 +24,7 @@ import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.common.ui.data.repository.fakeConfigurationRepository import com.android.systemui.coroutines.collectLastValue import com.android.systemui.flags.andSceneContainer import com.android.systemui.flags.parameterizeSceneContainerFlag import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository import com.android.systemui.keyguard.shared.model.DozeStateModel Loading Loading @@ -80,7 +80,7 @@ class ShadeInteractorImplTest(flags: FlagsParameterization?) : SysuiTestCase() { @JvmStatic @Parameters(name = "{0}") fun getParams(): List<FlagsParameterization> { return FlagsParameterization.allCombinationsOf().andSceneContainer() return parameterizeSceneContainerFlag() } } Loading packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/startable/ShadeStartableTest.kt +31 −14 Original line number Diff line number Diff line Loading @@ -16,7 +16,7 @@ package com.android.systemui.shade.domain.startable import androidx.test.ext.junit.runners.AndroidJUnit4 import android.platform.test.flag.junit.FlagsParameterization import androidx.test.filters.SmallTest import com.android.compose.animation.scene.ObservableTransitionState import com.android.compose.animation.scene.SceneKey Loading @@ -25,9 +25,8 @@ import com.android.systemui.authentication.data.repository.fakeAuthenticationRep import com.android.systemui.authentication.shared.model.AuthenticationMethodModel import com.android.systemui.common.ui.data.repository.fakeConfigurationRepository import com.android.systemui.coroutines.collectLastValue import com.android.systemui.deviceentry.data.repository.fakeDeviceEntryRepository import com.android.systemui.deviceentry.domain.interactor.deviceUnlockedInteractor import com.android.systemui.flags.EnableSceneContainer import com.android.systemui.flags.parameterizeSceneContainerFlag import com.android.systemui.keyguard.data.repository.fakeDeviceEntryFingerprintAuthRepository import com.android.systemui.keyguard.shared.model.SuccessFingerprintAuthenticationStatus import com.android.systemui.kosmos.testScope Loading @@ -50,24 +49,42 @@ import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.runCurrent import kotlinx.coroutines.test.runTest import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import platform.test.runner.parameterized.ParameterizedAndroidJunit4 import platform.test.runner.parameterized.Parameters @OptIn(ExperimentalCoroutinesApi::class) @SmallTest @RunWith(AndroidJUnit4::class) class ShadeStartableTest : SysuiTestCase() { @RunWith(ParameterizedAndroidJunit4::class) class ShadeStartableTest(flags: FlagsParameterization?) : SysuiTestCase() { private val kosmos = testKosmos() private val testScope = kosmos.testScope private val shadeInteractor = kosmos.shadeInteractor private val sceneInteractor = kosmos.sceneInteractor private val shadeExpansionStateManager = kosmos.shadeExpansionStateManager private val deviceEntryRepository = kosmos.fakeDeviceEntryRepository private val deviceUnlockedInteractor = kosmos.deviceUnlockedInteractor private val fakeConfigurationRepository = kosmos.fakeConfigurationRepository private val fakeSceneDataSource = kosmos.fakeSceneDataSource private val underTest = kosmos.shadeStartable private val shadeInteractor by lazy { kosmos.shadeInteractor } private val sceneInteractor by lazy { kosmos.sceneInteractor } private val shadeExpansionStateManager by lazy { kosmos.shadeExpansionStateManager } private val fakeConfigurationRepository by lazy { kosmos.fakeConfigurationRepository } private val fakeSceneDataSource by lazy { kosmos.fakeSceneDataSource } private lateinit var underTest: ShadeStartable companion object { @JvmStatic @Parameters(name = "{0}") fun getParams(): List<FlagsParameterization> { return parameterizeSceneContainerFlag() } } init { mSetFlagsRule.setFlagsParameterization(flags!!) } @Before fun setup() { underTest = kosmos.shadeStartable } @Test fun hydrateShadeMode() = Loading packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/ShadeSceneViewModelTest.kt +2 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import com.android.systemui.common.ui.data.repository.fakeConfigurationRepositor import com.android.systemui.coroutines.collectLastValue import com.android.systemui.deviceentry.data.repository.fakeDeviceEntryRepository import com.android.systemui.deviceentry.domain.interactor.deviceEntryInteractor import com.android.systemui.flags.EnableSceneContainer import com.android.systemui.keyguard.data.repository.fakeDeviceEntryFingerprintAuthRepository import com.android.systemui.keyguard.shared.model.SuccessFingerprintAuthenticationStatus import com.android.systemui.kosmos.testScope Loading Loading @@ -65,6 +66,7 @@ import org.mockito.MockitoAnnotations @SmallTest @RunWith(AndroidJUnit4::class) @TestableLooper.RunWithLooper @EnableSceneContainer class ShadeSceneViewModelTest : SysuiTestCase() { private val kosmos = testKosmos() Loading Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/scene/shared/flag/SceneContainerFlagParameterizationTest.kt +9 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import com.android.systemui.Flags.FLAG_EXAMPLE_FLAG import com.android.systemui.Flags.FLAG_SCENE_CONTAINER import com.android.systemui.SysuiTestCase import com.android.systemui.flags.andSceneContainer import com.android.systemui.flags.parameterizeSceneContainerFlag import com.google.common.truth.Truth import org.junit.Test import org.junit.runner.RunWith Loading @@ -40,6 +41,14 @@ internal class SceneContainerFlagParameterizationTest : SysuiTestCase() { Truth.assertThat(result[1].mOverrides[FLAG_SCENE_CONTAINER]).isTrue() } @Test fun parameterizeSceneContainer() { val result = parameterizeSceneContainerFlag() Truth.assertThat(result).hasSize(2) Truth.assertThat(result[0].mOverrides[FLAG_SCENE_CONTAINER]).isFalse() Truth.assertThat(result[1].mOverrides[FLAG_SCENE_CONTAINER]).isTrue() } @Test fun oneUnrelatedAndSceneContainer() { val unrelatedFlag = FLAG_EXAMPLE_FLAG Loading
packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowControllerImplTest.java→packages/SystemUI/multivalentTests/src/com/android/systemui/shade/NotificationShadeWindowControllerImplTest.java +17 −107 Original line number Diff line number Diff line Loading @@ -29,7 +29,6 @@ import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.clearInvocations; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.reset; import static org.mockito.Mockito.spy; Loading @@ -37,12 +36,10 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.when; import static kotlinx.coroutines.flow.StateFlowKt.MutableStateFlow; import android.app.IActivityManager; import android.content.pm.ActivityInfo; import android.content.res.Configuration; import android.testing.AndroidTestingRunner; import android.platform.test.flag.junit.FlagsParameterization; import android.testing.TestableLooper.RunWithLooper; import android.view.View; import android.view.WindowManager; Loading @@ -50,51 +47,26 @@ import android.view.WindowManager; import androidx.test.filters.SmallTest; import com.android.internal.colorextraction.ColorExtractor; import com.android.keyguard.KeyguardSecurityModel; import com.android.systemui.SysuiTestCase; import com.android.systemui.biometrics.AuthController; import com.android.systemui.bouncer.data.repository.FakeKeyguardBouncerRepository; import com.android.systemui.colorextraction.SysuiColorExtractor; import com.android.systemui.common.ui.data.repository.FakeConfigurationRepository; import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor; import com.android.systemui.communal.domain.interactor.CommunalInteractor; import com.android.systemui.deviceentry.domain.interactor.DeviceEntryUdfpsInteractor; import com.android.systemui.dump.DumpManager; import com.android.systemui.flags.FakeFeatureFlagsClassic; import com.android.systemui.flags.SceneContainerFlagParameterizationKt; import com.android.systemui.keyguard.KeyguardViewMediator; import com.android.systemui.keyguard.data.repository.FakeCommandQueue; import com.android.systemui.keyguard.data.repository.FakeKeyguardRepository; import com.android.systemui.keyguard.domain.interactor.FromLockscreenTransitionInteractor; import com.android.systemui.keyguard.domain.interactor.FromPrimaryBouncerTransitionInteractor; import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor; import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor; import com.android.systemui.kosmos.KosmosJavaAdapter; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.power.domain.interactor.PowerInteractor; import com.android.systemui.res.R; import com.android.systemui.scene.FakeWindowRootViewComponent; import com.android.systemui.scene.data.repository.SceneContainerRepository; import com.android.systemui.scene.domain.interactor.SceneInteractor; import com.android.systemui.scene.shared.logger.SceneLogger; import com.android.systemui.settings.UserTracker; import com.android.systemui.shade.data.repository.FakeShadeRepository; import com.android.systemui.shade.domain.interactor.ShadeInteractor; import com.android.systemui.shade.domain.interactor.ShadeInteractorImpl; import com.android.systemui.shade.domain.interactor.ShadeInteractorLegacyImpl; import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.SysuiStatusBarStateController; import com.android.systemui.statusbar.disableflags.data.repository.FakeDisableFlagsRepository; import com.android.systemui.statusbar.notification.stack.domain.interactor.SharedNotificationContainerInteractor; import com.android.systemui.statusbar.phone.DozeParameters; import com.android.systemui.statusbar.phone.KeyguardBypassController; import com.android.systemui.statusbar.phone.ScreenOffAnimationController; import com.android.systemui.statusbar.phone.ScrimController; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.statusbar.policy.ResourcesSplitShadeStateController; import com.android.systemui.statusbar.policy.data.repository.FakeUserSetupRepository; import com.android.systemui.user.domain.interactor.SelectedUserInteractor; import com.android.systemui.user.domain.interactor.UserSwitcherInteractor; import com.google.common.util.concurrent.MoreExecutors; Loading @@ -110,13 +82,13 @@ import org.mockito.Spy; import java.util.List; import java.util.concurrent.Executor; import kotlinx.coroutines.test.TestScope; import platform.test.runner.parameterized.ParameterizedAndroidJunit4; import platform.test.runner.parameterized.Parameters; @RunWith(AndroidTestingRunner.class) @RunWith(ParameterizedAndroidJunit4.class) @RunWithLooper(setAsMainLooper = true) @SmallTest public class NotificationShadeWindowControllerImplTest extends SysuiTestCase { @Mock private WindowManager mWindowManager; @Mock private DozeParameters mDozeParameters; @Spy private final NotificationShadeWindowView mNotificationShadeWindowView = spy( Loading @@ -128,29 +100,31 @@ public class NotificationShadeWindowControllerImplTest extends SysuiTestCase { @Mock private SysuiColorExtractor mColorExtractor; @Mock private ColorExtractor.GradientColors mGradientColors; @Mock private DumpManager mDumpManager; @Mock private KeyguardSecurityModel mKeyguardSecurityModel; @Mock private KeyguardStateController mKeyguardStateController; @Mock private AuthController mAuthController; @Mock private ShadeWindowLogger mShadeWindowLogger; @Mock private SelectedUserInteractor mSelectedUserInteractor; @Mock private UserTracker mUserTracker; @Mock private LargeScreenHeaderHelper mLargeScreenHeaderHelper; @Captor private ArgumentCaptor<WindowManager.LayoutParams> mLayoutParameters; @Captor private ArgumentCaptor<StatusBarStateController.StateListener> mStateListener; private final Executor mMainExecutor = MoreExecutors.directExecutor(); private final Executor mBackgroundExecutor = MoreExecutors.directExecutor(); private final KosmosJavaAdapter mKosmos = new KosmosJavaAdapter(this); private final TestScope mTestScope = mKosmos.getTestScope(); private ShadeInteractor mShadeInteractor; private NotificationShadeWindowControllerImpl mNotificationShadeWindowController; private float mPreferredRefreshRate = -1; private FromLockscreenTransitionInteractor mFromLockscreenTransitionInteractor; private FromPrimaryBouncerTransitionInteractor mFromPrimaryBouncerTransitionInteractor; private ScreenOffAnimationController mScreenOffAnimationController; private SysuiStatusBarStateController mStatusBarStateController; @Parameters(name = "{0}") public static List<FlagsParameterization> getParams() { return SceneContainerFlagParameterizationKt.parameterizeSceneContainerFlag(); } public NotificationShadeWindowControllerImplTest(FlagsParameterization flags) { mSetFlagsRule.setFlagsParameterization(flags); } @Before public void setUp() { MockitoAnnotations.initMocks(this); Loading @@ -164,71 +138,7 @@ public class NotificationShadeWindowControllerImplTest extends SysuiTestCase { when(mDozeParameters.getAlwaysOn()).thenReturn(true); when(mColorExtractor.getNeutralColors()).thenReturn(mGradientColors); FakeKeyguardRepository keyguardRepository = new FakeKeyguardRepository(); FakeFeatureFlagsClassic featureFlags = new FakeFeatureFlagsClassic(); FakeShadeRepository shadeRepository = new FakeShadeRepository(); mScreenOffAnimationController = mKosmos.getScreenOffAnimationController(); mStatusBarStateController = spy(mKosmos.getStatusBarStateController()); PowerInteractor powerInteractor = mKosmos.getPowerInteractor(); SceneInteractor sceneInteractor = new SceneInteractor( mTestScope.getBackgroundScope(), new SceneContainerRepository( mTestScope.getBackgroundScope(), mKosmos.getFakeSceneContainerConfig(), mKosmos.getSceneDataSource()), mock(SceneLogger.class), mKosmos.getDeviceUnlockedInteractor()); FakeConfigurationRepository configurationRepository = new FakeConfigurationRepository(); KeyguardTransitionInteractor keyguardTransitionInteractor = mKosmos.getKeyguardTransitionInteractor(); KeyguardInteractor keyguardInteractor = new KeyguardInteractor( keyguardRepository, new FakeCommandQueue(), powerInteractor, new FakeKeyguardBouncerRepository(), new ConfigurationInteractor(configurationRepository), shadeRepository, keyguardTransitionInteractor, () -> sceneInteractor, () -> mKosmos.getFromGoneTransitionInteractor(), () -> mKosmos.getSharedNotificationContainerInteractor(), mTestScope); CommunalInteractor communalInteractor = mKosmos.getCommunalInteractor(); mFromLockscreenTransitionInteractor = mKosmos.getFromLockscreenTransitionInteractor(); mFromPrimaryBouncerTransitionInteractor = mKosmos.getFromPrimaryBouncerTransitionInteractor(); DeviceEntryUdfpsInteractor deviceEntryUdfpsInteractor = mock(DeviceEntryUdfpsInteractor.class); when(deviceEntryUdfpsInteractor.isUdfpsSupported()).thenReturn(MutableStateFlow(false)); mShadeInteractor = new ShadeInteractorImpl( mTestScope.getBackgroundScope(), mKosmos.getDeviceProvisioningInteractor(), new FakeDisableFlagsRepository(), mock(DozeParameters.class), keyguardRepository, keyguardTransitionInteractor, powerInteractor, new FakeUserSetupRepository(), mock(UserSwitcherInteractor.class), new ShadeInteractorLegacyImpl( mTestScope.getBackgroundScope(), keyguardRepository, new SharedNotificationContainerInteractor( configurationRepository, mContext, new ResourcesSplitShadeStateController(), keyguardInteractor, deviceEntryUdfpsInteractor, () -> mLargeScreenHeaderHelper), shadeRepository ) ); mNotificationShadeWindowController = new NotificationShadeWindowControllerImpl( mContext, Loading @@ -245,13 +155,13 @@ public class NotificationShadeWindowControllerImplTest extends SysuiTestCase { mColorExtractor, mDumpManager, mKeyguardStateController, mScreenOffAnimationController, mKosmos.getScreenOffAnimationController(), mAuthController, () -> mShadeInteractor, mKosmos::getShadeInteractor, mShadeWindowLogger, () -> mSelectedUserInteractor, mUserTracker, () -> communalInteractor) { mKosmos::getCommunalInteractor) { @Override protected boolean isDebuggable() { return false; Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeInteractorImplTest.kt +2 −2 Original line number Diff line number Diff line Loading @@ -24,7 +24,7 @@ import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.common.ui.data.repository.fakeConfigurationRepository import com.android.systemui.coroutines.collectLastValue import com.android.systemui.flags.andSceneContainer import com.android.systemui.flags.parameterizeSceneContainerFlag import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository import com.android.systemui.keyguard.shared.model.DozeStateModel Loading Loading @@ -80,7 +80,7 @@ class ShadeInteractorImplTest(flags: FlagsParameterization?) : SysuiTestCase() { @JvmStatic @Parameters(name = "{0}") fun getParams(): List<FlagsParameterization> { return FlagsParameterization.allCombinationsOf().andSceneContainer() return parameterizeSceneContainerFlag() } } Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/startable/ShadeStartableTest.kt +31 −14 Original line number Diff line number Diff line Loading @@ -16,7 +16,7 @@ package com.android.systemui.shade.domain.startable import androidx.test.ext.junit.runners.AndroidJUnit4 import android.platform.test.flag.junit.FlagsParameterization import androidx.test.filters.SmallTest import com.android.compose.animation.scene.ObservableTransitionState import com.android.compose.animation.scene.SceneKey Loading @@ -25,9 +25,8 @@ import com.android.systemui.authentication.data.repository.fakeAuthenticationRep import com.android.systemui.authentication.shared.model.AuthenticationMethodModel import com.android.systemui.common.ui.data.repository.fakeConfigurationRepository import com.android.systemui.coroutines.collectLastValue import com.android.systemui.deviceentry.data.repository.fakeDeviceEntryRepository import com.android.systemui.deviceentry.domain.interactor.deviceUnlockedInteractor import com.android.systemui.flags.EnableSceneContainer import com.android.systemui.flags.parameterizeSceneContainerFlag import com.android.systemui.keyguard.data.repository.fakeDeviceEntryFingerprintAuthRepository import com.android.systemui.keyguard.shared.model.SuccessFingerprintAuthenticationStatus import com.android.systemui.kosmos.testScope Loading @@ -50,24 +49,42 @@ import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.runCurrent import kotlinx.coroutines.test.runTest import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import platform.test.runner.parameterized.ParameterizedAndroidJunit4 import platform.test.runner.parameterized.Parameters @OptIn(ExperimentalCoroutinesApi::class) @SmallTest @RunWith(AndroidJUnit4::class) class ShadeStartableTest : SysuiTestCase() { @RunWith(ParameterizedAndroidJunit4::class) class ShadeStartableTest(flags: FlagsParameterization?) : SysuiTestCase() { private val kosmos = testKosmos() private val testScope = kosmos.testScope private val shadeInteractor = kosmos.shadeInteractor private val sceneInteractor = kosmos.sceneInteractor private val shadeExpansionStateManager = kosmos.shadeExpansionStateManager private val deviceEntryRepository = kosmos.fakeDeviceEntryRepository private val deviceUnlockedInteractor = kosmos.deviceUnlockedInteractor private val fakeConfigurationRepository = kosmos.fakeConfigurationRepository private val fakeSceneDataSource = kosmos.fakeSceneDataSource private val underTest = kosmos.shadeStartable private val shadeInteractor by lazy { kosmos.shadeInteractor } private val sceneInteractor by lazy { kosmos.sceneInteractor } private val shadeExpansionStateManager by lazy { kosmos.shadeExpansionStateManager } private val fakeConfigurationRepository by lazy { kosmos.fakeConfigurationRepository } private val fakeSceneDataSource by lazy { kosmos.fakeSceneDataSource } private lateinit var underTest: ShadeStartable companion object { @JvmStatic @Parameters(name = "{0}") fun getParams(): List<FlagsParameterization> { return parameterizeSceneContainerFlag() } } init { mSetFlagsRule.setFlagsParameterization(flags!!) } @Before fun setup() { underTest = kosmos.shadeStartable } @Test fun hydrateShadeMode() = Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/ShadeSceneViewModelTest.kt +2 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import com.android.systemui.common.ui.data.repository.fakeConfigurationRepositor import com.android.systemui.coroutines.collectLastValue import com.android.systemui.deviceentry.data.repository.fakeDeviceEntryRepository import com.android.systemui.deviceentry.domain.interactor.deviceEntryInteractor import com.android.systemui.flags.EnableSceneContainer import com.android.systemui.keyguard.data.repository.fakeDeviceEntryFingerprintAuthRepository import com.android.systemui.keyguard.shared.model.SuccessFingerprintAuthenticationStatus import com.android.systemui.kosmos.testScope Loading Loading @@ -65,6 +66,7 @@ import org.mockito.MockitoAnnotations @SmallTest @RunWith(AndroidJUnit4::class) @TestableLooper.RunWithLooper @EnableSceneContainer class ShadeSceneViewModelTest : SysuiTestCase() { private val kosmos = testKosmos() Loading