Blur notification shade when bouncer is open
Bug: 388068805
Test: verified manually
Flag: com.android.systemui.scene_container
Change-Id: I5277214fd69246d60846c5bf598894d19a54232f
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/ShadeScene.kt b/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/ShadeScene.kt
index 026938b..4871b42 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/ShadeScene.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/ShadeScene.kt
@@ -46,10 +46,12 @@
import androidx.compose.runtime.snapshotFlow
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
+import androidx.compose.ui.draw.blur
import androidx.compose.ui.graphics.CompositingStrategy
import androidx.compose.ui.graphics.graphicsLayer
import androidx.compose.ui.layout.Layout
import androidx.compose.ui.layout.layoutId
+import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.unit.dp
@@ -152,13 +154,15 @@
rememberViewModel("ShadeScene-notifPlaceholderViewModel") {
notificationsPlaceholderViewModelFactory.create()
}
+ val isShadeBlurred = viewModel.isShadeBlurred
+ val shadeBlurRadius = with(LocalDensity.current) { viewModel.shadeBlurRadius.toDp() }
ShadeScene(
notificationStackScrollView.get(),
viewModel = viewModel,
headerViewModel = headerViewModel,
notificationsPlaceholderViewModel = notificationsPlaceholderViewModel,
jankMonitor = jankMonitor,
- modifier = modifier,
+ modifier = modifier.thenIf(isShadeBlurred) { Modifier.blur(shadeBlurRadius) },
shadeSession = shadeSession,
)
}
diff --git a/packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/ShadeSceneContentViewModel.kt b/packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/ShadeSceneContentViewModel.kt
index b133acb..86bb38c 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/ShadeSceneContentViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/shade/ui/viewmodel/ShadeSceneContentViewModel.kt
@@ -18,11 +18,14 @@
import androidx.annotation.FloatRange
import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableFloatStateOf
import androidx.lifecycle.LifecycleOwner
import com.android.app.tracing.coroutines.launchTraced as launch
import com.android.systemui.Flags
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.deviceentry.domain.interactor.DeviceEntryInteractor
+import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
+import com.android.systemui.keyguard.ui.transitions.BlurConfig
import com.android.systemui.lifecycle.ExclusiveActivatable
import com.android.systemui.lifecycle.Hydrator
import com.android.systemui.media.controls.domain.pipeline.interactor.MediaCarouselInteractor
@@ -75,6 +78,8 @@
disableFlagsInteractor: DisableFlagsInteractor,
private val footerActionsViewModelFactory: FooterActionsViewModel.Factory,
private val footerActionsController: FooterActionsController,
+ keyguardInteractor: KeyguardInteractor,
+ blurConfig: BlurConfig,
unfoldTransitionInteractor: UnfoldTransitionInteractor,
deviceEntryInteractor: DeviceEntryInteractor,
private val sceneInteractor: SceneInteractor,
@@ -103,6 +108,14 @@
val shadeMode: ShadeMode by
hydrator.hydratedStateOf(traceName = "shadeMode", source = shadeModeInteractor.shadeMode)
+ val isShadeBlurred: Boolean by
+ hydrator.hydratedStateOf(
+ traceName = "isShadeBlurred",
+ source = keyguardInteractor.primaryBouncerShowing,
+ )
+
+ val shadeBlurRadius: Float by mutableFloatStateOf(blurConfig.maxBlurRadiusPx)
+
/** Whether clicking on the empty area of the shade should do something. */
val isEmptySpaceClickable: Boolean by
hydrator.hydratedStateOf(
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/shade/ui/viewmodel/ShadeSceneContentViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/shade/ui/viewmodel/ShadeSceneContentViewModelKosmos.kt
index 58e28ad..b16d1ce 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/shade/ui/viewmodel/ShadeSceneContentViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/shade/ui/viewmodel/ShadeSceneContentViewModelKosmos.kt
@@ -17,6 +17,8 @@
package com.android.systemui.shade.ui.viewmodel
import com.android.systemui.deviceentry.domain.interactor.deviceEntryInteractor
+import com.android.systemui.keyguard.domain.interactor.keyguardInteractor
+import com.android.systemui.keyguard.ui.transitions.blurConfig
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.Kosmos.Fixture
import com.android.systemui.kosmos.testDispatcher
@@ -52,6 +54,8 @@
mediaViewModelFactory = mediaViewModelFactory,
windowRootViewBlurInteractor = windowRootViewBlurInteractor,
mediaInRowInLandscapeViewModelFactory = mediaInRowInLandscapeViewModelFactory,
+ keyguardInteractor = keyguardInteractor,
+ blurConfig = blurConfig,
)
}