Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fa83c9b2 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Handle shade being expanded during the primary bouncer -> dreaming transition" into main

parents a673709e 90fc95a9
Loading
Loading
Loading
Loading
+35 −0
Original line number Diff line number Diff line
@@ -16,8 +16,10 @@

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
@@ -54,6 +56,7 @@ class PrimaryBouncerToDreamingTransitionViewModelTest : SysuiTestCase() {
    fun blurRadiusGoesToMinImmediately() =
        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),
@@ -64,6 +67,38 @@ class PrimaryBouncerToDreamingTransitionViewModelTest : SysuiTestCase() {
            )
        }

    @Test
    @EnableFlags(Flags.FLAG_NOTIFICATION_SHADE_BLUR)
    fun blurRadiusRemainsAtMaxIfShadeIsExpandedAndShadeBlurIsEnabled() =
        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,
                checkInterpolatedValues = false,
            )
        }

    @Test
    fun notificationBlurDropsToMinWhenGoingBackFromPrimaryBouncerToDreaming() =
        testScope.runTest {
            val values by collectValues(underTest.notificationBlurRadius)

            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,
                checkInterpolatedValues = false,
            )
        }

    private fun step(value: Float, state: TransitionState = RUNNING): TransitionStep {
        return TransitionStep(
            from = KeyguardState.PRIMARY_BOUNCER,
+21 −11
Original line number Diff line number Diff line
@@ -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
@@ -27,7 +28,6 @@ import com.android.systemui.keyguard.ui.transitions.PrimaryBouncerTransition
import com.android.systemui.scene.shared.model.Overlays
import javax.inject.Inject
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.emptyFlow

@SysUISingleton
class PrimaryBouncerToDreamingTransitionViewModel
@@ -43,17 +43,27 @@ constructor(blurConfig: BlurConfig, animationFlow: KeyguardTransitionAnimationFl
            .setupWithoutSceneContainer(edge = Edge.create(from = PRIMARY_BOUNCER, to = DREAMING))

    override val windowBlurRadius: Flow<Float> =
        transitionAnimation.sharedFlow(
            onStart = { blurConfig.maxBlurRadiusPx },
            onStep = {
        transitionAnimation.sharedFlowWithShade(
            onStep = { progress, isShadeExpanded ->
                if (isShadeExpanded && Flags.notificationShadeBlur()) {
                    blurConfig.maxBlurRadiusPx
                } else {
                    transitionProgressToBlurRadius(
                        blurConfig.maxBlurRadiusPx,
                        endBlurRadius = blurConfig.minBlurRadiusPx,
                    transitionProgress = it,
                        transitionProgress = progress,
                    )
                }
            },
            onFinish = { isShadeExpanded ->
                if (isShadeExpanded && Flags.notificationShadeBlur()) {
                    blurConfig.maxBlurRadiusPx
                } else {
                    blurConfig.minBlurRadiusPx
                }
            },
            onFinish = { blurConfig.minBlurRadiusPx },
        )

    override val notificationBlurRadius: Flow<Float> = emptyFlow()
    override val notificationBlurRadius: Flow<Float> =
        transitionAnimation.immediatelyTransitionTo(blurConfig.minBlurRadiusPx)
}
+1 −1
Original line number Diff line number Diff line
@@ -157,7 +157,7 @@ import javax.inject.Provider;
@SysUISingleton
public class NotificationStackScrollLayoutController implements Dumpable {
    private static final String TAG = "StackScrollerController";
    private static final boolean DEBUG = Compile.IS_DEBUG && Log.isLoggable(TAG, Log.DEBUG);
    private static final boolean DEBUG = Compile.IS_DEBUG || Log.isLoggable(TAG, Log.DEBUG);
    private static final String HIGH_PRIORITY = "high_priority";
    /** Delay in milli-seconds before shade closes for clear all. */
    private static final int DELAY_BEFORE_SHADE_CLOSE = 200;