Loading packages/SystemUI/src/com/android/systemui/scene/data/model/SceneStack.kt +11 −4 Original line number Diff line number Diff line Loading @@ -21,10 +21,6 @@ import com.android.compose.animation.scene.SceneKey /** An immutable stack of [SceneKey]s backed by a singly-linked list. */ sealed interface SceneStack private data object EmptyStack : SceneStack private data class StackedNodes(val head: SceneKey, val tail: SceneStack) : SceneStack /** Returns the scene at the head of the stack, or `null` if empty. O(1) */ fun SceneStack.peek(): SceneKey? = when (this) { Loading Loading @@ -69,3 +65,14 @@ fun sceneStackOf(vararg scenes: SceneKey): SceneStack { } return result } private data object EmptyStack : SceneStack { override fun toString() = sceneStackToString() } private data class StackedNodes(val head: SceneKey, val tail: SceneStack) : SceneStack { override fun toString() = sceneStackToString() } private fun SceneStack.sceneStackToString(): String = asIterable().joinToString { it.testTag }.let { "SceneStack([$it])" } packages/SystemUI/src/com/android/systemui/scene/domain/interactor/SceneBackInteractor.kt +2 −3 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ package com.android.systemui.scene.domain.interactor import com.android.compose.animation.scene.SceneKey import com.android.systemui.dagger.SysUISingleton import com.android.systemui.scene.data.model.SceneStack import com.android.systemui.scene.data.model.asIterable import com.android.systemui.scene.data.model.peek import com.android.systemui.scene.data.model.pop import com.android.systemui.scene.data.model.push Loading Loading @@ -68,13 +67,13 @@ constructor( checkNotNull(stack.pop()) { "Cannot pop ${from.debugName} when stack is empty" } } } logger.logSceneBackStack(backStack.value.asIterable()) logger.logSceneBackStack(backStack.value) } /** Applies the given [transform] to the back stack. */ fun updateBackStack(transform: (SceneStack) -> SceneStack) { _backStack.update { stack -> transform(stack) } logger.logSceneBackStack(backStack.value.asIterable()) logger.logSceneBackStack(backStack.value) } private fun stackOperation(from: SceneKey, to: SceneKey, stack: SceneStack): StackOperation? { Loading packages/SystemUI/src/com/android/systemui/scene/shared/logger/SceneLogger.kt +7 −17 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import com.android.compose.animation.scene.SceneKey import com.android.systemui.log.LogBuffer import com.android.systemui.log.core.LogLevel import com.android.systemui.log.dagger.SceneFrameworkLog import com.android.systemui.scene.data.model.SceneStack import javax.inject.Inject class SceneLogger @Inject constructor(@SceneFrameworkLog private val logBuffer: LogBuffer) { Loading @@ -40,16 +41,11 @@ class SceneLogger @Inject constructor(@SceneFrameworkLog private val logBuffer: }, messagePrinter = { "Scene framework is ${asWord(bool1)}${if (str1 != null) " $str1" else ""}" } }, ) } fun logSceneChanged( from: SceneKey, to: SceneKey, reason: String, isInstant: Boolean, ) { fun logSceneChanged(from: SceneKey, to: SceneKey, reason: String, isInstant: Boolean) { logBuffer.log( tag = TAG, level = LogLevel.INFO, Loading Loading @@ -123,11 +119,7 @@ class SceneLogger @Inject constructor(@SceneFrameworkLog private val logBuffer: ) } fun logVisibilityChange( from: Boolean, to: Boolean, reason: String, ) { fun logVisibilityChange(from: Boolean, to: Boolean, reason: String) { fun asWord(isVisible: Boolean): String { return if (isVisible) "visible" else "invisible" } Loading @@ -144,9 +136,7 @@ class SceneLogger @Inject constructor(@SceneFrameworkLog private val logBuffer: ) } fun logRemoteUserInputStarted( reason: String, ) { fun logRemoteUserInputStarted(reason: String) { logBuffer.log( tag = TAG, level = LogLevel.INFO, Loading @@ -164,11 +154,11 @@ class SceneLogger @Inject constructor(@SceneFrameworkLog private val logBuffer: ) } fun logSceneBackStack(backStack: Iterable<SceneKey>) { fun logSceneBackStack(backStack: SceneStack) { logBuffer.log( tag = TAG, level = LogLevel.INFO, messageInitializer = { str1 = backStack.joinToString(", ") { it.debugName } }, messageInitializer = { str1 = backStack.toString() }, messagePrinter = { "back stack: $str1" }, ) } Loading Loading
packages/SystemUI/src/com/android/systemui/scene/data/model/SceneStack.kt +11 −4 Original line number Diff line number Diff line Loading @@ -21,10 +21,6 @@ import com.android.compose.animation.scene.SceneKey /** An immutable stack of [SceneKey]s backed by a singly-linked list. */ sealed interface SceneStack private data object EmptyStack : SceneStack private data class StackedNodes(val head: SceneKey, val tail: SceneStack) : SceneStack /** Returns the scene at the head of the stack, or `null` if empty. O(1) */ fun SceneStack.peek(): SceneKey? = when (this) { Loading Loading @@ -69,3 +65,14 @@ fun sceneStackOf(vararg scenes: SceneKey): SceneStack { } return result } private data object EmptyStack : SceneStack { override fun toString() = sceneStackToString() } private data class StackedNodes(val head: SceneKey, val tail: SceneStack) : SceneStack { override fun toString() = sceneStackToString() } private fun SceneStack.sceneStackToString(): String = asIterable().joinToString { it.testTag }.let { "SceneStack([$it])" }
packages/SystemUI/src/com/android/systemui/scene/domain/interactor/SceneBackInteractor.kt +2 −3 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ package com.android.systemui.scene.domain.interactor import com.android.compose.animation.scene.SceneKey import com.android.systemui.dagger.SysUISingleton import com.android.systemui.scene.data.model.SceneStack import com.android.systemui.scene.data.model.asIterable import com.android.systemui.scene.data.model.peek import com.android.systemui.scene.data.model.pop import com.android.systemui.scene.data.model.push Loading Loading @@ -68,13 +67,13 @@ constructor( checkNotNull(stack.pop()) { "Cannot pop ${from.debugName} when stack is empty" } } } logger.logSceneBackStack(backStack.value.asIterable()) logger.logSceneBackStack(backStack.value) } /** Applies the given [transform] to the back stack. */ fun updateBackStack(transform: (SceneStack) -> SceneStack) { _backStack.update { stack -> transform(stack) } logger.logSceneBackStack(backStack.value.asIterable()) logger.logSceneBackStack(backStack.value) } private fun stackOperation(from: SceneKey, to: SceneKey, stack: SceneStack): StackOperation? { Loading
packages/SystemUI/src/com/android/systemui/scene/shared/logger/SceneLogger.kt +7 −17 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import com.android.compose.animation.scene.SceneKey import com.android.systemui.log.LogBuffer import com.android.systemui.log.core.LogLevel import com.android.systemui.log.dagger.SceneFrameworkLog import com.android.systemui.scene.data.model.SceneStack import javax.inject.Inject class SceneLogger @Inject constructor(@SceneFrameworkLog private val logBuffer: LogBuffer) { Loading @@ -40,16 +41,11 @@ class SceneLogger @Inject constructor(@SceneFrameworkLog private val logBuffer: }, messagePrinter = { "Scene framework is ${asWord(bool1)}${if (str1 != null) " $str1" else ""}" } }, ) } fun logSceneChanged( from: SceneKey, to: SceneKey, reason: String, isInstant: Boolean, ) { fun logSceneChanged(from: SceneKey, to: SceneKey, reason: String, isInstant: Boolean) { logBuffer.log( tag = TAG, level = LogLevel.INFO, Loading Loading @@ -123,11 +119,7 @@ class SceneLogger @Inject constructor(@SceneFrameworkLog private val logBuffer: ) } fun logVisibilityChange( from: Boolean, to: Boolean, reason: String, ) { fun logVisibilityChange(from: Boolean, to: Boolean, reason: String) { fun asWord(isVisible: Boolean): String { return if (isVisible) "visible" else "invisible" } Loading @@ -144,9 +136,7 @@ class SceneLogger @Inject constructor(@SceneFrameworkLog private val logBuffer: ) } fun logRemoteUserInputStarted( reason: String, ) { fun logRemoteUserInputStarted(reason: String) { logBuffer.log( tag = TAG, level = LogLevel.INFO, Loading @@ -164,11 +154,11 @@ class SceneLogger @Inject constructor(@SceneFrameworkLog private val logBuffer: ) } fun logSceneBackStack(backStack: Iterable<SceneKey>) { fun logSceneBackStack(backStack: SceneStack) { logBuffer.log( tag = TAG, level = LogLevel.INFO, messageInitializer = { str1 = backStack.joinToString(", ") { it.debugName } }, messageInitializer = { str1 = backStack.toString() }, messagePrinter = { "back stack: $str1" }, ) } Loading