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

Commit 3c1340a6 authored by Tracy Zhou's avatar Tracy Zhou Committed by Android (Google) Code Review
Browse files

Merge "Pipe isHomeFocused signal to spatial model based zoom in SysUI" into main

parents b83b5ac5 c0db8786
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>() }
}