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

Commit c0db8786 authored by Tracy Zhou's avatar Tracy Zhou
Browse files

Pipe isHomeFocused signal to spatial model based zoom in SysUI

Bug: 391463550
Test: manual
Flag: com.android.systemui.spatial_model_pushback_in_shader
Change-Id: I8bf8edbb0e45a40694e5f5124ac210193c644f64
parent 7e12609a
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import androidx.test.filters.SmallTest
import com.android.systemui.Flags
import com.android.systemui.SysuiTestCase
import com.android.systemui.animation.ShadeInterpolation
import com.android.systemui.display.data.repository.FocusedDisplayRepository
import com.android.systemui.dump.DumpManager
import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
import com.android.systemui.kosmos.testScope
@@ -90,6 +91,7 @@ class NotificationShadeDepthControllerTest : SysuiTestCase() {
    @Mock private lateinit var shadeModeInteractor: ShadeModeInteractor
    @Mock private lateinit var dumpManager: DumpManager
    @Mock private lateinit var appZoomOutOptional: Optional<AppZoomOut>
    @Mock private lateinit var focusedDisplayRepository: FocusedDisplayRepository
    @Mock private lateinit var root: View
    @Mock private lateinit var viewRootImpl: ViewRootImpl
    @Mock private lateinit var windowToken: IBinder
@@ -138,9 +140,10 @@ class NotificationShadeDepthControllerTest : SysuiTestCase() {
                shadeModeInteractor,
                windowRootViewBlurInteractor,
                appZoomOutOptional,
                { shadeDisplayRepository },
                focusedDisplayRepository,
                applicationScope,
                dumpManager,
                { shadeDisplayRepository },
            )
        notificationShadeDepthController.shadeAnimation = shadeAnimation
        notificationShadeDepthController.brightnessMirrorSpring = brightnessSpring
+18 −3
Original line number Diff line number Diff line
@@ -19,12 +19,14 @@ package com.android.systemui.statusbar
import android.animation.Animator
import android.animation.AnimatorListenerAdapter
import android.animation.ValueAnimator
import android.app.WindowConfiguration
import android.os.SystemClock
import android.util.IndentingPrintWriter
import android.util.Log
import android.util.MathUtils
import android.view.Choreographer
import android.view.Display
import android.view.Display.DEFAULT_DISPLAY
import android.view.View
import androidx.annotation.VisibleForTesting
import androidx.dynamicanimation.animation.FloatPropertyCompat
@@ -39,6 +41,7 @@ import com.android.systemui.Flags.spatialModelPushbackInShader
import com.android.systemui.animation.ShadeInterpolation
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.display.data.repository.FocusedDisplayRepository
import com.android.systemui.dump.DumpManager
import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
import com.android.systemui.plugins.statusbar.StatusBarStateController
@@ -86,9 +89,10 @@ constructor(
    private val shadeModeInteractor: ShadeModeInteractor,
    private val windowRootViewBlurInteractor: WindowRootViewBlurInteractor,
    private val appZoomOutOptional: Optional<AppZoomOut>,
    private val shadeDisplaysRepository: Lazy<ShadeDisplaysRepository>,
    private val focusedDisplayRepository: FocusedDisplayRepository,
    @Application private val applicationScope: CoroutineScope,
    dumpManager: DumpManager,
    private val shadeDisplaysRepository: Lazy<ShadeDisplaysRepository>,
) : ShadeExpansionListener, Dumpable {
    companion object {
        private const val WAKE_UP_ANIMATION_ENABLED = true
@@ -127,6 +131,8 @@ constructor(
    // Only for dumpsys
    private var lastAppliedBlur = 0

    private var isHomeFocused = true

    val maxBlurRadiusPx = blurUtils.maxBlurRadius

    // Shade expansion offset that happens when pulling down on a HUN.
@@ -334,8 +340,11 @@ constructor(
            else scrimsVisible && !areBlursDisabledForAppLaunch

    private fun zoomOutAsScale(zoomOutProgress: Float): Float =
        if (spatialModelPushbackInShader()) 1.0f - zoomOutProgress * PUSHBACK_SCALE_FOR_APP
        else 1.0f
        if (!spatialModelPushbackInShader()) 1.0f
        else 1.0f - zoomOutProgress * getPushbackScale(isHomeFocused)

    private fun getPushbackScale(isHomeFocused: Boolean): Float =
        if (isHomeFocused) PUSHBACK_SCALE_FOR_LAUNCHER else PUSHBACK_SCALE_FOR_APP

    /** Callback that updates the window blur value and is called only once per frame. */
    @VisibleForTesting
@@ -477,6 +486,12 @@ constructor(
            brightnessMirrorSpring.setStiffness(SpringForce.STIFFNESS_LOW)
            brightnessMirrorSpring.setDampingRatio(SpringForce.DAMPING_RATIO_NO_BOUNCY)
        }
        applicationScope.launch {
            focusedDisplayRepository.globallyFocusedTask.collect { focusedTask ->
                if (focusedTask == null || focusedTask.displayId != DEFAULT_DISPLAY) return@collect
                isHomeFocused = (focusedTask.activityType == WindowConfiguration.ACTIVITY_TYPE_HOME)
            }
        }
        applicationScope.launch {
            wallpaperInteractor.wallpaperSupportsAmbientMode.collect { supported ->
                wallpaperSupportsAmbientMode = supported
+3 −1
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.Kosmos.Fixture
import com.android.systemui.kosmos.applicationCoroutineScope
import com.android.systemui.plugins.statusbar.statusBarStateController
import com.android.systemui.shade.data.repository.fakeFocusedDisplayRepository
import com.android.systemui.shade.data.repository.shadeDisplaysRepository
import com.android.systemui.shade.domain.interactor.shadeModeInteractor
import com.android.systemui.statusbar.phone.biometricUnlockController
@@ -50,9 +51,10 @@ var Kosmos.notificationShadeDepthController by Fixture {
            shadeModeInteractor = shadeModeInteractor,
            windowRootViewBlurInteractor = windowRootViewBlurInteractor,
            appZoomOutOptional = Optional.empty(),
            shadeDisplaysRepository = { shadeDisplaysRepository },
            focusedDisplayRepository = fakeFocusedDisplayRepository,
            applicationScope = applicationCoroutineScope,
            dumpManager = dumpManager,
            shadeDisplaysRepository = { shadeDisplaysRepository },
        )
        .apply { root = mock<View>() }
}