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 Original line Diff line number Diff line
@@ -16,8 +16,10 @@


package com.android.systemui.keyguard.ui.viewmodel
package com.android.systemui.keyguard.ui.viewmodel


import android.platform.test.annotations.EnableFlags
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import androidx.test.filters.SmallTest
import com.android.systemui.Flags
import com.android.systemui.SysuiTestCase
import com.android.systemui.SysuiTestCase
import com.android.systemui.coroutines.collectValues
import com.android.systemui.coroutines.collectValues
import com.android.systemui.flags.DisableSceneContainer
import com.android.systemui.flags.DisableSceneContainer
@@ -54,6 +56,7 @@ class PrimaryBouncerToDreamingTransitionViewModelTest : SysuiTestCase() {
    fun blurRadiusGoesToMinImmediately() =
    fun blurRadiusGoesToMinImmediately() =
        testScope.runTest {
        testScope.runTest {
            val values by collectValues(underTest.windowBlurRadius)
            val values by collectValues(underTest.windowBlurRadius)
            kosmos.keyguardWindowBlurTestUtil.shadeExpanded(false)


            kosmos.keyguardWindowBlurTestUtil.assertTransitionToBlurRadius(
            kosmos.keyguardWindowBlurTestUtil.assertTransitionToBlurRadius(
                transitionProgress = listOf(0.0f, 0.2f, 0.3f, 0.65f, 0.7f, 1.0f),
                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 {
    private fun step(value: Float, state: TransitionState = RUNNING): TransitionStep {
        return TransitionStep(
        return TransitionStep(
            from = KeyguardState.PRIMARY_BOUNCER,
            from = KeyguardState.PRIMARY_BOUNCER,
+21 −11
Original line number Original line Diff line number Diff line
@@ -16,6 +16,7 @@


package com.android.systemui.keyguard.ui.viewmodel
package com.android.systemui.keyguard.ui.viewmodel


import com.android.systemui.Flags
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.keyguard.domain.interactor.FromPrimaryBouncerTransitionInteractor
import com.android.systemui.keyguard.domain.interactor.FromPrimaryBouncerTransitionInteractor
import com.android.systemui.keyguard.shared.model.Edge
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 com.android.systemui.scene.shared.model.Overlays
import javax.inject.Inject
import javax.inject.Inject
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.emptyFlow


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


    override val windowBlurRadius: Flow<Float> =
    override val windowBlurRadius: Flow<Float> =
        transitionAnimation.sharedFlow(
        transitionAnimation.sharedFlowWithShade(
            onStart = { blurConfig.maxBlurRadiusPx },
            onStep = { progress, isShadeExpanded ->
            onStep = {
                if (isShadeExpanded && Flags.notificationShadeBlur()) {
                    blurConfig.maxBlurRadiusPx
                } else {
                    transitionProgressToBlurRadius(
                    transitionProgressToBlurRadius(
                        blurConfig.maxBlurRadiusPx,
                        blurConfig.maxBlurRadiusPx,
                        endBlurRadius = blurConfig.minBlurRadiusPx,
                        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 Original line Diff line number Diff line
@@ -157,7 +157,7 @@ import javax.inject.Provider;
@SysUISingleton
@SysUISingleton
public class NotificationStackScrollLayoutController implements Dumpable {
public class NotificationStackScrollLayoutController implements Dumpable {
    private static final String TAG = "StackScrollerController";
    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";
    private static final String HIGH_PRIORITY = "high_priority";
    /** Delay in milli-seconds before shade closes for clear all. */
    /** Delay in milli-seconds before shade closes for clear all. */
    private static final int DELAY_BEFORE_SHADE_CLOSE = 200;
    private static final int DELAY_BEFORE_SHADE_CLOSE = 200;