Loading packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/NotificationShadeDepthControllerTest.kt +9 −15 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import com.android.systemui.kosmos.testScope import com.android.systemui.plugins.statusbar.StatusBarStateController import com.android.systemui.res.R import com.android.systemui.shade.ShadeExpansionChangeEvent import com.android.systemui.shared.Flags as SharedFlags import com.android.systemui.statusbar.phone.BiometricUnlockController import com.android.systemui.statusbar.phone.DozeParameters import com.android.systemui.statusbar.phone.ScrimController Loading @@ -43,10 +44,11 @@ import com.android.systemui.statusbar.policy.ResourcesSplitShadeStateController import com.android.systemui.testKosmos import com.android.systemui.util.WallpaperController import com.android.systemui.util.mockito.eq import com.android.systemui.wallpapers.domain.interactor.WallpaperInteractor import com.android.systemui.window.domain.interactor.WindowRootViewBlurInteractor import com.android.wm.shell.appzoomout.AppZoomOut import com.google.common.truth.Truth.assertThat import java.util.Optional import java.util.function.Consumer import org.junit.Before import org.junit.Rule import org.junit.Test Loading @@ -67,8 +69,6 @@ import org.mockito.Mockito.reset import org.mockito.Mockito.verify import org.mockito.Mockito.`when` import org.mockito.junit.MockitoJUnit import java.util.Optional import java.util.function.Consumer @RunWith(AndroidJUnit4::class) @RunWithLooper Loading @@ -76,7 +76,6 @@ import java.util.function.Consumer class NotificationShadeDepthControllerTest : SysuiTestCase() { private val kosmos = testKosmos() private val applicationScope = kosmos.testScope.backgroundScope @Mock private lateinit var windowRootViewBlurInteractor: WindowRootViewBlurInteractor @Mock private lateinit var statusBarStateController: StatusBarStateController @Mock private lateinit var blurUtils: BlurUtils Loading @@ -85,7 +84,6 @@ class NotificationShadeDepthControllerTest : SysuiTestCase() { @Mock private lateinit var keyguardInteractor: KeyguardInteractor @Mock private lateinit var choreographer: Choreographer @Mock private lateinit var wallpaperController: WallpaperController @Mock private lateinit var wallpaperInteractor: WallpaperInteractor @Mock private lateinit var notificationShadeWindowController: NotificationShadeWindowController @Mock private lateinit var dumpManager: DumpManager @Mock private lateinit var appZoomOutOptional: Optional<AppZoomOut> Loading Loading @@ -130,14 +128,12 @@ class NotificationShadeDepthControllerTest : SysuiTestCase() { keyguardInteractor, choreographer, wallpaperController, wallpaperInteractor, notificationShadeWindowController, dozeParameters, context, ResourcesSplitShadeStateController(), windowRootViewBlurInteractor, appZoomOutOptional, applicationScope, dumpManager, configurationController, ) Loading Loading @@ -314,21 +310,19 @@ class NotificationShadeDepthControllerTest : SysuiTestCase() { } @Test fun onDozeAmountChanged_doesNotApplyBlurWithAmbientAod() { notificationShadeDepthController.wallpaperSupportsAmbientMode = false @DisableFlags(SharedFlags.FLAG_AMBIENT_AOD) fun onDozeAmountChanged_appliesBlur() { statusBarStateListener.onDozeAmountChanged(1f, 1f) notificationShadeDepthController.updateBlurCallback.doFrame(0) verify(blurUtils).applyBlur(any(), eq(0), eq(false)) verify(blurUtils).applyBlur(any(), eq(maxBlur), eq(false)) } @Test fun onDozeAmountChanged_appliesBlurWithAmbientAod() { notificationShadeDepthController.wallpaperSupportsAmbientMode = true @EnableFlags(SharedFlags.FLAG_AMBIENT_AOD) fun onDozeAmountChanged_doesNotApplyBlurWithAmbientAod() { statusBarStateListener.onDozeAmountChanged(1f, 1f) notificationShadeDepthController.updateBlurCallback.doFrame(0) verify(blurUtils).applyBlur(any(), eq(maxBlur), eq(false)) verify(blurUtils).applyBlur(any(), eq(0), eq(false)) } @Test Loading packages/SystemUI/src/com/android/systemui/statusbar/NotificationShadeDepthController.kt +13 −42 Original line number Diff line number Diff line Loading @@ -38,13 +38,13 @@ import com.android.systemui.Flags import com.android.systemui.Flags.spatialModelAppPushback import com.android.systemui.animation.ShadeInterpolation import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.dump.DumpManager import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor import com.android.systemui.plugins.statusbar.StatusBarStateController import com.android.systemui.shade.ShadeDisplayAware import com.android.systemui.shade.ShadeExpansionChangeEvent import com.android.systemui.shade.ShadeExpansionListener import com.android.systemui.shared.Flags.ambientAod import com.android.systemui.statusbar.phone.BiometricUnlockController import com.android.systemui.statusbar.phone.BiometricUnlockController.MODE_WAKE_AND_UNLOCK import com.android.systemui.statusbar.phone.DozeParameters Loading @@ -53,11 +53,8 @@ import com.android.systemui.statusbar.policy.ConfigurationController import com.android.systemui.statusbar.policy.KeyguardStateController import com.android.systemui.statusbar.policy.SplitShadeStateController import com.android.systemui.util.WallpaperController import com.android.systemui.wallpapers.domain.interactor.WallpaperInteractor import com.android.systemui.window.domain.interactor.WindowRootViewBlurInteractor import com.android.wm.shell.appzoomout.AppZoomOut import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch import java.io.PrintWriter import java.util.Optional import javax.inject.Inject Loading @@ -79,14 +76,12 @@ constructor( private val keyguardInteractor: KeyguardInteractor, private val choreographer: Choreographer, private val wallpaperController: WallpaperController, private val wallpaperInteractor: WallpaperInteractor, private val notificationShadeWindowController: NotificationShadeWindowController, private val dozeParameters: DozeParameters, @ShadeDisplayAware private val context: Context, private val splitShadeStateController: SplitShadeStateController, private val windowRootViewBlurInteractor: WindowRootViewBlurInteractor, private val appZoomOutOptional: Optional<AppZoomOut>, @Application private val applicationScope: CoroutineScope, dumpManager: DumpManager, configurationController: ConfigurationController, ) : ShadeExpansionListener, Dumpable { Loading Loading @@ -115,8 +110,6 @@ constructor( private var prevTimestamp: Long = -1 private var prevShadeDirection = 0 private var prevShadeVelocity = 0f private var prevDozeAmount: Float = 0f @VisibleForTesting var wallpaperSupportsAmbientMode: Boolean = false // tracks whether app launch transition is in progress. This involves two independent factors // that control blur, shade expansion and app launch animation from outside sysui. // They can complete out of order, this flag will be reset by the animation that finishes later. Loading Loading @@ -226,15 +219,7 @@ constructor( } /** Blur radius of the wake-up animation on this frame. */ private var wakeBlurRadius = 0f set(value) { if (field == value) return field = value scheduleUpdate() } /** Blur radius of the unlock animation on this frame. */ private var unlockBlurRadius = 0f private var wakeAndUnlockBlurRadius = 0f set(value) { if (field == value) return field = value Loading @@ -261,16 +246,14 @@ constructor( ShadeInterpolation.getNotificationScrimAlpha(qsPanelExpansion) * shadeExpansion combinedBlur = max(combinedBlur, blurUtils.blurRadiusOfRatio(qsExpandedRatio)) combinedBlur = max(combinedBlur, blurUtils.blurRadiusOfRatio(transitionToFullShadeProgress)) var shadeRadius = max(combinedBlur, max(wakeBlurRadius, unlockBlurRadius)) var shadeRadius = max(combinedBlur, wakeAndUnlockBlurRadius) if (areBlursDisabledForAppLaunch || blursDisabledForUnlock) { shadeRadius = 0f } var blur = shadeRadius.toInt() // If the blur comes from waking up, we don't want to zoom out the background val zoomOut = if (shadeRadius != wakeBlurRadius) blurRadiusToZoomOut(blurRadius = shadeRadius) else 0f val zoomOut = blurRadiusToZoomOut(blurRadius = shadeRadius) // Make blur be 0 if it is necessary to stop blur effect. if (scrimsVisible) { if (!Flags.notificationShadeBlur()) { Loading Loading @@ -355,14 +338,14 @@ constructor( startDelay = keyguardStateController.keyguardFadingAwayDelay interpolator = Interpolators.FAST_OUT_SLOW_IN addUpdateListener { animation: ValueAnimator -> unlockBlurRadius = wakeAndUnlockBlurRadius = blurUtils.blurRadiusOfRatio(animation.animatedValue as Float) } addListener( object : AnimatorListenerAdapter() { override fun onAnimationEnd(animation: Animator) { keyguardAnimator = null unlockBlurRadius = 0f wakeAndUnlockBlurRadius = 0f } } ) Loading Loading @@ -398,17 +381,12 @@ constructor( } override fun onDozeAmountChanged(linear: Float, eased: Float) { prevDozeAmount = eased updateWakeBlurRadius(prevDozeAmount) } } private fun updateWakeBlurRadius(ratio: Float) { wakeBlurRadius = if (!wallpaperSupportsAmbientMode) { wakeAndUnlockBlurRadius = if (ambientAod()) { 0f } else { blurUtils.blurRadiusOfRatio(ratio) blurUtils.blurRadiusOfRatio(eased) } } } Loading @@ -433,12 +411,6 @@ constructor( } } ) applicationScope.launch { wallpaperInteractor.wallpaperSupportsAmbientMode.collect { supported -> wallpaperSupportsAmbientMode = supported updateWakeBlurRadius(prevDozeAmount) } } initBlurListeners() } Loading Loading @@ -613,8 +585,7 @@ constructor( it.println("shouldApplyShadeBlur: ${shouldApplyShadeBlur()}") it.println("shadeAnimation: ${shadeAnimation.radius}") it.println("brightnessMirrorRadius: ${brightnessMirrorSpring.radius}") it.println("wakeBlur: $wakeBlurRadius") it.println("unlockBlur: $wakeBlurRadius") it.println("wakeAndUnlockBlur: $wakeAndUnlockBlurRadius") it.println("blursDisabledForAppLaunch: $blursDisabledForAppLaunch") it.println("appLaunchTransitionIsInProgress: $appLaunchTransitionIsInProgress") it.println("qsPanelExpansion: $qsPanelExpansion") Loading Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/NotificationShadeDepthControllerTest.kt +9 −15 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import com.android.systemui.kosmos.testScope import com.android.systemui.plugins.statusbar.StatusBarStateController import com.android.systemui.res.R import com.android.systemui.shade.ShadeExpansionChangeEvent import com.android.systemui.shared.Flags as SharedFlags import com.android.systemui.statusbar.phone.BiometricUnlockController import com.android.systemui.statusbar.phone.DozeParameters import com.android.systemui.statusbar.phone.ScrimController Loading @@ -43,10 +44,11 @@ import com.android.systemui.statusbar.policy.ResourcesSplitShadeStateController import com.android.systemui.testKosmos import com.android.systemui.util.WallpaperController import com.android.systemui.util.mockito.eq import com.android.systemui.wallpapers.domain.interactor.WallpaperInteractor import com.android.systemui.window.domain.interactor.WindowRootViewBlurInteractor import com.android.wm.shell.appzoomout.AppZoomOut import com.google.common.truth.Truth.assertThat import java.util.Optional import java.util.function.Consumer import org.junit.Before import org.junit.Rule import org.junit.Test Loading @@ -67,8 +69,6 @@ import org.mockito.Mockito.reset import org.mockito.Mockito.verify import org.mockito.Mockito.`when` import org.mockito.junit.MockitoJUnit import java.util.Optional import java.util.function.Consumer @RunWith(AndroidJUnit4::class) @RunWithLooper Loading @@ -76,7 +76,6 @@ import java.util.function.Consumer class NotificationShadeDepthControllerTest : SysuiTestCase() { private val kosmos = testKosmos() private val applicationScope = kosmos.testScope.backgroundScope @Mock private lateinit var windowRootViewBlurInteractor: WindowRootViewBlurInteractor @Mock private lateinit var statusBarStateController: StatusBarStateController @Mock private lateinit var blurUtils: BlurUtils Loading @@ -85,7 +84,6 @@ class NotificationShadeDepthControllerTest : SysuiTestCase() { @Mock private lateinit var keyguardInteractor: KeyguardInteractor @Mock private lateinit var choreographer: Choreographer @Mock private lateinit var wallpaperController: WallpaperController @Mock private lateinit var wallpaperInteractor: WallpaperInteractor @Mock private lateinit var notificationShadeWindowController: NotificationShadeWindowController @Mock private lateinit var dumpManager: DumpManager @Mock private lateinit var appZoomOutOptional: Optional<AppZoomOut> Loading Loading @@ -130,14 +128,12 @@ class NotificationShadeDepthControllerTest : SysuiTestCase() { keyguardInteractor, choreographer, wallpaperController, wallpaperInteractor, notificationShadeWindowController, dozeParameters, context, ResourcesSplitShadeStateController(), windowRootViewBlurInteractor, appZoomOutOptional, applicationScope, dumpManager, configurationController, ) Loading Loading @@ -314,21 +310,19 @@ class NotificationShadeDepthControllerTest : SysuiTestCase() { } @Test fun onDozeAmountChanged_doesNotApplyBlurWithAmbientAod() { notificationShadeDepthController.wallpaperSupportsAmbientMode = false @DisableFlags(SharedFlags.FLAG_AMBIENT_AOD) fun onDozeAmountChanged_appliesBlur() { statusBarStateListener.onDozeAmountChanged(1f, 1f) notificationShadeDepthController.updateBlurCallback.doFrame(0) verify(blurUtils).applyBlur(any(), eq(0), eq(false)) verify(blurUtils).applyBlur(any(), eq(maxBlur), eq(false)) } @Test fun onDozeAmountChanged_appliesBlurWithAmbientAod() { notificationShadeDepthController.wallpaperSupportsAmbientMode = true @EnableFlags(SharedFlags.FLAG_AMBIENT_AOD) fun onDozeAmountChanged_doesNotApplyBlurWithAmbientAod() { statusBarStateListener.onDozeAmountChanged(1f, 1f) notificationShadeDepthController.updateBlurCallback.doFrame(0) verify(blurUtils).applyBlur(any(), eq(maxBlur), eq(false)) verify(blurUtils).applyBlur(any(), eq(0), eq(false)) } @Test Loading
packages/SystemUI/src/com/android/systemui/statusbar/NotificationShadeDepthController.kt +13 −42 Original line number Diff line number Diff line Loading @@ -38,13 +38,13 @@ import com.android.systemui.Flags import com.android.systemui.Flags.spatialModelAppPushback import com.android.systemui.animation.ShadeInterpolation import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.dump.DumpManager import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor import com.android.systemui.plugins.statusbar.StatusBarStateController import com.android.systemui.shade.ShadeDisplayAware import com.android.systemui.shade.ShadeExpansionChangeEvent import com.android.systemui.shade.ShadeExpansionListener import com.android.systemui.shared.Flags.ambientAod import com.android.systemui.statusbar.phone.BiometricUnlockController import com.android.systemui.statusbar.phone.BiometricUnlockController.MODE_WAKE_AND_UNLOCK import com.android.systemui.statusbar.phone.DozeParameters Loading @@ -53,11 +53,8 @@ import com.android.systemui.statusbar.policy.ConfigurationController import com.android.systemui.statusbar.policy.KeyguardStateController import com.android.systemui.statusbar.policy.SplitShadeStateController import com.android.systemui.util.WallpaperController import com.android.systemui.wallpapers.domain.interactor.WallpaperInteractor import com.android.systemui.window.domain.interactor.WindowRootViewBlurInteractor import com.android.wm.shell.appzoomout.AppZoomOut import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch import java.io.PrintWriter import java.util.Optional import javax.inject.Inject Loading @@ -79,14 +76,12 @@ constructor( private val keyguardInteractor: KeyguardInteractor, private val choreographer: Choreographer, private val wallpaperController: WallpaperController, private val wallpaperInteractor: WallpaperInteractor, private val notificationShadeWindowController: NotificationShadeWindowController, private val dozeParameters: DozeParameters, @ShadeDisplayAware private val context: Context, private val splitShadeStateController: SplitShadeStateController, private val windowRootViewBlurInteractor: WindowRootViewBlurInteractor, private val appZoomOutOptional: Optional<AppZoomOut>, @Application private val applicationScope: CoroutineScope, dumpManager: DumpManager, configurationController: ConfigurationController, ) : ShadeExpansionListener, Dumpable { Loading Loading @@ -115,8 +110,6 @@ constructor( private var prevTimestamp: Long = -1 private var prevShadeDirection = 0 private var prevShadeVelocity = 0f private var prevDozeAmount: Float = 0f @VisibleForTesting var wallpaperSupportsAmbientMode: Boolean = false // tracks whether app launch transition is in progress. This involves two independent factors // that control blur, shade expansion and app launch animation from outside sysui. // They can complete out of order, this flag will be reset by the animation that finishes later. Loading Loading @@ -226,15 +219,7 @@ constructor( } /** Blur radius of the wake-up animation on this frame. */ private var wakeBlurRadius = 0f set(value) { if (field == value) return field = value scheduleUpdate() } /** Blur radius of the unlock animation on this frame. */ private var unlockBlurRadius = 0f private var wakeAndUnlockBlurRadius = 0f set(value) { if (field == value) return field = value Loading @@ -261,16 +246,14 @@ constructor( ShadeInterpolation.getNotificationScrimAlpha(qsPanelExpansion) * shadeExpansion combinedBlur = max(combinedBlur, blurUtils.blurRadiusOfRatio(qsExpandedRatio)) combinedBlur = max(combinedBlur, blurUtils.blurRadiusOfRatio(transitionToFullShadeProgress)) var shadeRadius = max(combinedBlur, max(wakeBlurRadius, unlockBlurRadius)) var shadeRadius = max(combinedBlur, wakeAndUnlockBlurRadius) if (areBlursDisabledForAppLaunch || blursDisabledForUnlock) { shadeRadius = 0f } var blur = shadeRadius.toInt() // If the blur comes from waking up, we don't want to zoom out the background val zoomOut = if (shadeRadius != wakeBlurRadius) blurRadiusToZoomOut(blurRadius = shadeRadius) else 0f val zoomOut = blurRadiusToZoomOut(blurRadius = shadeRadius) // Make blur be 0 if it is necessary to stop blur effect. if (scrimsVisible) { if (!Flags.notificationShadeBlur()) { Loading Loading @@ -355,14 +338,14 @@ constructor( startDelay = keyguardStateController.keyguardFadingAwayDelay interpolator = Interpolators.FAST_OUT_SLOW_IN addUpdateListener { animation: ValueAnimator -> unlockBlurRadius = wakeAndUnlockBlurRadius = blurUtils.blurRadiusOfRatio(animation.animatedValue as Float) } addListener( object : AnimatorListenerAdapter() { override fun onAnimationEnd(animation: Animator) { keyguardAnimator = null unlockBlurRadius = 0f wakeAndUnlockBlurRadius = 0f } } ) Loading Loading @@ -398,17 +381,12 @@ constructor( } override fun onDozeAmountChanged(linear: Float, eased: Float) { prevDozeAmount = eased updateWakeBlurRadius(prevDozeAmount) } } private fun updateWakeBlurRadius(ratio: Float) { wakeBlurRadius = if (!wallpaperSupportsAmbientMode) { wakeAndUnlockBlurRadius = if (ambientAod()) { 0f } else { blurUtils.blurRadiusOfRatio(ratio) blurUtils.blurRadiusOfRatio(eased) } } } Loading @@ -433,12 +411,6 @@ constructor( } } ) applicationScope.launch { wallpaperInteractor.wallpaperSupportsAmbientMode.collect { supported -> wallpaperSupportsAmbientMode = supported updateWakeBlurRadius(prevDozeAmount) } } initBlurListeners() } Loading Loading @@ -613,8 +585,7 @@ constructor( it.println("shouldApplyShadeBlur: ${shouldApplyShadeBlur()}") it.println("shadeAnimation: ${shadeAnimation.radius}") it.println("brightnessMirrorRadius: ${brightnessMirrorSpring.radius}") it.println("wakeBlur: $wakeBlurRadius") it.println("unlockBlur: $wakeBlurRadius") it.println("wakeAndUnlockBlur: $wakeAndUnlockBlurRadius") it.println("blursDisabledForAppLaunch: $blursDisabledForAppLaunch") it.println("appLaunchTransitionIsInProgress: $appLaunchTransitionIsInProgress") it.println("qsPanelExpansion: $qsPanelExpansion") Loading