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

Commit 52ef22d7 authored by Jeff DeCew's avatar Jeff DeCew
Browse files

[flexiglass] NotificationStackViewBinder is bound within SharedNotificationContainerBinder

Bug: 296118689
Test: atest SystemUITests
Flag: ACONFIG com.android.systemui.scene_container DEVELOPMENT
Change-Id: I83a359761a38d1441b2c6d6aeb4ab79e7d1c3858
parent 26b1b800
Loading
Loading
Loading
Loading
+0 −8
Original line number Diff line number Diff line
@@ -23,10 +23,8 @@ import com.android.compose.animation.scene.SceneScope
import com.android.systemui.Flags.migrateClocksToBlueprint
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.notifications.ui.composable.NotificationStack
import com.android.systemui.scene.shared.flag.SceneContainerFlags
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout
import com.android.systemui.statusbar.notification.stack.ui.view.SharedNotificationContainer
import com.android.systemui.statusbar.notification.stack.ui.viewbinder.NotificationStackViewBinder
import com.android.systemui.statusbar.notification.stack.ui.viewbinder.SharedNotificationContainerBinder
import com.android.systemui.statusbar.notification.stack.ui.viewmodel.NotificationsPlaceholderViewModel
import com.android.systemui.statusbar.notification.stack.ui.viewmodel.SharedNotificationContainerViewModel
@@ -37,12 +35,10 @@ class NotificationSection
@Inject
constructor(
    private val viewModel: NotificationsPlaceholderViewModel,
    sceneContainerFlags: SceneContainerFlags,
    sharedNotificationContainer: SharedNotificationContainer,
    sharedNotificationContainerViewModel: SharedNotificationContainerViewModel,
    stackScrollLayout: NotificationStackScrollLayout,
    sharedNotificationContainerBinder: SharedNotificationContainerBinder,
    notificationStackViewBinder: NotificationStackViewBinder,
) {

    init {
@@ -65,10 +61,6 @@ constructor(
            sharedNotificationContainer,
            sharedNotificationContainerViewModel,
        )

        if (sceneContainerFlags.isEnabled()) {
            notificationStackViewBinder.bindWhileAttached()
        }
    }

    @Composable
+0 −6
Original line number Diff line number Diff line
@@ -27,11 +27,9 @@ import androidx.constraintlayout.widget.ConstraintSet.TOP
import com.android.systemui.Flags.centralizedStatusBarHeightFix
import com.android.systemui.Flags.migrateClocksToBlueprint
import com.android.systemui.res.R
import com.android.systemui.scene.shared.flag.SceneContainerFlags
import com.android.systemui.shade.LargeScreenHeaderHelper
import com.android.systemui.shade.NotificationPanelView
import com.android.systemui.statusbar.notification.stack.ui.view.SharedNotificationContainer
import com.android.systemui.statusbar.notification.stack.ui.viewbinder.NotificationStackViewBinder
import com.android.systemui.statusbar.notification.stack.ui.viewbinder.SharedNotificationContainerBinder
import com.android.systemui.statusbar.notification.stack.ui.viewmodel.SharedNotificationContainerViewModel
import dagger.Lazy
@@ -42,22 +40,18 @@ class DefaultNotificationStackScrollLayoutSection
@Inject
constructor(
    context: Context,
    sceneContainerFlags: SceneContainerFlags,
    notificationPanelView: NotificationPanelView,
    sharedNotificationContainer: SharedNotificationContainer,
    sharedNotificationContainerViewModel: SharedNotificationContainerViewModel,
    sharedNotificationContainerBinder: SharedNotificationContainerBinder,
    notificationStackViewBinder: NotificationStackViewBinder,
    private val largeScreenHeaderHelperLazy: Lazy<LargeScreenHeaderHelper>,
) :
    NotificationStackScrollLayoutSection(
        context,
        sceneContainerFlags,
        notificationPanelView,
        sharedNotificationContainer,
        sharedNotificationContainerViewModel,
        sharedNotificationContainerBinder,
        notificationStackViewBinder,
    ) {
    override fun applyConstraints(constraintSet: ConstraintSet) {
        if (!migrateClocksToBlueprint()) {
+6 −13
Original line number Diff line number Diff line
@@ -29,26 +29,22 @@ import com.android.systemui.Flags.migrateClocksToBlueprint
import com.android.systemui.deviceentry.shared.DeviceEntryUdfpsRefactor
import com.android.systemui.keyguard.shared.model.KeyguardSection
import com.android.systemui.res.R
import com.android.systemui.scene.shared.flag.SceneContainerFlags
import com.android.systemui.shade.NotificationPanelView
import com.android.systemui.statusbar.notification.stack.ui.view.SharedNotificationContainer
import com.android.systemui.statusbar.notification.stack.ui.viewbinder.NotificationStackViewBinder
import com.android.systemui.statusbar.notification.stack.ui.viewbinder.SharedNotificationContainerBinder
import com.android.systemui.statusbar.notification.stack.ui.viewmodel.SharedNotificationContainerViewModel
import com.android.systemui.util.kotlin.DisposableHandles
import kotlinx.coroutines.DisposableHandle

abstract class NotificationStackScrollLayoutSection
constructor(
    protected val context: Context,
    private val sceneContainerFlags: SceneContainerFlags,
    private val notificationPanelView: NotificationPanelView,
    private val sharedNotificationContainer: SharedNotificationContainer,
    private val sharedNotificationContainerViewModel: SharedNotificationContainerViewModel,
    private val sharedNotificationContainerBinder: SharedNotificationContainerBinder,
    private val notificationStackViewBinder: NotificationStackViewBinder,
) : KeyguardSection() {
    private val placeHolderId = R.id.nssl_placeholder
    private val disposableHandles = DisposableHandles()
    private var disposableHandle: DisposableHandle? = null

    /**
     * Align the notification placeholder bottom to the top of either the lock icon or the ambient
@@ -94,20 +90,17 @@ constructor(
            return
        }

        disposableHandles.dispose()
        disposableHandles +=
        disposableHandle?.dispose()
        disposableHandle =
            sharedNotificationContainerBinder.bind(
                sharedNotificationContainer,
                sharedNotificationContainerViewModel,
            )

        if (sceneContainerFlags.isEnabled()) {
            disposableHandles += notificationStackViewBinder.bindWhileAttached()
        }
    }

    override fun removeViews(constraintLayout: ConstraintLayout) {
        disposableHandles.dispose()
        disposableHandle?.dispose()
        disposableHandle = null
        constraintLayout.removeView(placeHolderId)
    }
}
+0 −6
Original line number Diff line number Diff line
@@ -25,10 +25,8 @@ import androidx.constraintlayout.widget.ConstraintSet.START
import androidx.constraintlayout.widget.ConstraintSet.TOP
import com.android.systemui.Flags.migrateClocksToBlueprint
import com.android.systemui.res.R
import com.android.systemui.scene.shared.flag.SceneContainerFlags
import com.android.systemui.shade.NotificationPanelView
import com.android.systemui.statusbar.notification.stack.ui.view.SharedNotificationContainer
import com.android.systemui.statusbar.notification.stack.ui.viewbinder.NotificationStackViewBinder
import com.android.systemui.statusbar.notification.stack.ui.viewbinder.SharedNotificationContainerBinder
import com.android.systemui.statusbar.notification.stack.ui.viewmodel.SharedNotificationContainerViewModel
import javax.inject.Inject
@@ -38,21 +36,17 @@ class SplitShadeNotificationStackScrollLayoutSection
@Inject
constructor(
    context: Context,
    sceneContainerFlags: SceneContainerFlags,
    notificationPanelView: NotificationPanelView,
    sharedNotificationContainer: SharedNotificationContainer,
    sharedNotificationContainerViewModel: SharedNotificationContainerViewModel,
    sharedNotificationContainerBinder: SharedNotificationContainerBinder,
    notificationStackViewBinder: NotificationStackViewBinder,
) :
    NotificationStackScrollLayoutSection(
        context,
        sceneContainerFlags,
        notificationPanelView,
        sharedNotificationContainer,
        sharedNotificationContainerViewModel,
        sharedNotificationContainerBinder,
        notificationStackViewBinder,
    ) {
    override fun applyConstraints(constraintSet: ConstraintSet) {
        if (!migrateClocksToBlueprint()) {
+5 −0
Original line number Diff line number Diff line
@@ -48,6 +48,7 @@ constructor(
    private val sceneContainerFlags: SceneContainerFlags,
    private val controller: NotificationStackScrollLayoutController,
    private val notificationStackSizeCalculator: NotificationStackSizeCalculator,
    private val notificationStackViewBinder: NotificationStackViewBinder,
    @Main private val mainImmediateDispatcher: CoroutineDispatcher,
) {

@@ -157,6 +158,10 @@ constructor(
                }
            }

        if (sceneContainerFlags.isEnabled()) {
            disposables += notificationStackViewBinder.bindWhileAttached()
        }

        controller.setOnHeightChangedRunnable { viewModel.notificationStackChanged() }
        disposables += DisposableHandle { controller.setOnHeightChangedRunnable(null) }