diff options
| author | 2025-01-25 20:53:20 +0000 | |
|---|---|---|
| committer | 2025-01-27 10:17:22 -0800 | |
| commit | ecd54893517856587beb549b21f289e686a22863 (patch) | |
| tree | 969c10615ba2dad009680d3d5493747f05217de7 | |
| parent | 85f51f25c6cc2dd63362ae50f420fc4609eeb671 (diff) | |
Shade should be blurred only when shade blur flag is on
Other changes:
- Fixes a couple of occlusion scenarios where the shade is open.
Bug: 370555003
Fixes: 391409919
Flag: com.android.systemui.notification_shade_blur
Test: updated unit tests, verified manually.
Change-Id: I21b683aa46c0286d270276225983b1554d217d80
12 files changed, 191 insertions, 33 deletions
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToPrimaryBouncerTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToPrimaryBouncerTransitionViewModelTest.kt index 286f8bfd63a2..e93ed39274fb 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToPrimaryBouncerTransitionViewModelTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToPrimaryBouncerTransitionViewModelTest.kt @@ -20,6 +20,7 @@ import android.platform.test.annotations.EnableFlags import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.Flags.FLAG_BOUNCER_UI_REVAMP +import com.android.systemui.Flags.FLAG_NOTIFICATION_SHADE_BLUR import com.android.systemui.SysuiTestCase import com.android.systemui.coroutines.collectValues import com.android.systemui.flags.BrokenWithSceneContainer @@ -97,6 +98,7 @@ class AlternateBouncerToPrimaryBouncerTransitionViewModelTest : SysuiTestCase() } @Test + @EnableFlags(FLAG_NOTIFICATION_SHADE_BLUR) fun blurRadiusGoesToMaximumWhenShadeIsExpanded() = testScope.runTest { val values by collectValues(underTest.windowBlurRadius) diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToPrimaryBouncerTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToPrimaryBouncerTransitionViewModelTest.kt index 60a19a4c7d07..aaca603ecf77 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToPrimaryBouncerTransitionViewModelTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToPrimaryBouncerTransitionViewModelTest.kt @@ -21,6 +21,7 @@ import android.platform.test.flag.junit.FlagsParameterization import androidx.test.filters.SmallTest import com.android.compose.animation.scene.ObservableTransitionState import com.android.systemui.Flags.FLAG_BOUNCER_UI_REVAMP +import com.android.systemui.Flags.FLAG_NOTIFICATION_SHADE_BLUR import com.android.systemui.SysuiTestCase import com.android.systemui.coroutines.collectLastValue import com.android.systemui.coroutines.collectValues @@ -155,6 +156,7 @@ class LockscreenToPrimaryBouncerTransitionViewModelTest(flags: FlagsParameteriza } @Test + @EnableFlags(FLAG_NOTIFICATION_SHADE_BLUR) @BrokenWithSceneContainer(388068805) fun blurRadiusIsMaxWhenShadeIsExpanded() = testScope.runTest { diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToPrimaryBouncerTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToPrimaryBouncerTransitionViewModelTest.kt index 6db876756d3a..0951df24c56f 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToPrimaryBouncerTransitionViewModelTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToPrimaryBouncerTransitionViewModelTest.kt @@ -16,50 +16,96 @@ package com.android.systemui.keyguard.ui.viewmodel -import androidx.test.ext.junit.runners.AndroidJUnit4 +import android.platform.test.annotations.EnableFlags +import android.platform.test.flag.junit.FlagsParameterization import androidx.test.filters.SmallTest +import com.android.systemui.Flags.FLAG_NOTIFICATION_SHADE_BLUR import com.android.systemui.SysuiTestCase import com.android.systemui.coroutines.collectValues -import com.android.systemui.flags.DisableSceneContainer +import com.android.systemui.flags.BrokenWithSceneContainer +import com.android.systemui.flags.andSceneContainer import com.android.systemui.keyguard.shared.model.KeyguardState +import com.android.systemui.keyguard.shared.model.TransitionState import com.android.systemui.keyguard.shared.model.TransitionStep import com.android.systemui.keyguard.ui.transitions.blurConfig import com.android.systemui.kosmos.testScope import com.android.systemui.testKosmos import kotlinx.coroutines.ExperimentalCoroutinesApi 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 @ExperimentalCoroutinesApi @SmallTest -@RunWith(AndroidJUnit4::class) -class OccludedToPrimaryBouncerTransitionViewModelTest : SysuiTestCase() { +@RunWith(ParameterizedAndroidJunit4::class) +class OccludedToPrimaryBouncerTransitionViewModelTest(flags: FlagsParameterization) : + SysuiTestCase() { private val kosmos = testKosmos() private val testScope = kosmos.testScope - private val underTest by lazy { kosmos.occludedToPrimaryBouncerTransitionViewModel } + private lateinit var underTest: OccludedToPrimaryBouncerTransitionViewModel + + companion object { + @JvmStatic + @Parameters(name = "{0}") + fun getParams(): List<FlagsParameterization> { + return FlagsParameterization.allCombinationsOf().andSceneContainer() + } + } + + init { + mSetFlagsRule.setFlagsParameterization(flags) + } + + @Before + fun setup() { + underTest = kosmos.occludedToPrimaryBouncerTransitionViewModel + } @Test - @DisableSceneContainer - fun blurBecomesMaxValueImmediately() = + @BrokenWithSceneContainer(388068805) + fun notificationsAreBlurredImmediatelyWhenBouncerIsOpenedAndShadeIsExpanded() = + testScope.runTest { + val values by collectValues(underTest.notificationBlurRadius) + kosmos.keyguardWindowBlurTestUtil.shadeExpanded(true) + + kosmos.keyguardWindowBlurTestUtil.assertTransitionToBlurRadius( + transitionProgress = listOf(0.0f, 0.2f, 0.3f, 0.65f, 0.7f, 1.0f), + startValue = kosmos.blurConfig.maxBlurRadiusPx, + endValue = kosmos.blurConfig.maxBlurRadiusPx, + actualValuesProvider = { values }, + transitionFactory = ::step, + checkInterpolatedValues = false, + ) + } + + @Test + @EnableFlags(FLAG_NOTIFICATION_SHADE_BLUR) + @BrokenWithSceneContainer(388068805) + fun blurBecomesMaxValueImmediatelyWhenShadeIsAlreadyExpanded() = testScope.runTest { val values by collectValues(underTest.windowBlurRadius) + kosmos.keyguardWindowBlurTestUtil.shadeExpanded(true) kosmos.keyguardWindowBlurTestUtil.assertTransitionToBlurRadius( transitionProgress = listOf(0.0f, 0.2f, 0.3f, 0.65f, 0.7f, 1.0f), startValue = kosmos.blurConfig.maxBlurRadiusPx, endValue = kosmos.blurConfig.maxBlurRadiusPx, actualValuesProvider = { values }, - transitionFactory = { step, transitionState -> - TransitionStep( - from = KeyguardState.OCCLUDED, - to = KeyguardState.PRIMARY_BOUNCER, - value = step, - transitionState = transitionState, - ownerName = "OccludedToPrimaryBouncerTransitionViewModelTest", - ) - }, + transitionFactory = ::step, checkInterpolatedValues = false, ) } + + fun step(value: Float, state: TransitionState = TransitionState.RUNNING): TransitionStep { + return TransitionStep( + from = KeyguardState.OCCLUDED, + to = KeyguardState.PRIMARY_BOUNCER, + value = value, + transitionState = state, + ownerName = "OccludedToPrimaryBouncerTransitionViewModelTest", + ) + } } diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToLockscreenTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToLockscreenTransitionViewModelTest.kt index 0db0c5fe8482..8fefb8d40b71 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToLockscreenTransitionViewModelTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToLockscreenTransitionViewModelTest.kt @@ -16,12 +16,16 @@ package com.android.systemui.keyguard.ui.viewmodel -import androidx.test.ext.junit.runners.AndroidJUnit4 +import android.platform.test.annotations.EnableFlags +import android.platform.test.flag.junit.FlagsParameterization import androidx.test.filters.SmallTest +import com.android.systemui.Flags.FLAG_NOTIFICATION_SHADE_BLUR import com.android.systemui.SysuiTestCase import com.android.systemui.biometrics.data.repository.fingerprintPropertyRepository import com.android.systemui.coroutines.collectLastValue import com.android.systemui.coroutines.collectValues +import com.android.systemui.flags.BrokenWithSceneContainer +import com.android.systemui.flags.andSceneContainer import com.android.systemui.keyguard.data.repository.biometricSettingsRepository import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository import com.android.systemui.keyguard.shared.model.KeyguardState @@ -35,13 +39,17 @@ import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.runCurrent import kotlinx.coroutines.test.runTest +import org.junit.Before import org.junit.Test import org.junit.runner.RunWith +import platform.test.runner.parameterized.ParameterizedAndroidJunit4 +import platform.test.runner.parameterized.Parameters @ExperimentalCoroutinesApi @SmallTest -@RunWith(AndroidJUnit4::class) -class PrimaryBouncerToLockscreenTransitionViewModelTest : SysuiTestCase() { +@RunWith(ParameterizedAndroidJunit4::class) +class PrimaryBouncerToLockscreenTransitionViewModelTest(flags: FlagsParameterization) : + SysuiTestCase() { val kosmos = testKosmos() val testScope = kosmos.testScope @@ -49,9 +57,27 @@ class PrimaryBouncerToLockscreenTransitionViewModelTest : SysuiTestCase() { val fingerprintPropertyRepository = kosmos.fingerprintPropertyRepository val biometricSettingsRepository = kosmos.biometricSettingsRepository - val underTest = kosmos.primaryBouncerToLockscreenTransitionViewModel + private lateinit var underTest: PrimaryBouncerToLockscreenTransitionViewModel + + companion object { + @JvmStatic + @Parameters(name = "{0}") + fun getParams(): List<FlagsParameterization> { + return FlagsParameterization.allCombinationsOf().andSceneContainer() + } + } + + init { + mSetFlagsRule.setFlagsParameterization(flags) + } + + @Before + fun setup() { + underTest = kosmos.primaryBouncerToLockscreenTransitionViewModel + } @Test + @BrokenWithSceneContainer(392346450) fun lockscreenAlphaStartsFromViewStateAccessorAlpha() = testScope.runTest { val viewState = ViewStateAccessor(alpha = { 0.5f }) @@ -70,6 +96,7 @@ class PrimaryBouncerToLockscreenTransitionViewModelTest : SysuiTestCase() { } @Test + @BrokenWithSceneContainer(392346450) fun deviceEntryParentViewAlpha() = testScope.runTest { val deviceEntryParentViewAlpha by collectLastValue(underTest.deviceEntryParentViewAlpha) @@ -89,6 +116,7 @@ class PrimaryBouncerToLockscreenTransitionViewModelTest : SysuiTestCase() { } @Test + @BrokenWithSceneContainer(392346450) fun deviceEntryBackgroundViewAlpha_udfpsEnrolled_show() = testScope.runTest { fingerprintPropertyRepository.supportsUdfps() @@ -113,6 +141,7 @@ class PrimaryBouncerToLockscreenTransitionViewModelTest : SysuiTestCase() { } @Test + @BrokenWithSceneContainer(388068805) fun blurRadiusGoesFromMaxToMinWhenShadeIsNotExpanded() = testScope.runTest { val values by collectValues(underTest.windowBlurRadius) @@ -128,6 +157,8 @@ class PrimaryBouncerToLockscreenTransitionViewModelTest : SysuiTestCase() { } @Test + @EnableFlags(FLAG_NOTIFICATION_SHADE_BLUR) + @BrokenWithSceneContainer(388068805) fun blurRadiusRemainsAtMaxWhenShadeIsExpanded() = testScope.runTest { val values by collectValues(underTest.windowBlurRadius) diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToOccludedTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToOccludedTransitionViewModelTest.kt index b0b4af5fea5b..fd7fb9f863c8 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToOccludedTransitionViewModelTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToOccludedTransitionViewModelTest.kt @@ -16,11 +16,13 @@ package com.android.systemui.keyguard.ui.viewmodel +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.coroutines.collectValues -import com.android.systemui.flags.DisableSceneContainer +import com.android.systemui.flags.BrokenWithSceneContainer import com.android.systemui.keyguard.shared.model.KeyguardState import com.android.systemui.keyguard.shared.model.TransitionStep import com.android.systemui.keyguard.ui.transitions.blurConfig @@ -40,10 +42,37 @@ class PrimaryBouncerToOccludedTransitionViewModelTest : SysuiTestCase() { private val underTest by lazy { kosmos.primaryBouncerToOccludedTransitionViewModel } @Test - @DisableSceneContainer - fun blurBecomesMaxValueImmediately() = + @BrokenWithSceneContainer(388068805) + fun blurBecomesMinValueImmediatelyWhenShadeIsNotExpanded() = testScope.runTest { val values by collectValues(underTest.windowBlurRadius) + kosmos.keyguardWindowBlurTestUtil.shadeExpanded(false) + + kosmos.keyguardWindowBlurTestUtil.assertTransitionToBlurRadius( + transitionProgress = listOf(0.0f, 0.2f, 0.3f, 0.65f, 0.7f, 1.0f), + startValue = kosmos.blurConfig.minBlurRadiusPx, + endValue = kosmos.blurConfig.minBlurRadiusPx, + actualValuesProvider = { values }, + transitionFactory = { step, transitionState -> + TransitionStep( + from = KeyguardState.PRIMARY_BOUNCER, + to = KeyguardState.OCCLUDED, + value = step, + transitionState = transitionState, + ownerName = "PrimaryBouncerToOccludedTransitionViewModelTest", + ) + }, + checkInterpolatedValues = false, + ) + } + + @Test + @BrokenWithSceneContainer(388068805) + @EnableFlags(Flags.FLAG_NOTIFICATION_SHADE_BLUR) + fun blurBecomesMaxValueImmediatelyWhenShadeIsExpanded() = + testScope.runTest { + val values by collectValues(underTest.windowBlurRadius) + kosmos.keyguardWindowBlurTestUtil.shadeExpanded(false) kosmos.keyguardWindowBlurTestUtil.assertTransitionToBlurRadius( transitionProgress = listOf(0.0f, 0.2f, 0.3f, 0.65f, 0.7f, 1.0f), diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToPrimaryBouncerTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToPrimaryBouncerTransitionViewModel.kt index b531c7fa49ec..a6d15b96547d 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToPrimaryBouncerTransitionViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToPrimaryBouncerTransitionViewModel.kt @@ -100,7 +100,11 @@ constructor( override val windowBlurRadius: Flow<Float> = shadeDependentFlows.transitionFlow( flowWhenShadeIsExpanded = - transitionAnimation.immediatelyTransitionTo(blurConfig.maxBlurRadiusPx), + if (Flags.notificationShadeBlur()) { + transitionAnimation.immediatelyTransitionTo(blurConfig.maxBlurRadiusPx) + } else { + emptyFlow() + }, flowWhenShadeIsNotExpanded = transitionAnimation.sharedFlow( duration = FromAlternateBouncerTransitionInteractor.TO_PRIMARY_BOUNCER_DURATION, diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToPrimaryBouncerTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToPrimaryBouncerTransitionViewModel.kt index 89dcbf6aa52b..e25e4e5af425 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToPrimaryBouncerTransitionViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToPrimaryBouncerTransitionViewModel.kt @@ -107,7 +107,11 @@ constructor( override val windowBlurRadius: Flow<Float> = shadeDependentFlows.transitionFlow( flowWhenShadeIsExpanded = - transitionAnimation.immediatelyTransitionTo(blurConfig.maxBlurRadiusPx), + if (Flags.notificationShadeBlur()) { + transitionAnimation.immediatelyTransitionTo(blurConfig.maxBlurRadiusPx) + } else { + emptyFlow() + }, flowWhenShadeIsNotExpanded = transitionAnimation.sharedFlow( duration = FromLockscreenTransitionInteractor.TO_PRIMARY_BOUNCER_DURATION, diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToPrimaryBouncerTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToPrimaryBouncerTransitionViewModel.kt index 4d3e27265cea..3c126aa23fef 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToPrimaryBouncerTransitionViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToPrimaryBouncerTransitionViewModel.kt @@ -16,6 +16,7 @@ package com.android.systemui.keyguard.ui.viewmodel +import com.android.systemui.Flags import com.android.systemui.dagger.SysUISingleton import com.android.systemui.keyguard.domain.interactor.FromOccludedTransitionInteractor import com.android.systemui.keyguard.shared.model.Edge @@ -26,12 +27,16 @@ import com.android.systemui.keyguard.ui.transitions.BlurConfig import com.android.systemui.keyguard.ui.transitions.PrimaryBouncerTransition import javax.inject.Inject import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.emptyFlow @SysUISingleton class OccludedToPrimaryBouncerTransitionViewModel @Inject -constructor(blurConfig: BlurConfig, animationFlow: KeyguardTransitionAnimationFlow) : - PrimaryBouncerTransition { +constructor( + shadeDependentFlows: ShadeDependentFlows, + blurConfig: BlurConfig, + animationFlow: KeyguardTransitionAnimationFlow, +) : PrimaryBouncerTransition { private val transitionAnimation = animationFlow .setup( @@ -41,8 +46,21 @@ constructor(blurConfig: BlurConfig, animationFlow: KeyguardTransitionAnimationFl .setupWithoutSceneContainer(edge = Edge.create(OCCLUDED, PRIMARY_BOUNCER)) override val windowBlurRadius: Flow<Float> = - transitionAnimation.immediatelyTransitionTo(blurConfig.maxBlurRadiusPx) + shadeDependentFlows.transitionFlow( + flowWhenShadeIsExpanded = + if (Flags.notificationShadeBlur()) { + transitionAnimation.immediatelyTransitionTo(blurConfig.maxBlurRadiusPx) + } else { + emptyFlow() + }, + flowWhenShadeIsNotExpanded = + transitionAnimation.immediatelyTransitionTo(blurConfig.maxBlurRadiusPx), + ) override val notificationBlurRadius: Flow<Float> = - transitionAnimation.immediatelyTransitionTo(0.0f) + shadeDependentFlows.transitionFlow( + flowWhenShadeIsExpanded = + transitionAnimation.immediatelyTransitionTo(blurConfig.maxBlurRadiusPx), + flowWhenShadeIsNotExpanded = emptyFlow(), + ) } diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToLockscreenTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToLockscreenTransitionViewModel.kt index c53a408a88e1..9b01803f1fd5 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToLockscreenTransitionViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToLockscreenTransitionViewModel.kt @@ -18,6 +18,7 @@ package com.android.systemui.keyguard.ui.viewmodel import android.util.MathUtils import com.android.app.animation.Interpolators.EMPHASIZED_ACCELERATE +import com.android.systemui.Flags import com.android.systemui.dagger.SysUISingleton import com.android.systemui.keyguard.domain.interactor.FromPrimaryBouncerTransitionInteractor import com.android.systemui.keyguard.shared.model.Edge @@ -32,6 +33,7 @@ import javax.inject.Inject import kotlin.time.Duration.Companion.milliseconds import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.emptyFlow /** * Breaks down PRIMARY BOUNCER->LOCKSCREEN transition into discrete steps for corresponding views to @@ -78,7 +80,11 @@ constructor( override val windowBlurRadius: Flow<Float> = shadeDependentFlows.transitionFlow( flowWhenShadeIsExpanded = - transitionAnimation.immediatelyTransitionTo(blurConfig.maxBlurRadiusPx), + if (Flags.notificationShadeBlur()) { + transitionAnimation.immediatelyTransitionTo(blurConfig.maxBlurRadiusPx) + } else { + emptyFlow() + }, flowWhenShadeIsNotExpanded = transitionAnimation.sharedFlow( duration = FromPrimaryBouncerTransitionInteractor.TO_LOCKSCREEN_DURATION, diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToOccludedTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToOccludedTransitionViewModel.kt index fe1708efea2f..0f0e7b6faa66 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToOccludedTransitionViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToOccludedTransitionViewModel.kt @@ -16,6 +16,7 @@ package com.android.systemui.keyguard.ui.viewmodel +import com.android.systemui.Flags import com.android.systemui.dagger.SysUISingleton import com.android.systemui.keyguard.domain.interactor.FromPrimaryBouncerTransitionInteractor import com.android.systemui.keyguard.shared.model.Edge @@ -26,12 +27,16 @@ import com.android.systemui.keyguard.ui.transitions.BlurConfig import com.android.systemui.keyguard.ui.transitions.PrimaryBouncerTransition import javax.inject.Inject import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.emptyFlow @SysUISingleton class PrimaryBouncerToOccludedTransitionViewModel @Inject -constructor(private val blurConfig: BlurConfig, animationFlow: KeyguardTransitionAnimationFlow) : - PrimaryBouncerTransition { +constructor( + shadeDependentFlows: ShadeDependentFlows, + blurConfig: BlurConfig, + animationFlow: KeyguardTransitionAnimationFlow, +) : PrimaryBouncerTransition { private val transitionAnimation = animationFlow .setup( @@ -41,7 +46,16 @@ constructor(private val blurConfig: BlurConfig, animationFlow: KeyguardTransitio .setupWithoutSceneContainer(edge = Edge.create(PRIMARY_BOUNCER, OCCLUDED)) override val windowBlurRadius: Flow<Float> = - transitionAnimation.immediatelyTransitionTo(blurConfig.minBlurRadiusPx) + shadeDependentFlows.transitionFlow( + flowWhenShadeIsExpanded = + if (Flags.notificationShadeBlur()) { + transitionAnimation.immediatelyTransitionTo(blurConfig.maxBlurRadiusPx) + } else { + emptyFlow() + }, + flowWhenShadeIsNotExpanded = + transitionAnimation.immediatelyTransitionTo(blurConfig.minBlurRadiusPx), + ) override val notificationBlurRadius: Flow<Float> = transitionAnimation.immediatelyTransitionTo(0.0f) diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToPrimaryBouncerTransitionViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToPrimaryBouncerTransitionViewModelKosmos.kt index 004f97d95673..c97c4e3ba302 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToPrimaryBouncerTransitionViewModelKosmos.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToPrimaryBouncerTransitionViewModelKosmos.kt @@ -25,5 +25,6 @@ val Kosmos.occludedToPrimaryBouncerTransitionViewModel by Fixture { OccludedToPrimaryBouncerTransitionViewModel( animationFlow = keyguardTransitionAnimationFlow, blurConfig = blurConfig, + shadeDependentFlows = shadeDependentFlows, ) } diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToOccludedTransitionViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToOccludedTransitionViewModelKosmos.kt index 2256c10eebc9..ed5dd454a087 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToOccludedTransitionViewModelKosmos.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToOccludedTransitionViewModelKosmos.kt @@ -25,5 +25,6 @@ val Kosmos.primaryBouncerToOccludedTransitionViewModel by Fixture { PrimaryBouncerToOccludedTransitionViewModel( animationFlow = keyguardTransitionAnimationFlow, blurConfig = blurConfig, + shadeDependentFlows = shadeDependentFlows, ) } |