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

Commit 9799ce72 authored by Jeff DeCew's avatar Jeff DeCew Committed by Android (Google) Code Review
Browse files

Merge "Dump flows of NSSL view models" into main

parents c26dc7d9 6bcc3e02
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -19,11 +19,13 @@ package com.android.systemui.statusbar.notification.stack.ui.viewmodel

import com.android.systemui.common.shared.model.NotificationContainerBounds
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dump.DumpManager
import com.android.systemui.scene.domain.interactor.SceneInteractor
import com.android.systemui.scene.shared.model.ObservableTransitionState
import com.android.systemui.scene.shared.model.SceneKey
import com.android.systemui.shade.domain.interactor.ShadeInteractor
import com.android.systemui.statusbar.notification.stack.domain.interactor.NotificationStackAppearanceInteractor
import com.android.systemui.util.kotlin.FlowDumperImpl
import javax.inject.Inject
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.StateFlow
@@ -35,10 +37,11 @@ import kotlinx.coroutines.flow.distinctUntilChanged
class NotificationStackAppearanceViewModel
@Inject
constructor(
    dumpManager: DumpManager,
    stackAppearanceInteractor: NotificationStackAppearanceInteractor,
    shadeInteractor: ShadeInteractor,
    sceneInteractor: SceneInteractor,
) {
) : FlowDumperImpl(dumpManager) {
    /**
     * The expansion fraction of the notification stack. It should go from 0 to 1 when transitioning
     * from Gone to Shade scenes, and remain at 1 when in Lockscreen or Shade scenes and while
@@ -72,10 +75,12 @@ constructor(
                }
            }
            .distinctUntilChanged()
            .dumpWhileCollecting("expandFraction")

    /** The bounds of the notification stack in the current scene. */
    val stackBounds: Flow<NotificationContainerBounds> = stackAppearanceInteractor.stackBounds
    val stackBounds: Flow<NotificationContainerBounds> =
        stackAppearanceInteractor.stackBounds.dumpValue("stackBounds")

    /** The y-coordinate in px of top of the contents of the notification stack. */
    val contentTop: StateFlow<Float> = stackAppearanceInteractor.contentTop
    val contentTop: StateFlow<Float> = stackAppearanceInteractor.contentTop.dumpValue("contentTop")
}
+25 −3
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import com.android.systemui.common.shared.model.NotificationContainerBounds
import com.android.systemui.communal.domain.interactor.CommunalInteractor
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.keyguard.domain.interactor.KeyguardTransitionInteractor
import com.android.systemui.keyguard.shared.model.KeyguardState
@@ -60,6 +61,7 @@ import com.android.systemui.keyguard.ui.viewmodel.PrimaryBouncerToLockscreenTran
import com.android.systemui.keyguard.ui.viewmodel.ViewStateAccessor
import com.android.systemui.shade.domain.interactor.ShadeInteractor
import com.android.systemui.statusbar.notification.stack.domain.interactor.SharedNotificationContainerInteractor
import com.android.systemui.util.kotlin.FlowDumperImpl
import com.android.systemui.util.kotlin.Utils.Companion.sample as sampleCombine
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
@@ -88,6 +90,7 @@ class SharedNotificationContainerViewModel
@Inject
constructor(
    private val interactor: SharedNotificationContainerInteractor,
    dumpManager: DumpManager,
    @Application applicationScope: CoroutineScope,
    private val keyguardInteractor: KeyguardInteractor,
    private val keyguardTransitionInteractor: KeyguardTransitionInteractor,
@@ -116,7 +119,7 @@ constructor(
    private val primaryBouncerToLockscreenTransitionViewModel:
        PrimaryBouncerToLockscreenTransitionViewModel,
    private val aodBurnInViewModel: AodBurnInViewModel,
) {
) : FlowDumperImpl(dumpManager) {
    private val statesForConstrainedNotifications: Set<KeyguardState> =
        setOf(AOD, LOCKSCREEN, DOZING, ALTERNATE_BOUNCER, PRIMARY_BOUNCER)

@@ -126,6 +129,7 @@ constructor(
            .map { it.transitionState == STARTED || it.transitionState == RUNNING }
            .distinctUntilChanged()
            .onStart { emit(false) }
            .dumpWhileCollecting("lockscreenToGlanceableHubRunning")

    private val glanceableHubToLockscreenRunning =
        keyguardTransitionInteractor
@@ -133,6 +137,7 @@ constructor(
            .map { it.transitionState == STARTED || it.transitionState == RUNNING }
            .distinctUntilChanged()
            .onStart { emit(false) }
            .dumpWhileCollecting("glanceableHubToLockscreenRunning")

    /**
     * Shade locked is a legacy concept, but necessary to mimic current functionality. Listen for
@@ -148,8 +153,10 @@ constructor(
                isShadeLocked && (isQsExpanded || isShadeExpanded)
            }
            .distinctUntilChanged()
            .dumpWhileCollecting("isShadeLocked")

    val shadeCollapseFadeInComplete = MutableStateFlow(false)
    private val shadeCollapseFadeInComplete = MutableStateFlow(false)
            .dumpValue("shadeCollapseFadeInComplete")

    val configurationBasedDimensions: Flow<ConfigurationBasedDimensions> =
        interactor.configurationBasedDimensions
@@ -171,6 +178,7 @@ constructor(
                )
            }
            .distinctUntilChanged()
            .dumpWhileCollecting("configurationBasedDimensions")

    /** If the user is visually on one of the unoccluded lockscreen states. */
    val isOnLockscreen: Flow<Boolean> =
@@ -186,6 +194,7 @@ constructor(
                constrainedNotificationState || transitioningToOrFromLockscreen
            }
            .distinctUntilChanged()
            .dumpWhileCollecting("isOnLockscreen")

    /** Are we purely on the keyguard without the shade/qs? */
    val isOnLockscreenWithoutShade: Flow<Boolean> =
@@ -204,6 +213,7 @@ constructor(
                started = SharingStarted.Eagerly,
                initialValue = false,
            )
            .dumpValue("isOnLockscreenWithoutShade")

    /** Are we purely on the glanceable hub without the shade/qs? */
    val isOnGlanceableHubWithoutShade: Flow<Boolean> =
@@ -222,6 +232,7 @@ constructor(
                started = SharingStarted.WhileSubscribed(),
                initialValue = false,
            )
            .dumpWhileCollecting("isOnGlanceableHubWithoutShade")

    /**
     * Fade in if the user swipes the shade back up, not if collapsed by going to AOD. This is
@@ -284,6 +295,7 @@ constructor(
                started = SharingStarted.WhileSubscribed(),
                initialValue = false,
            )
            .dumpWhileCollecting("shadeCollapseFadeIn")

    /**
     * The container occupies the entire screen, and must be positioned relative to other elements.
@@ -322,6 +334,7 @@ constructor(
                started = SharingStarted.Lazily,
                initialValue = NotificationContainerBounds(),
            )
            .dumpValue("bounds")

    /**
     * Ensure view is visible when the shade/qs are expanded. Also, as QS is expanding, fade out
@@ -345,6 +358,7 @@ constructor(
                }
            }
            .onStart { emit(0f) }
            .dumpWhileCollecting("alphaForShadeAndQsExpansion")

    private val alphaWhenGoneAndShadeState: Flow<Float> =
        combineTransform(
@@ -357,6 +371,7 @@ constructor(
                emit(1f)
            }
        }
        .dumpWhileCollecting("alphaWhenGoneAndShadeState")

    fun expansionAlpha(viewState: ViewStateAccessor): Flow<Float> {
        // All transition view models are mututally exclusive, and safe to merge
@@ -389,7 +404,9 @@ constructor(
                    isOnLockscreenWithoutShade,
                    shadeCollapseFadeIn,
                    alphaForShadeAndQsExpansion,
                    keyguardInteractor.dismissAlpha,
                    keyguardInteractor.dismissAlpha.dumpWhileCollecting(
                        "keyguardInteractor.keyguardAlpha"
                    ),
                ) {
                    isOnLockscreenWithoutShade,
                    shadeCollapseFadeIn,
@@ -405,6 +422,7 @@ constructor(
                },
            )
            .distinctUntilChanged()
            .dumpWhileCollecting("expansionAlpha")
    }

    /**
@@ -438,6 +456,7 @@ constructor(
                }
            }
        }
        .dumpWhileCollecting("glanceableHubAlpha")

    /**
     * Under certain scenarios, such as swiping up on the lockscreen, the container will need to be
@@ -458,6 +477,7 @@ constructor(
                0f
            }
        }
        .dumpWhileCollecting("translationY")
    }

    /**
@@ -469,6 +489,7 @@ constructor(
            lockscreenToGlanceableHubTransitionViewModel.notificationTranslationX,
            glanceableHubToLockscreenTransitionViewModel.notificationTranslationX,
        )
        .dumpWhileCollecting("translationX")

    /**
     * When on keyguard, there is limited space to display notifications so calculate how many could
@@ -510,6 +531,7 @@ constructor(
                }
            }
            .distinctUntilChanged()
            .dumpWhileCollecting("maxNotifications")
    }

    fun notificationStackChanged() {
+2 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.systemui.statusbar.notification.stack.ui.viewmodel

import com.android.systemui.dump.dumpManager
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.Kosmos.Fixture
import com.android.systemui.scene.domain.interactor.sceneInteractor
@@ -24,6 +25,7 @@ import com.android.systemui.statusbar.notification.stack.domain.interactor.notif

val Kosmos.notificationStackAppearanceViewModel by Fixture {
    NotificationStackAppearanceViewModel(
        dumpManager = dumpManager,
        stackAppearanceInteractor = notificationStackAppearanceInteractor,
        shadeInteractor = shadeInteractor,
        sceneInteractor = sceneInteractor,
+2 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.systemui.statusbar.notification.stack.ui.viewmodel

import com.android.systemui.communal.domain.interactor.communalInteractor
import com.android.systemui.dump.dumpManager
import com.android.systemui.keyguard.domain.interactor.keyguardInteractor
import com.android.systemui.keyguard.domain.interactor.keyguardTransitionInteractor
import com.android.systemui.keyguard.ui.viewmodel.alternateBouncerToGoneTransitionViewModel
@@ -48,6 +49,7 @@ import kotlinx.coroutines.ExperimentalCoroutinesApi
val Kosmos.sharedNotificationContainerViewModel by Fixture {
    SharedNotificationContainerViewModel(
        interactor = sharedNotificationContainerInteractor,
        dumpManager = dumpManager,
        applicationScope = applicationCoroutineScope,
        keyguardInteractor = keyguardInteractor,
        keyguardTransitionInteractor = keyguardTransitionInteractor,