diff options
4 files changed, 59 insertions, 15 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/scene/domain/resolver/HomeSceneFamilyResolver.kt b/packages/SystemUI/src/com/android/systemui/scene/domain/resolver/HomeSceneFamilyResolver.kt index 2a0a22f32601..6e79d568761f 100644 --- a/packages/SystemUI/src/com/android/systemui/scene/domain/resolver/HomeSceneFamilyResolver.kt +++ b/packages/SystemUI/src/com/android/systemui/scene/domain/resolver/HomeSceneFamilyResolver.kt @@ -18,6 +18,7 @@ package com.android.systemui.scene.domain.resolver +import android.util.Log import com.android.compose.animation.scene.SceneKey import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Application @@ -85,8 +86,8 @@ constructor( isUnlocked: Boolean, isDreamingWithOverlay: Boolean, isAbleToDream: Boolean, - ): SceneKey = - when { + ): SceneKey { + val result = when { // Dream can run even if Keyguard is disabled, thus it has the highest priority here. isDreamingWithOverlay && isAbleToDream -> Scenes.Dream !isKeyguardEnabled -> Scenes.Gone @@ -95,8 +96,21 @@ constructor( !isUnlocked -> Scenes.Lockscreen else -> Scenes.Gone } + Log.d(TAG, "homeScene emitting $result, values:") + Log.d(TAG, " isKeyguardEnabled=$isKeyguardEnabled") + Log.d(TAG, " canSwipeToEnter=$canSwipeToEnter") + Log.d(TAG, " isDeviceEntered=$isDeviceEntered" ) + Log.d(TAG, " isUnlocked=$isUnlocked") + Log.d(TAG, " isDreamingWithOverlay=$isDreamingWithOverlay") + Log.d(TAG, " isAbleToDream=$isAbleToDream") + Log.d(TAG, "") + return result + } companion object { + + private const val TAG = "HomeSceneFamilyResolver" + val homeScenes = setOf( Scenes.Gone, diff --git a/packages/SystemUI/src/com/android/systemui/scene/domain/startable/SceneContainerStartable.kt b/packages/SystemUI/src/com/android/systemui/scene/domain/startable/SceneContainerStartable.kt index 8657c1723507..ecd002705c60 100644 --- a/packages/SystemUI/src/com/android/systemui/scene/domain/startable/SceneContainerStartable.kt +++ b/packages/SystemUI/src/com/android/systemui/scene/domain/startable/SceneContainerStartable.kt @@ -564,7 +564,7 @@ constructor( .collect { switchToScene( targetSceneKey = Scenes.Lockscreen, - loggingReason = "device became non-interactive", + loggingReason = "device became non-interactive (SceneContainerStartable)", ) } } diff --git a/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractorImpl.kt b/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractorImpl.kt index a653ca2f80a9..b5e171043741 100644 --- a/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractorImpl.kt +++ b/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractorImpl.kt @@ -16,6 +16,7 @@ package com.android.systemui.shade.domain.interactor +import android.util.Log import com.android.app.tracing.coroutines.flow.flowName import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Application @@ -38,6 +39,7 @@ import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.stateIn /** The non-empty SceneInteractor implementation. */ @@ -98,18 +100,36 @@ constructor( override val isShadeTouchable: Flow<Boolean> = combine( - powerInteractor.isAsleep, - keyguardTransitionInteractor.isInTransition(Edge.create(to = KeyguardState.AOD)), - keyguardRepository.dozeTransitionModel.map { it.to == DozeStateModel.DOZE_PULSING }, - ) { isAsleep, goingToSleep, isPulsing -> - when { - // If the device is going to sleep, only accept touches if we're still - // animating - goingToSleep -> dozeParams.shouldControlScreenOff() + powerInteractor.isAsleep + .onEach { Log.d(TAG, "isShadeTouchable: upstream isAsleep=$it") }, + keyguardTransitionInteractor + .isInTransition(Edge.create(to = KeyguardState.AOD)) + .onEach { + Log.d( + TAG, + "isShadeTouchable: upstream isTransitioningToAod=$it", + ) + }, + keyguardRepository.dozeTransitionModel + .map { it.to == DozeStateModel.DOZE_PULSING } + .onEach { + Log.d(TAG, "isShadeTouchable: upstream isPulsing=$it") + }, + ) { isAsleep, isTransitioningToAod, isPulsing -> + val downstream = when { + // If the device is transitioning to AOD, only accept touches if + // still animating. + isTransitioningToAod -> dozeParams.shouldControlScreenOff() // If the device is asleep, only accept touches if there's a pulse isAsleep -> isPulsing else -> true } + Log.d(TAG, "isShadeTouchable emitting $downstream, values:") + Log.d(TAG, " isAsleep=$isAsleep") + Log.d(TAG, " isTransitioningToAod=$isTransitioningToAod") + Log.d(TAG, " isPulsing=$isPulsing") + Log.d(TAG, "") + downstream } override val isExpandToQsEnabled: Flow<Boolean> = @@ -128,4 +148,8 @@ constructor( disableFlags.isQuickSettingsEnabled() && !isDozing } + + companion object { + private const val TAG = "ShadeInteractor" + } } diff --git a/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractorSceneContainerImpl.kt b/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractorSceneContainerImpl.kt index 765810810bb8..992385c8d80e 100644 --- a/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractorSceneContainerImpl.kt +++ b/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractorSceneContainerImpl.kt @@ -199,11 +199,14 @@ constructor( ) } else if (transitionKey == Instant) { // TODO(b/356596436): Define instant transition instead of snapToScene(). - sceneInteractor.snapToScene(toScene = SceneFamilies.Home, loggingReason = loggingReason) + sceneInteractor.snapToScene( + toScene = SceneFamilies.Home, + loggingReason = loggingReason + " (collapseNotificationsShade)", + ) } else { sceneInteractor.changeScene( toScene = SceneFamilies.Home, - loggingReason = loggingReason, + loggingReason = loggingReason + " (collapseNotificationsShade)", transitionKey = transitionKey ?: ToSplitShade.takeIf { shadeModeInteractor.isSplitShade }, ) @@ -230,11 +233,14 @@ constructor( if (bypassNotificationsShade || isSplitShade) SceneFamilies.Home else Scenes.Shade if (transitionKey == Instant) { // TODO(b/356596436): Define instant transition instead of snapToScene(). - sceneInteractor.snapToScene(toScene = targetScene, loggingReason = loggingReason) + sceneInteractor.snapToScene( + toScene = targetScene, + loggingReason = loggingReason + " (collapseQuickSettingsShade)", + ) } else { sceneInteractor.changeScene( toScene = targetScene, - loggingReason = loggingReason, + loggingReason = loggingReason + " (collapseQuickSettingsShade)", transitionKey = transitionKey ?: ToSplitShade.takeIf { isSplitShade }, ) } |