Loading packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/NotificationsShadeOverlay.kt +1 −2 Original line number Diff line number Diff line Loading @@ -20,7 +20,6 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.dimensionResource import com.android.compose.animation.scene.ContentScope Loading Loading @@ -95,7 +94,7 @@ constructor( OverlayShade( panelElement = NotificationsShade.Elements.Panel, alignmentOnWideScreens = Alignment.TopStart, alignmentOnWideScreens = viewModel.alignmentOnWideScreens, enableTransparency = viewModel.isTransparencyEnabled, modifier = modifier, onScrimClicked = viewModel::onScrimClicked, Loading packages/SystemUI/multivalentTests/src/com/android/systemui/desktop/domain/interactor/DesktopInteractorTest.kt +67 −9 Original line number Diff line number Diff line Loading @@ -16,16 +16,25 @@ package com.android.systemui.desktop.domain.interactor import android.content.res.mainResources import android.content.testableContext 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 import com.android.systemui.SysuiTestCase import com.android.systemui.flags.EnableSceneContainer import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.backgroundScope import com.android.systemui.kosmos.collectLastValue import com.android.systemui.kosmos.runTest import com.android.systemui.res.R import com.android.systemui.statusbar.policy.configurationController import com.android.systemui.testKosmos import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.ExperimentalCoroutinesApi import org.junit.Before import org.junit.Test import org.junit.runner.RunWith Loading @@ -34,17 +43,19 @@ import org.junit.runner.RunWith @RunWith(AndroidJUnit4::class) class DesktopInteractorTest : SysuiTestCase() { private val kosmos = testKosmos() private val underTest = kosmos.desktopInteractor private lateinit var underTest: DesktopInteractor @Before fun setUp() { underTest = kosmos.desktopInteractor } @Test fun isDesktopFeatureSetEnabled_false() = kosmos.runTest { val isDesktopFeatureSetEnabled by collectLastValue(underTest.isDesktopFeatureSetEnabled) testableContext.orCreateTestableResources.addOverride( R.bool.config_enableDesktopFeatureSet, false, ) overrideConfig(R.bool.config_enableDesktopFeatureSet, false) assertThat(isDesktopFeatureSetEnabled).isFalse() } Loading @@ -54,11 +65,58 @@ class DesktopInteractorTest : SysuiTestCase() { kosmos.runTest { val isDesktopFeatureSetEnabled by collectLastValue(underTest.isDesktopFeatureSetEnabled) testableContext.orCreateTestableResources.addOverride( R.bool.config_enableDesktopFeatureSet, true, ) overrideConfig(R.bool.config_enableDesktopFeatureSet, true) assertThat(isDesktopFeatureSetEnabled).isTrue() } @EnableFlags(Flags.FLAG_STATUS_BAR_FOR_DESKTOP) @EnableSceneContainer @Test fun desktopStatusBarEnabled_configEnabled_isNotificationShadeOnTopEndReturnsTrue() = kosmos.runTest { overrideConfig(R.bool.config_notificationShadeOnTopEnd, true) assertThat(createTestInstance().isNotificationShadeOnTopEnd).isTrue() } @EnableFlags(Flags.FLAG_STATUS_BAR_FOR_DESKTOP) @EnableSceneContainer @Test fun desktopStatusBarEnabled_configDisabled_isNotificationShadeOnTopEndReturnsFalse() = kosmos.runTest { overrideConfig(R.bool.config_notificationShadeOnTopEnd, false) assertThat(createTestInstance().isNotificationShadeOnTopEnd).isFalse() } @DisableFlags(Flags.FLAG_STATUS_BAR_FOR_DESKTOP) @Test fun desktopStatusBarDisabled_configEnabled_isNotificationShadeOnTopEndReturnsFalse() = kosmos.runTest { overrideConfig(R.bool.config_notificationShadeOnTopEnd, true) assertThat(createTestInstance().isNotificationShadeOnTopEnd).isFalse() } @DisableFlags(Flags.FLAG_STATUS_BAR_FOR_DESKTOP) @Test fun desktopStatusBarDisabled_configDisabled_isNotificationShadeOnTopEndReturnsFalse() = kosmos.runTest { overrideConfig(R.bool.config_notificationShadeOnTopEnd, false) assertThat(createTestInstance().isNotificationShadeOnTopEnd).isFalse() } private fun Kosmos.overrideConfig(configId: Int, value: Boolean) { testableContext.orCreateTestableResources.addOverride(configId, value) } private fun Kosmos.createTestInstance(): DesktopInteractor { return DesktopInteractor( resources = mainResources, scope = backgroundScope, configurationController = configurationController, ) } } packages/SystemUI/multivalentTests/src/com/android/systemui/notifications/ui/viewmodel/NotificationsShadeOverlayContentViewModelTest.kt +66 −4 Original line number Diff line number Diff line Loading @@ -18,10 +18,12 @@ package com.android.systemui.notifications.ui.viewmodel import android.app.StatusBarManager.DISABLE2_QUICK_SETTINGS import android.content.res.Configuration import android.content.res.mainResources import android.content.testableContext import android.platform.test.annotations.DisableFlags import android.platform.test.annotations.EnableFlags import android.testing.TestableLooper import androidx.compose.ui.Alignment import androidx.compose.ui.geometry.Rect import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest Loading @@ -31,13 +33,19 @@ import com.android.systemui.authentication.data.repository.FakeAuthenticationRep import com.android.systemui.authentication.domain.interactor.AuthenticationResult import com.android.systemui.authentication.domain.interactor.authenticationInteractor import com.android.systemui.coroutines.collectLastValue import com.android.systemui.desktop.domain.interactor.DesktopInteractor import com.android.systemui.flags.EnableSceneContainer import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.backgroundScope import com.android.systemui.kosmos.runCurrent import com.android.systemui.kosmos.testDispatcher import com.android.systemui.kosmos.testScope import com.android.systemui.kosmos.useUnconfinedTestDispatcher import com.android.systemui.lifecycle.activateIn import com.android.systemui.media.controls.domain.pipeline.interactor.mediaCarouselInteractor import com.android.systemui.media.controls.shared.model.MediaData import com.android.systemui.media.remedia.data.repository.mediaPipelineRepository import com.android.systemui.media.remedia.ui.viewmodel.factory.mediaViewModelFactory import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.setAsleepForTest import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.setAwakeForTest import com.android.systemui.power.domain.interactor.powerInteractor Loading @@ -50,12 +58,17 @@ import com.android.systemui.shade.domain.interactor.enableDualShade import com.android.systemui.shade.domain.interactor.enableSingleShade import com.android.systemui.shade.domain.interactor.enableSplitShade import com.android.systemui.shade.domain.interactor.shadeInteractor import com.android.systemui.shade.domain.interactor.shadeModeInteractor import com.android.systemui.shade.ui.viewmodel.notificationsShadeOverlayContentViewModel import com.android.systemui.shade.ui.viewmodel.shadeHeaderViewModelFactory import com.android.systemui.statusbar.core.StatusBarForDesktop import com.android.systemui.statusbar.disableflags.data.repository.fakeDisableFlagsRepository import com.android.systemui.statusbar.disableflags.domain.interactor.disableFlagsInteractor import com.android.systemui.statusbar.notification.stack.ui.viewmodel.notificationsPlaceholderViewModelFactory import com.android.systemui.statusbar.policy.configurationController import com.android.systemui.testKosmos import com.android.systemui.window.data.repository.fakeWindowRootViewBlurRepository import com.android.systemui.window.domain.interactor.windowRootViewBlurInteractor import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.update Loading Loading @@ -109,6 +122,32 @@ class NotificationsShadeOverlayContentViewModelTest : SysuiTestCase() { assertThat(underTest.showHeader).isTrue() } @Test @DisableFlags(StatusBarForDesktop.FLAG_NAME) fun alignmentOnWideScreens_statusBarForDesktopDisabled_topStart() = testScope.runTest { assertThat(kosmos.createTestInstance().alignmentOnWideScreens) .isEqualTo(Alignment.TopStart) } @Test @EnableFlags(StatusBarForDesktop.FLAG_NAME) fun alignmentOnWideScreens_configDisabled_statusBarForDesktopEnabled_topStart() = testScope.runTest { overrideConfig(R.bool.config_notificationShadeOnTopEnd, false) assertThat(kosmos.createTestInstance().alignmentOnWideScreens) .isEqualTo(Alignment.TopStart) } @Test @EnableFlags(StatusBarForDesktop.FLAG_NAME) fun alignmentOnWideScreens_configEnabled_statusBarForDesktopEnabled_topEnd() = testScope.runTest { overrideConfig(R.bool.config_notificationShadeOnTopEnd, true) assertThat(kosmos.createTestInstance().alignmentOnWideScreens) .isEqualTo(Alignment.TopEnd) } @Test fun onScrimClicked_hidesShade() = testScope.runTest { Loading Loading @@ -259,13 +298,36 @@ class NotificationsShadeOverlayContentViewModelTest : SysuiTestCase() { } private fun setEnableDesktopFeatureSet(enable: Boolean) { kosmos.testableContext.orCreateTestableResources.addOverride( R.bool.config_enableDesktopFeatureSet, enable, ) overrideConfig(R.bool.config_enableDesktopFeatureSet, enable) kosmos.configurationController.onConfigurationChanged(Configuration()) } private fun overrideConfig(configId: Int, value: Boolean) { kosmos.testableContext.orCreateTestableResources.addOverride(configId, value) } private fun Kosmos.createTestInstance(): NotificationsShadeOverlayContentViewModel { val desktopInteractor = DesktopInteractor( resources = mainResources, scope = backgroundScope, configurationController = configurationController, ) return NotificationsShadeOverlayContentViewModel( mainDispatcher = testDispatcher, shadeHeaderViewModelFactory = shadeHeaderViewModelFactory, notificationsPlaceholderViewModelFactory = notificationsPlaceholderViewModelFactory, sceneInteractor = sceneInteractor, shadeInteractor = shadeInteractor, shadeModeInteractor = shadeModeInteractor, disableFlagsInteractor = disableFlagsInteractor, mediaCarouselInteractor = mediaCarouselInteractor, windowRootViewBlurInteractor = windowRootViewBlurInteractor, desktopInteractor = desktopInteractor, mediaViewModelFactory = mediaViewModelFactory, ) } private suspend fun TestScope.unlockDevice() { val currentScene by collectLastValue(sceneInteractor.currentScene) kosmos.powerInteractor.setAwakeForTest() Loading packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelTest.kt +173 −0 Original line number Diff line number Diff line Loading @@ -17,17 +17,25 @@ package com.android.systemui.statusbar.notification.stack.ui.viewmodel import android.content.applicationContext import android.content.res.mainResources import android.content.testableContext import android.platform.test.annotations.EnableFlags import android.platform.test.flag.junit.FlagsParameterization import androidx.test.filters.SmallTest import com.android.systemui.Flags.FLAG_GLANCEABLE_HUB_V2 import com.android.systemui.Flags.FLAG_LOCKSCREEN_SHADE_TO_DREAM_TRANSITION_FIX import com.android.systemui.Flags.FLAG_STATUS_BAR_FOR_DESKTOP import com.android.systemui.SysuiTestCase import com.android.systemui.bouncer.data.repository.keyguardBouncerRepository import com.android.systemui.bouncer.domain.interactor.bouncerInteractor import com.android.systemui.common.shared.model.NotificationContainerBounds 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.communalSceneInteractor import com.android.systemui.communal.shared.model.CommunalScenes import com.android.systemui.desktop.domain.interactor.DesktopInteractor import com.android.systemui.dump.dumpManager import com.android.systemui.flags.BrokenWithSceneContainer import com.android.systemui.flags.DisableSceneContainer import com.android.systemui.flags.EnableSceneContainer Loading @@ -37,6 +45,7 @@ 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.domain.interactor.keyguardInteractor import com.android.systemui.keyguard.domain.interactor.keyguardTransitionInteractor import com.android.systemui.keyguard.shared.model.BurnInModel import com.android.systemui.keyguard.shared.model.KeyguardState.ALTERNATE_BOUNCER import com.android.systemui.keyguard.shared.model.KeyguardState.AOD Loading @@ -52,9 +61,40 @@ import com.android.systemui.keyguard.shared.model.TransitionState import com.android.systemui.keyguard.shared.model.TransitionStep import com.android.systemui.keyguard.ui.viewmodel.AodBurnInViewModel import com.android.systemui.keyguard.ui.viewmodel.ViewStateAccessor import com.android.systemui.keyguard.ui.viewmodel.alternateBouncerToGoneTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.alternateBouncerToPrimaryBouncerTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.aodBurnInViewModel import com.android.systemui.keyguard.ui.viewmodel.aodToGlanceableHubTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.aodToGoneTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.aodToLockscreenTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.aodToOccludedTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.aodToPrimaryBouncerTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.dozingToGlanceableHubTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.dozingToLockscreenTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.dozingToOccludedTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.dozingToPrimaryBouncerTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.dreamingToLockscreenTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.glanceableHubToAodTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.glanceableHubToLockscreenTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.goneToAodTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.goneToDozingTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.goneToDreamingTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.goneToLockscreenTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.keyguardRootViewModel import com.android.systemui.keyguard.ui.viewmodel.lockscreenToDreamingTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.lockscreenToGlanceableHubTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.lockscreenToGoneTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.lockscreenToOccludedTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.lockscreenToPrimaryBouncerTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.occludedToAodTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.occludedToGoneTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.occludedToLockscreenTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.offToLockscreenTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.primaryBouncerToGoneTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.primaryBouncerToLockscreenTransitionViewModel import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.applicationCoroutineScope import com.android.systemui.kosmos.backgroundScope import com.android.systemui.kosmos.collectLastValue import com.android.systemui.kosmos.collectValues import com.android.systemui.kosmos.runTest Loading @@ -72,13 +112,21 @@ import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.shade.domain.interactor.enableDualShade import com.android.systemui.shade.domain.interactor.enableSingleShade import com.android.systemui.shade.domain.interactor.enableSplitShade import com.android.systemui.shade.domain.interactor.shadeInteractor import com.android.systemui.shade.domain.interactor.shadeModeInteractor import com.android.systemui.shade.largeScreenHeaderHelper import com.android.systemui.shade.mockLargeScreenHeaderHelper import com.android.systemui.shade.shadeTestUtil import com.android.systemui.statusbar.notification.data.repository.activeNotificationListRepository import com.android.systemui.statusbar.notification.data.repository.setActiveNotifs import com.android.systemui.statusbar.notification.domain.interactor.activeNotificationsInteractor import com.android.systemui.statusbar.notification.stack.domain.interactor.headsUpNotificationInteractor import com.android.systemui.statusbar.notification.stack.domain.interactor.notificationStackAppearanceInteractor import com.android.systemui.statusbar.notification.stack.domain.interactor.sharedNotificationContainerInteractor import com.android.systemui.statusbar.notification.stack.ui.viewmodel.SharedNotificationContainerViewModel.HorizontalPosition import com.android.systemui.statusbar.policy.configurationController import com.android.systemui.testKosmos import com.android.systemui.unfold.domain.interactor.unfoldTransitionInteractor import com.android.systemui.window.ui.viewmodel.fakeBouncerTransitions import com.google.common.collect.Range import com.google.common.truth.Truth.assertThat Loading Loading @@ -163,6 +211,25 @@ class SharedNotificationContainerViewModelTest(flags: FlagsParameterization) : S assertThat(dimens!!.marginStart).isEqualTo(20) } @Test @EnableSceneContainer @EnableFlags(FLAG_STATUS_BAR_FOR_DESKTOP) fun validateMarginStart_dualShade_isNotificationShadeOnTopEnd() = kosmos.runTest { testableContext.orCreateTestableResources.addOverride( R.bool.config_notificationShadeOnTopEnd, true, ) enableDualShade(wideLayout = true) val underTest = createTestInstance() val dimens by collectLastValue(underTest.configurationBasedDimensions) fakeConfigurationRepository.onAnyConfigurationChange() assertThat(checkNotNull(dimens).marginStart).isEqualTo(0) } @Test @DisableSceneContainer fun validateHorizontalPosition_singleShade() = Loading Loading @@ -238,6 +305,26 @@ class SharedNotificationContainerViewModelTest(flags: FlagsParameterization) : S assertThat(horizontalPosition.maxWidth).isEqualTo(200) } @Test @EnableSceneContainer @EnableFlags(FLAG_STATUS_BAR_FOR_DESKTOP) fun validateHorizontalPosition_dualShade_isNotificationShadeOnTopEnd() = kosmos.runTest { testableContext.orCreateTestableResources.addOverride( R.bool.config_notificationShadeOnTopEnd, true, ) enableDualShade(wideLayout = true) overrideDimensionPixelSize(R.dimen.shade_panel_width, 200) val underTest = createTestInstance() val dimens by collectLastValue(underTest.configurationBasedDimensions) val horizontalPosition = checkNotNull(dimens).horizontalPosition assertIs<HorizontalPosition.MiddleToEdge>(horizontalPosition) assertThat(horizontalPosition.maxWidth).isEqualTo(200) } @Test fun validatePaddingTop_splitShade_usesLargeHeaderHelper() = kosmos.runTest { Loading Loading @@ -297,6 +384,26 @@ class SharedNotificationContainerViewModelTest(flags: FlagsParameterization) : S assertThat(dimens!!.marginEnd).isEqualTo(50) } @Test @EnableSceneContainer @EnableFlags(FLAG_STATUS_BAR_FOR_DESKTOP) fun validateMarginEnd_dualShade_isNotificationShadeOnTopEnd() = kosmos.runTest { testableContext.orCreateTestableResources.addOverride( R.bool.config_notificationShadeOnTopEnd, true, ) enableDualShade(wideLayout = true) overrideResource(R.dimen.shade_panel_margin_horizontal, 50) val underTest = createTestInstance() val dimens by collectLastValue(underTest.configurationBasedDimensions) fakeConfigurationRepository.onAnyConfigurationChange() assertThat(checkNotNull(dimens).marginEnd).isEqualTo(50) } @Test fun validateMarginBottom() = kosmos.runTest { Loading Loading @@ -1641,4 +1748,70 @@ class SharedNotificationContainerViewModelTest(flags: FlagsParameterization) : S overrideResource(id, pixelSize) fakeConfigurationRepository.setDimensionPixelSize(id, pixelSize) } private fun Kosmos.createTestInstance(): SharedNotificationContainerViewModel { val desktopInteractor = DesktopInteractor( resources = mainResources, scope = backgroundScope, configurationController = configurationController, ) return SharedNotificationContainerViewModel( interactor = sharedNotificationContainerInteractor, dumpManager = dumpManager, applicationScope = applicationCoroutineScope, context = applicationContext, configurationInteractor = configurationInteractor, keyguardInteractor = keyguardInteractor, keyguardTransitionInteractor = keyguardTransitionInteractor, shadeInteractor = shadeInteractor, sceneInteractor = sceneInteractor, bouncerInteractor = bouncerInteractor, shadeModeInteractor = shadeModeInteractor, notificationStackAppearanceInteractor = notificationStackAppearanceInteractor, alternateBouncerToGoneTransitionViewModel = alternateBouncerToGoneTransitionViewModel, alternateBouncerToPrimaryBouncerTransitionViewModel = alternateBouncerToPrimaryBouncerTransitionViewModel, aodToGoneTransitionViewModel = aodToGoneTransitionViewModel, aodToLockscreenTransitionViewModel = aodToLockscreenTransitionViewModel, aodToOccludedTransitionViewModel = aodToOccludedTransitionViewModel, aodToPrimaryBouncerTransitionViewModel = aodToPrimaryBouncerTransitionViewModel, dozingToGlanceableHubTransitionViewModel = dozingToGlanceableHubTransitionViewModel, dozingToLockscreenTransitionViewModel = dozingToLockscreenTransitionViewModel, dozingToOccludedTransitionViewModel = dozingToOccludedTransitionViewModel, dozingToPrimaryBouncerTransitionViewModel = dozingToPrimaryBouncerTransitionViewModel, dreamingToLockscreenTransitionViewModel = dreamingToLockscreenTransitionViewModel, goneToAodTransitionViewModel = goneToAodTransitionViewModel, goneToDozingTransitionViewModel = goneToDozingTransitionViewModel, goneToDreamingTransitionViewModel = goneToDreamingTransitionViewModel, goneToLockscreenTransitionViewModel = goneToLockscreenTransitionViewModel, glanceableHubToLockscreenTransitionViewModel = glanceableHubToLockscreenTransitionViewModel, lockscreenToDreamingTransitionViewModel = lockscreenToDreamingTransitionViewModel, lockscreenToGlanceableHubTransitionViewModel = lockscreenToGlanceableHubTransitionViewModel, lockscreenToGoneTransitionViewModel = lockscreenToGoneTransitionViewModel, lockscreenToOccludedTransitionViewModel = lockscreenToOccludedTransitionViewModel, lockscreenToPrimaryBouncerTransitionViewModel = lockscreenToPrimaryBouncerTransitionViewModel, occludedToAodTransitionViewModel = occludedToAodTransitionViewModel, occludedToGoneTransitionViewModel = occludedToGoneTransitionViewModel, occludedToLockscreenTransitionViewModel = occludedToLockscreenTransitionViewModel, offToLockscreenTransitionViewModel = offToLockscreenTransitionViewModel, primaryBouncerToGoneTransitionViewModel = primaryBouncerToGoneTransitionViewModel, primaryBouncerToLockscreenTransitionViewModel = primaryBouncerToLockscreenTransitionViewModel, primaryBouncerTransitions = fakeBouncerTransitions, aodBurnInViewModel = aodBurnInViewModel, communalSceneInteractor = communalSceneInteractor, desktopInteractor = desktopInteractor, headsUpNotificationInteractor = { headsUpNotificationInteractor }, largeScreenHeaderHelperLazy = { largeScreenHeaderHelper }, unfoldTransitionInteractor = unfoldTransitionInteractor, glanceableHubToAodTransitionViewModel = glanceableHubToAodTransitionViewModel, aodToGlanceableHubTransitionViewModel = aodToGlanceableHubTransitionViewModel, activeNotificationsInteractor = activeNotificationsInteractor, mediaDataManager = legacyMediaDataManagerImpl, ) } } packages/SystemUI/res/values/config.xml +7 −0 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/NotificationsShadeOverlay.kt +1 −2 Original line number Diff line number Diff line Loading @@ -20,7 +20,6 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.dimensionResource import com.android.compose.animation.scene.ContentScope Loading Loading @@ -95,7 +94,7 @@ constructor( OverlayShade( panelElement = NotificationsShade.Elements.Panel, alignmentOnWideScreens = Alignment.TopStart, alignmentOnWideScreens = viewModel.alignmentOnWideScreens, enableTransparency = viewModel.isTransparencyEnabled, modifier = modifier, onScrimClicked = viewModel::onScrimClicked, Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/desktop/domain/interactor/DesktopInteractorTest.kt +67 −9 Original line number Diff line number Diff line Loading @@ -16,16 +16,25 @@ package com.android.systemui.desktop.domain.interactor import android.content.res.mainResources import android.content.testableContext 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 import com.android.systemui.SysuiTestCase import com.android.systemui.flags.EnableSceneContainer import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.backgroundScope import com.android.systemui.kosmos.collectLastValue import com.android.systemui.kosmos.runTest import com.android.systemui.res.R import com.android.systemui.statusbar.policy.configurationController import com.android.systemui.testKosmos import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.ExperimentalCoroutinesApi import org.junit.Before import org.junit.Test import org.junit.runner.RunWith Loading @@ -34,17 +43,19 @@ import org.junit.runner.RunWith @RunWith(AndroidJUnit4::class) class DesktopInteractorTest : SysuiTestCase() { private val kosmos = testKosmos() private val underTest = kosmos.desktopInteractor private lateinit var underTest: DesktopInteractor @Before fun setUp() { underTest = kosmos.desktopInteractor } @Test fun isDesktopFeatureSetEnabled_false() = kosmos.runTest { val isDesktopFeatureSetEnabled by collectLastValue(underTest.isDesktopFeatureSetEnabled) testableContext.orCreateTestableResources.addOverride( R.bool.config_enableDesktopFeatureSet, false, ) overrideConfig(R.bool.config_enableDesktopFeatureSet, false) assertThat(isDesktopFeatureSetEnabled).isFalse() } Loading @@ -54,11 +65,58 @@ class DesktopInteractorTest : SysuiTestCase() { kosmos.runTest { val isDesktopFeatureSetEnabled by collectLastValue(underTest.isDesktopFeatureSetEnabled) testableContext.orCreateTestableResources.addOverride( R.bool.config_enableDesktopFeatureSet, true, ) overrideConfig(R.bool.config_enableDesktopFeatureSet, true) assertThat(isDesktopFeatureSetEnabled).isTrue() } @EnableFlags(Flags.FLAG_STATUS_BAR_FOR_DESKTOP) @EnableSceneContainer @Test fun desktopStatusBarEnabled_configEnabled_isNotificationShadeOnTopEndReturnsTrue() = kosmos.runTest { overrideConfig(R.bool.config_notificationShadeOnTopEnd, true) assertThat(createTestInstance().isNotificationShadeOnTopEnd).isTrue() } @EnableFlags(Flags.FLAG_STATUS_BAR_FOR_DESKTOP) @EnableSceneContainer @Test fun desktopStatusBarEnabled_configDisabled_isNotificationShadeOnTopEndReturnsFalse() = kosmos.runTest { overrideConfig(R.bool.config_notificationShadeOnTopEnd, false) assertThat(createTestInstance().isNotificationShadeOnTopEnd).isFalse() } @DisableFlags(Flags.FLAG_STATUS_BAR_FOR_DESKTOP) @Test fun desktopStatusBarDisabled_configEnabled_isNotificationShadeOnTopEndReturnsFalse() = kosmos.runTest { overrideConfig(R.bool.config_notificationShadeOnTopEnd, true) assertThat(createTestInstance().isNotificationShadeOnTopEnd).isFalse() } @DisableFlags(Flags.FLAG_STATUS_BAR_FOR_DESKTOP) @Test fun desktopStatusBarDisabled_configDisabled_isNotificationShadeOnTopEndReturnsFalse() = kosmos.runTest { overrideConfig(R.bool.config_notificationShadeOnTopEnd, false) assertThat(createTestInstance().isNotificationShadeOnTopEnd).isFalse() } private fun Kosmos.overrideConfig(configId: Int, value: Boolean) { testableContext.orCreateTestableResources.addOverride(configId, value) } private fun Kosmos.createTestInstance(): DesktopInteractor { return DesktopInteractor( resources = mainResources, scope = backgroundScope, configurationController = configurationController, ) } }
packages/SystemUI/multivalentTests/src/com/android/systemui/notifications/ui/viewmodel/NotificationsShadeOverlayContentViewModelTest.kt +66 −4 Original line number Diff line number Diff line Loading @@ -18,10 +18,12 @@ package com.android.systemui.notifications.ui.viewmodel import android.app.StatusBarManager.DISABLE2_QUICK_SETTINGS import android.content.res.Configuration import android.content.res.mainResources import android.content.testableContext import android.platform.test.annotations.DisableFlags import android.platform.test.annotations.EnableFlags import android.testing.TestableLooper import androidx.compose.ui.Alignment import androidx.compose.ui.geometry.Rect import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest Loading @@ -31,13 +33,19 @@ import com.android.systemui.authentication.data.repository.FakeAuthenticationRep import com.android.systemui.authentication.domain.interactor.AuthenticationResult import com.android.systemui.authentication.domain.interactor.authenticationInteractor import com.android.systemui.coroutines.collectLastValue import com.android.systemui.desktop.domain.interactor.DesktopInteractor import com.android.systemui.flags.EnableSceneContainer import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.backgroundScope import com.android.systemui.kosmos.runCurrent import com.android.systemui.kosmos.testDispatcher import com.android.systemui.kosmos.testScope import com.android.systemui.kosmos.useUnconfinedTestDispatcher import com.android.systemui.lifecycle.activateIn import com.android.systemui.media.controls.domain.pipeline.interactor.mediaCarouselInteractor import com.android.systemui.media.controls.shared.model.MediaData import com.android.systemui.media.remedia.data.repository.mediaPipelineRepository import com.android.systemui.media.remedia.ui.viewmodel.factory.mediaViewModelFactory import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.setAsleepForTest import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.setAwakeForTest import com.android.systemui.power.domain.interactor.powerInteractor Loading @@ -50,12 +58,17 @@ import com.android.systemui.shade.domain.interactor.enableDualShade import com.android.systemui.shade.domain.interactor.enableSingleShade import com.android.systemui.shade.domain.interactor.enableSplitShade import com.android.systemui.shade.domain.interactor.shadeInteractor import com.android.systemui.shade.domain.interactor.shadeModeInteractor import com.android.systemui.shade.ui.viewmodel.notificationsShadeOverlayContentViewModel import com.android.systemui.shade.ui.viewmodel.shadeHeaderViewModelFactory import com.android.systemui.statusbar.core.StatusBarForDesktop import com.android.systemui.statusbar.disableflags.data.repository.fakeDisableFlagsRepository import com.android.systemui.statusbar.disableflags.domain.interactor.disableFlagsInteractor import com.android.systemui.statusbar.notification.stack.ui.viewmodel.notificationsPlaceholderViewModelFactory import com.android.systemui.statusbar.policy.configurationController import com.android.systemui.testKosmos import com.android.systemui.window.data.repository.fakeWindowRootViewBlurRepository import com.android.systemui.window.domain.interactor.windowRootViewBlurInteractor import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.update Loading Loading @@ -109,6 +122,32 @@ class NotificationsShadeOverlayContentViewModelTest : SysuiTestCase() { assertThat(underTest.showHeader).isTrue() } @Test @DisableFlags(StatusBarForDesktop.FLAG_NAME) fun alignmentOnWideScreens_statusBarForDesktopDisabled_topStart() = testScope.runTest { assertThat(kosmos.createTestInstance().alignmentOnWideScreens) .isEqualTo(Alignment.TopStart) } @Test @EnableFlags(StatusBarForDesktop.FLAG_NAME) fun alignmentOnWideScreens_configDisabled_statusBarForDesktopEnabled_topStart() = testScope.runTest { overrideConfig(R.bool.config_notificationShadeOnTopEnd, false) assertThat(kosmos.createTestInstance().alignmentOnWideScreens) .isEqualTo(Alignment.TopStart) } @Test @EnableFlags(StatusBarForDesktop.FLAG_NAME) fun alignmentOnWideScreens_configEnabled_statusBarForDesktopEnabled_topEnd() = testScope.runTest { overrideConfig(R.bool.config_notificationShadeOnTopEnd, true) assertThat(kosmos.createTestInstance().alignmentOnWideScreens) .isEqualTo(Alignment.TopEnd) } @Test fun onScrimClicked_hidesShade() = testScope.runTest { Loading Loading @@ -259,13 +298,36 @@ class NotificationsShadeOverlayContentViewModelTest : SysuiTestCase() { } private fun setEnableDesktopFeatureSet(enable: Boolean) { kosmos.testableContext.orCreateTestableResources.addOverride( R.bool.config_enableDesktopFeatureSet, enable, ) overrideConfig(R.bool.config_enableDesktopFeatureSet, enable) kosmos.configurationController.onConfigurationChanged(Configuration()) } private fun overrideConfig(configId: Int, value: Boolean) { kosmos.testableContext.orCreateTestableResources.addOverride(configId, value) } private fun Kosmos.createTestInstance(): NotificationsShadeOverlayContentViewModel { val desktopInteractor = DesktopInteractor( resources = mainResources, scope = backgroundScope, configurationController = configurationController, ) return NotificationsShadeOverlayContentViewModel( mainDispatcher = testDispatcher, shadeHeaderViewModelFactory = shadeHeaderViewModelFactory, notificationsPlaceholderViewModelFactory = notificationsPlaceholderViewModelFactory, sceneInteractor = sceneInteractor, shadeInteractor = shadeInteractor, shadeModeInteractor = shadeModeInteractor, disableFlagsInteractor = disableFlagsInteractor, mediaCarouselInteractor = mediaCarouselInteractor, windowRootViewBlurInteractor = windowRootViewBlurInteractor, desktopInteractor = desktopInteractor, mediaViewModelFactory = mediaViewModelFactory, ) } private suspend fun TestScope.unlockDevice() { val currentScene by collectLastValue(sceneInteractor.currentScene) kosmos.powerInteractor.setAwakeForTest() Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelTest.kt +173 −0 Original line number Diff line number Diff line Loading @@ -17,17 +17,25 @@ package com.android.systemui.statusbar.notification.stack.ui.viewmodel import android.content.applicationContext import android.content.res.mainResources import android.content.testableContext import android.platform.test.annotations.EnableFlags import android.platform.test.flag.junit.FlagsParameterization import androidx.test.filters.SmallTest import com.android.systemui.Flags.FLAG_GLANCEABLE_HUB_V2 import com.android.systemui.Flags.FLAG_LOCKSCREEN_SHADE_TO_DREAM_TRANSITION_FIX import com.android.systemui.Flags.FLAG_STATUS_BAR_FOR_DESKTOP import com.android.systemui.SysuiTestCase import com.android.systemui.bouncer.data.repository.keyguardBouncerRepository import com.android.systemui.bouncer.domain.interactor.bouncerInteractor import com.android.systemui.common.shared.model.NotificationContainerBounds 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.communalSceneInteractor import com.android.systemui.communal.shared.model.CommunalScenes import com.android.systemui.desktop.domain.interactor.DesktopInteractor import com.android.systemui.dump.dumpManager import com.android.systemui.flags.BrokenWithSceneContainer import com.android.systemui.flags.DisableSceneContainer import com.android.systemui.flags.EnableSceneContainer Loading @@ -37,6 +45,7 @@ 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.domain.interactor.keyguardInteractor import com.android.systemui.keyguard.domain.interactor.keyguardTransitionInteractor import com.android.systemui.keyguard.shared.model.BurnInModel import com.android.systemui.keyguard.shared.model.KeyguardState.ALTERNATE_BOUNCER import com.android.systemui.keyguard.shared.model.KeyguardState.AOD Loading @@ -52,9 +61,40 @@ import com.android.systemui.keyguard.shared.model.TransitionState import com.android.systemui.keyguard.shared.model.TransitionStep import com.android.systemui.keyguard.ui.viewmodel.AodBurnInViewModel import com.android.systemui.keyguard.ui.viewmodel.ViewStateAccessor import com.android.systemui.keyguard.ui.viewmodel.alternateBouncerToGoneTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.alternateBouncerToPrimaryBouncerTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.aodBurnInViewModel import com.android.systemui.keyguard.ui.viewmodel.aodToGlanceableHubTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.aodToGoneTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.aodToLockscreenTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.aodToOccludedTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.aodToPrimaryBouncerTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.dozingToGlanceableHubTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.dozingToLockscreenTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.dozingToOccludedTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.dozingToPrimaryBouncerTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.dreamingToLockscreenTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.glanceableHubToAodTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.glanceableHubToLockscreenTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.goneToAodTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.goneToDozingTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.goneToDreamingTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.goneToLockscreenTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.keyguardRootViewModel import com.android.systemui.keyguard.ui.viewmodel.lockscreenToDreamingTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.lockscreenToGlanceableHubTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.lockscreenToGoneTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.lockscreenToOccludedTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.lockscreenToPrimaryBouncerTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.occludedToAodTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.occludedToGoneTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.occludedToLockscreenTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.offToLockscreenTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.primaryBouncerToGoneTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.primaryBouncerToLockscreenTransitionViewModel import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.applicationCoroutineScope import com.android.systemui.kosmos.backgroundScope import com.android.systemui.kosmos.collectLastValue import com.android.systemui.kosmos.collectValues import com.android.systemui.kosmos.runTest Loading @@ -72,13 +112,21 @@ import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.shade.domain.interactor.enableDualShade import com.android.systemui.shade.domain.interactor.enableSingleShade import com.android.systemui.shade.domain.interactor.enableSplitShade import com.android.systemui.shade.domain.interactor.shadeInteractor import com.android.systemui.shade.domain.interactor.shadeModeInteractor import com.android.systemui.shade.largeScreenHeaderHelper import com.android.systemui.shade.mockLargeScreenHeaderHelper import com.android.systemui.shade.shadeTestUtil import com.android.systemui.statusbar.notification.data.repository.activeNotificationListRepository import com.android.systemui.statusbar.notification.data.repository.setActiveNotifs import com.android.systemui.statusbar.notification.domain.interactor.activeNotificationsInteractor import com.android.systemui.statusbar.notification.stack.domain.interactor.headsUpNotificationInteractor import com.android.systemui.statusbar.notification.stack.domain.interactor.notificationStackAppearanceInteractor import com.android.systemui.statusbar.notification.stack.domain.interactor.sharedNotificationContainerInteractor import com.android.systemui.statusbar.notification.stack.ui.viewmodel.SharedNotificationContainerViewModel.HorizontalPosition import com.android.systemui.statusbar.policy.configurationController import com.android.systemui.testKosmos import com.android.systemui.unfold.domain.interactor.unfoldTransitionInteractor import com.android.systemui.window.ui.viewmodel.fakeBouncerTransitions import com.google.common.collect.Range import com.google.common.truth.Truth.assertThat Loading Loading @@ -163,6 +211,25 @@ class SharedNotificationContainerViewModelTest(flags: FlagsParameterization) : S assertThat(dimens!!.marginStart).isEqualTo(20) } @Test @EnableSceneContainer @EnableFlags(FLAG_STATUS_BAR_FOR_DESKTOP) fun validateMarginStart_dualShade_isNotificationShadeOnTopEnd() = kosmos.runTest { testableContext.orCreateTestableResources.addOverride( R.bool.config_notificationShadeOnTopEnd, true, ) enableDualShade(wideLayout = true) val underTest = createTestInstance() val dimens by collectLastValue(underTest.configurationBasedDimensions) fakeConfigurationRepository.onAnyConfigurationChange() assertThat(checkNotNull(dimens).marginStart).isEqualTo(0) } @Test @DisableSceneContainer fun validateHorizontalPosition_singleShade() = Loading Loading @@ -238,6 +305,26 @@ class SharedNotificationContainerViewModelTest(flags: FlagsParameterization) : S assertThat(horizontalPosition.maxWidth).isEqualTo(200) } @Test @EnableSceneContainer @EnableFlags(FLAG_STATUS_BAR_FOR_DESKTOP) fun validateHorizontalPosition_dualShade_isNotificationShadeOnTopEnd() = kosmos.runTest { testableContext.orCreateTestableResources.addOverride( R.bool.config_notificationShadeOnTopEnd, true, ) enableDualShade(wideLayout = true) overrideDimensionPixelSize(R.dimen.shade_panel_width, 200) val underTest = createTestInstance() val dimens by collectLastValue(underTest.configurationBasedDimensions) val horizontalPosition = checkNotNull(dimens).horizontalPosition assertIs<HorizontalPosition.MiddleToEdge>(horizontalPosition) assertThat(horizontalPosition.maxWidth).isEqualTo(200) } @Test fun validatePaddingTop_splitShade_usesLargeHeaderHelper() = kosmos.runTest { Loading Loading @@ -297,6 +384,26 @@ class SharedNotificationContainerViewModelTest(flags: FlagsParameterization) : S assertThat(dimens!!.marginEnd).isEqualTo(50) } @Test @EnableSceneContainer @EnableFlags(FLAG_STATUS_BAR_FOR_DESKTOP) fun validateMarginEnd_dualShade_isNotificationShadeOnTopEnd() = kosmos.runTest { testableContext.orCreateTestableResources.addOverride( R.bool.config_notificationShadeOnTopEnd, true, ) enableDualShade(wideLayout = true) overrideResource(R.dimen.shade_panel_margin_horizontal, 50) val underTest = createTestInstance() val dimens by collectLastValue(underTest.configurationBasedDimensions) fakeConfigurationRepository.onAnyConfigurationChange() assertThat(checkNotNull(dimens).marginEnd).isEqualTo(50) } @Test fun validateMarginBottom() = kosmos.runTest { Loading Loading @@ -1641,4 +1748,70 @@ class SharedNotificationContainerViewModelTest(flags: FlagsParameterization) : S overrideResource(id, pixelSize) fakeConfigurationRepository.setDimensionPixelSize(id, pixelSize) } private fun Kosmos.createTestInstance(): SharedNotificationContainerViewModel { val desktopInteractor = DesktopInteractor( resources = mainResources, scope = backgroundScope, configurationController = configurationController, ) return SharedNotificationContainerViewModel( interactor = sharedNotificationContainerInteractor, dumpManager = dumpManager, applicationScope = applicationCoroutineScope, context = applicationContext, configurationInteractor = configurationInteractor, keyguardInteractor = keyguardInteractor, keyguardTransitionInteractor = keyguardTransitionInteractor, shadeInteractor = shadeInteractor, sceneInteractor = sceneInteractor, bouncerInteractor = bouncerInteractor, shadeModeInteractor = shadeModeInteractor, notificationStackAppearanceInteractor = notificationStackAppearanceInteractor, alternateBouncerToGoneTransitionViewModel = alternateBouncerToGoneTransitionViewModel, alternateBouncerToPrimaryBouncerTransitionViewModel = alternateBouncerToPrimaryBouncerTransitionViewModel, aodToGoneTransitionViewModel = aodToGoneTransitionViewModel, aodToLockscreenTransitionViewModel = aodToLockscreenTransitionViewModel, aodToOccludedTransitionViewModel = aodToOccludedTransitionViewModel, aodToPrimaryBouncerTransitionViewModel = aodToPrimaryBouncerTransitionViewModel, dozingToGlanceableHubTransitionViewModel = dozingToGlanceableHubTransitionViewModel, dozingToLockscreenTransitionViewModel = dozingToLockscreenTransitionViewModel, dozingToOccludedTransitionViewModel = dozingToOccludedTransitionViewModel, dozingToPrimaryBouncerTransitionViewModel = dozingToPrimaryBouncerTransitionViewModel, dreamingToLockscreenTransitionViewModel = dreamingToLockscreenTransitionViewModel, goneToAodTransitionViewModel = goneToAodTransitionViewModel, goneToDozingTransitionViewModel = goneToDozingTransitionViewModel, goneToDreamingTransitionViewModel = goneToDreamingTransitionViewModel, goneToLockscreenTransitionViewModel = goneToLockscreenTransitionViewModel, glanceableHubToLockscreenTransitionViewModel = glanceableHubToLockscreenTransitionViewModel, lockscreenToDreamingTransitionViewModel = lockscreenToDreamingTransitionViewModel, lockscreenToGlanceableHubTransitionViewModel = lockscreenToGlanceableHubTransitionViewModel, lockscreenToGoneTransitionViewModel = lockscreenToGoneTransitionViewModel, lockscreenToOccludedTransitionViewModel = lockscreenToOccludedTransitionViewModel, lockscreenToPrimaryBouncerTransitionViewModel = lockscreenToPrimaryBouncerTransitionViewModel, occludedToAodTransitionViewModel = occludedToAodTransitionViewModel, occludedToGoneTransitionViewModel = occludedToGoneTransitionViewModel, occludedToLockscreenTransitionViewModel = occludedToLockscreenTransitionViewModel, offToLockscreenTransitionViewModel = offToLockscreenTransitionViewModel, primaryBouncerToGoneTransitionViewModel = primaryBouncerToGoneTransitionViewModel, primaryBouncerToLockscreenTransitionViewModel = primaryBouncerToLockscreenTransitionViewModel, primaryBouncerTransitions = fakeBouncerTransitions, aodBurnInViewModel = aodBurnInViewModel, communalSceneInteractor = communalSceneInteractor, desktopInteractor = desktopInteractor, headsUpNotificationInteractor = { headsUpNotificationInteractor }, largeScreenHeaderHelperLazy = { largeScreenHeaderHelper }, unfoldTransitionInteractor = unfoldTransitionInteractor, glanceableHubToAodTransitionViewModel = glanceableHubToAodTransitionViewModel, aodToGlanceableHubTransitionViewModel = aodToGlanceableHubTransitionViewModel, activeNotificationsInteractor = activeNotificationsInteractor, mediaDataManager = legacyMediaDataManagerImpl, ) } }
packages/SystemUI/res/values/config.xml +7 −0 File changed.Preview size limit exceeded, changes collapsed. Show changes