Loading packages/SystemUI/multivalentTests/src/com/android/systemui/model/SysUiStateExtTest.kt +1 −2 Original line number Diff line number Diff line Loading @@ -16,7 +16,6 @@ package com.android.systemui.model import android.view.Display import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase Loading @@ -35,7 +34,7 @@ class SysUiStateExtTest : SysuiTestCase() { @Test fun updateFlags() { underTest.updateFlags(Display.DEFAULT_DISPLAY, 1L to true, 2L to false, 4L to true) underTest.updateFlags(1L to true, 2L to false, 4L to true) assertThat(underTest.flags and 1L).isNotEqualTo(0L) assertThat(underTest.flags and 2L).isEqualTo(0L) Loading packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/SceneContainerStartableTest.kt +3 −4 Original line number Diff line number Diff line Loading @@ -22,7 +22,6 @@ import android.os.PowerManager import android.platform.test.annotations.DisableFlags import android.platform.test.annotations.EnableFlags import android.provider.Settings import android.view.Display import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.compose.animation.scene.ObservableTransitionState Loading Loading @@ -1213,15 +1212,15 @@ class SceneContainerStartableTest : SysuiTestCase() { fakeSceneDataSource.pause() sceneInteractor.changeScene(sceneKey, "reason") runCurrent() verify(sysUiState, times(index)).commitUpdate(Display.DEFAULT_DISPLAY) verify(sysUiState, times(index)).commitUpdate() fakeSceneDataSource.unpause(expectedScene = sceneKey) runCurrent() verify(sysUiState, times(index)).commitUpdate(Display.DEFAULT_DISPLAY) verify(sysUiState, times(index)).commitUpdate() transitionStateFlow.value = ObservableTransitionState.Idle(sceneKey) runCurrent() verify(sysUiState, times(index + 1)).commitUpdate(Display.DEFAULT_DISPLAY) verify(sysUiState, times(index + 1)).commitUpdate() } } Loading packages/SystemUI/src/com/android/systemui/model/SceneContainerPlugin.kt +18 −7 Original line number Diff line number Diff line Loading @@ -79,6 +79,7 @@ constructor( SceneContainerPluginState( scene = idleState.currentScene, overlays = idleState.currentOverlays, isVisible = sceneInteractor.get().isVisible.value, invisibleDueToOcclusion = invisibleDueToOcclusion, ) ) Loading @@ -100,12 +101,17 @@ constructor( mapOf<Long, (SceneContainerPluginState) -> Boolean>( SYSUI_STATE_NOTIFICATION_PANEL_VISIBLE to { it.scene != Scenes.Gone || it.overlays.isNotEmpty() when { !it.isVisible -> false it.scene != Scenes.Gone -> true it.overlays.isNotEmpty() -> true else -> false } }, SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED to { when { it.invisibleDueToOcclusion -> false !it.isVisible -> false it.scene == Scenes.Lockscreen -> true it.scene == Scenes.Shade -> true Overlays.NotificationsShade in it.overlays -> true Loading @@ -114,19 +120,23 @@ constructor( }, SYSUI_STATE_QUICK_SETTINGS_EXPANDED to { it.scene == Scenes.QuickSettings || Overlays.QuickSettingsShade in it.overlays when { !it.isVisible -> false it.scene == Scenes.QuickSettings -> true Overlays.QuickSettingsShade in it.overlays -> true else -> false } }, SYSUI_STATE_BOUNCER_SHOWING to { Overlays.Bouncer in it.overlays }, SYSUI_STATE_BOUNCER_SHOWING to { it.isVisible && Overlays.Bouncer in it.overlays }, SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING to { it.scene == Scenes.Lockscreen && !it.invisibleDueToOcclusion it.isVisible && it.scene == Scenes.Lockscreen }, SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED to { it.scene == Scenes.Lockscreen && it.invisibleDueToOcclusion }, SYSUI_STATE_COMMUNAL_HUB_SHOWING to { it.scene == Scenes.Communal }, SYSUI_STATE_COMMUNAL_HUB_SHOWING to { it.isVisible && it.scene == Scenes.Communal }, ) } Loading @@ -134,5 +144,6 @@ constructor( val scene: SceneKey, val overlays: Set<OverlayKey>, val invisibleDueToOcclusion: Boolean, val isVisible: Boolean, ) } packages/SystemUI/src/com/android/systemui/model/SysUiStateExt.kt +2 −12 Original line number Diff line number Diff line Loading @@ -16,8 +16,6 @@ package com.android.systemui.model import com.android.systemui.dagger.qualifiers.DisplayId /** * In-bulk updates multiple flag values and commits the update. * Loading @@ -32,16 +30,8 @@ import com.android.systemui.dagger.qualifiers.DisplayId * SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING to (sceneKey == Scenes.Lockscreen), * ) * ``` * * You can inject [displayId] by injecting it using: * ``` * @DisplayId private val displayId: Int`, * ``` */ fun SysUiState.updateFlags( @DisplayId displayId: Int, vararg flagValuePairs: Pair<Long, Boolean>, ) { fun SysUiState.updateFlags(vararg flagValuePairs: Pair<Long, Boolean>) { flagValuePairs.forEach { (flag, enabled) -> setFlag(flag, enabled) } commitUpdate(displayId) commitUpdate() } packages/SystemUI/src/com/android/systemui/scene/domain/startable/SceneContainerStartable.kt +13 −10 Original line number Diff line number Diff line Loading @@ -33,10 +33,8 @@ import com.android.systemui.bouncer.domain.interactor.SimBouncerInteractor import com.android.systemui.bouncer.shared.logging.BouncerUiEvent import com.android.systemui.classifier.FalsingCollector import com.android.systemui.classifier.FalsingCollectorActual import com.android.systemui.utils.coroutines.flow.conflatedCallbackFlow import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.dagger.qualifiers.DisplayId import com.android.systemui.deviceentry.domain.interactor.DeviceEntryFaceAuthInteractor import com.android.systemui.deviceentry.domain.interactor.DeviceEntryHapticsInteractor import com.android.systemui.deviceentry.domain.interactor.DeviceEntryInteractor Loading Loading @@ -82,6 +80,7 @@ import com.android.systemui.util.kotlin.pairwise import com.android.systemui.util.kotlin.sample import com.android.systemui.util.printSection import com.android.systemui.util.println import com.android.systemui.utils.coroutines.flow.conflatedCallbackFlow import com.google.android.msdl.data.model.MSDLToken import com.google.android.msdl.domain.MSDLPlayer import dagger.Lazy Loading Loading @@ -123,7 +122,6 @@ constructor( private val bouncerInteractor: BouncerInteractor, private val keyguardInteractor: KeyguardInteractor, private val sysUiState: SysUiState, @DisplayId private val displayId: Int, private val sceneLogger: SceneLogger, @FalsingCollectorActual private val falsingCollector: FalsingCollector, private val falsingManager: FalsingManager, Loading Loading @@ -732,21 +730,26 @@ constructor( sceneInteractor.transitionState .mapNotNull { it as? ObservableTransitionState.Idle } .distinctUntilChanged(), sceneInteractor.isVisible, occlusionInteractor.invisibleDueToOcclusion, ) { idleState, invisibleDueToOcclusion -> ) { idleState, isVisible, invisibleDueToOcclusion -> SceneContainerPlugin.SceneContainerPluginState( scene = idleState.currentScene, overlays = idleState.currentOverlays, isVisible = isVisible, invisibleDueToOcclusion = invisibleDueToOcclusion, ) } .collect { sceneContainerPluginState -> sysUiState.updateFlags( displayId, *SceneContainerPlugin.EvaluatorByFlag.map { (flag, evaluator) -> flag to evaluator.invoke(sceneContainerPluginState) .map { sceneContainerPluginState -> SceneContainerPlugin.EvaluatorByFlag.map { (flag, evaluator) -> flag to evaluator(sceneContainerPluginState) } .toTypedArray(), .toMap() } .distinctUntilChanged() .collect { flags -> sysUiState.updateFlags( *(flags.entries.map { (key, value) -> key to value }).toTypedArray() ) } } Loading Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/model/SysUiStateExtTest.kt +1 −2 Original line number Diff line number Diff line Loading @@ -16,7 +16,6 @@ package com.android.systemui.model import android.view.Display import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase Loading @@ -35,7 +34,7 @@ class SysUiStateExtTest : SysuiTestCase() { @Test fun updateFlags() { underTest.updateFlags(Display.DEFAULT_DISPLAY, 1L to true, 2L to false, 4L to true) underTest.updateFlags(1L to true, 2L to false, 4L to true) assertThat(underTest.flags and 1L).isNotEqualTo(0L) assertThat(underTest.flags and 2L).isEqualTo(0L) Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/SceneContainerStartableTest.kt +3 −4 Original line number Diff line number Diff line Loading @@ -22,7 +22,6 @@ import android.os.PowerManager import android.platform.test.annotations.DisableFlags import android.platform.test.annotations.EnableFlags import android.provider.Settings import android.view.Display import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.compose.animation.scene.ObservableTransitionState Loading Loading @@ -1213,15 +1212,15 @@ class SceneContainerStartableTest : SysuiTestCase() { fakeSceneDataSource.pause() sceneInteractor.changeScene(sceneKey, "reason") runCurrent() verify(sysUiState, times(index)).commitUpdate(Display.DEFAULT_DISPLAY) verify(sysUiState, times(index)).commitUpdate() fakeSceneDataSource.unpause(expectedScene = sceneKey) runCurrent() verify(sysUiState, times(index)).commitUpdate(Display.DEFAULT_DISPLAY) verify(sysUiState, times(index)).commitUpdate() transitionStateFlow.value = ObservableTransitionState.Idle(sceneKey) runCurrent() verify(sysUiState, times(index + 1)).commitUpdate(Display.DEFAULT_DISPLAY) verify(sysUiState, times(index + 1)).commitUpdate() } } Loading
packages/SystemUI/src/com/android/systemui/model/SceneContainerPlugin.kt +18 −7 Original line number Diff line number Diff line Loading @@ -79,6 +79,7 @@ constructor( SceneContainerPluginState( scene = idleState.currentScene, overlays = idleState.currentOverlays, isVisible = sceneInteractor.get().isVisible.value, invisibleDueToOcclusion = invisibleDueToOcclusion, ) ) Loading @@ -100,12 +101,17 @@ constructor( mapOf<Long, (SceneContainerPluginState) -> Boolean>( SYSUI_STATE_NOTIFICATION_PANEL_VISIBLE to { it.scene != Scenes.Gone || it.overlays.isNotEmpty() when { !it.isVisible -> false it.scene != Scenes.Gone -> true it.overlays.isNotEmpty() -> true else -> false } }, SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED to { when { it.invisibleDueToOcclusion -> false !it.isVisible -> false it.scene == Scenes.Lockscreen -> true it.scene == Scenes.Shade -> true Overlays.NotificationsShade in it.overlays -> true Loading @@ -114,19 +120,23 @@ constructor( }, SYSUI_STATE_QUICK_SETTINGS_EXPANDED to { it.scene == Scenes.QuickSettings || Overlays.QuickSettingsShade in it.overlays when { !it.isVisible -> false it.scene == Scenes.QuickSettings -> true Overlays.QuickSettingsShade in it.overlays -> true else -> false } }, SYSUI_STATE_BOUNCER_SHOWING to { Overlays.Bouncer in it.overlays }, SYSUI_STATE_BOUNCER_SHOWING to { it.isVisible && Overlays.Bouncer in it.overlays }, SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING to { it.scene == Scenes.Lockscreen && !it.invisibleDueToOcclusion it.isVisible && it.scene == Scenes.Lockscreen }, SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED to { it.scene == Scenes.Lockscreen && it.invisibleDueToOcclusion }, SYSUI_STATE_COMMUNAL_HUB_SHOWING to { it.scene == Scenes.Communal }, SYSUI_STATE_COMMUNAL_HUB_SHOWING to { it.isVisible && it.scene == Scenes.Communal }, ) } Loading @@ -134,5 +144,6 @@ constructor( val scene: SceneKey, val overlays: Set<OverlayKey>, val invisibleDueToOcclusion: Boolean, val isVisible: Boolean, ) }
packages/SystemUI/src/com/android/systemui/model/SysUiStateExt.kt +2 −12 Original line number Diff line number Diff line Loading @@ -16,8 +16,6 @@ package com.android.systemui.model import com.android.systemui.dagger.qualifiers.DisplayId /** * In-bulk updates multiple flag values and commits the update. * Loading @@ -32,16 +30,8 @@ import com.android.systemui.dagger.qualifiers.DisplayId * SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING to (sceneKey == Scenes.Lockscreen), * ) * ``` * * You can inject [displayId] by injecting it using: * ``` * @DisplayId private val displayId: Int`, * ``` */ fun SysUiState.updateFlags( @DisplayId displayId: Int, vararg flagValuePairs: Pair<Long, Boolean>, ) { fun SysUiState.updateFlags(vararg flagValuePairs: Pair<Long, Boolean>) { flagValuePairs.forEach { (flag, enabled) -> setFlag(flag, enabled) } commitUpdate(displayId) commitUpdate() }
packages/SystemUI/src/com/android/systemui/scene/domain/startable/SceneContainerStartable.kt +13 −10 Original line number Diff line number Diff line Loading @@ -33,10 +33,8 @@ import com.android.systemui.bouncer.domain.interactor.SimBouncerInteractor import com.android.systemui.bouncer.shared.logging.BouncerUiEvent import com.android.systemui.classifier.FalsingCollector import com.android.systemui.classifier.FalsingCollectorActual import com.android.systemui.utils.coroutines.flow.conflatedCallbackFlow import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.dagger.qualifiers.DisplayId import com.android.systemui.deviceentry.domain.interactor.DeviceEntryFaceAuthInteractor import com.android.systemui.deviceentry.domain.interactor.DeviceEntryHapticsInteractor import com.android.systemui.deviceentry.domain.interactor.DeviceEntryInteractor Loading Loading @@ -82,6 +80,7 @@ import com.android.systemui.util.kotlin.pairwise import com.android.systemui.util.kotlin.sample import com.android.systemui.util.printSection import com.android.systemui.util.println import com.android.systemui.utils.coroutines.flow.conflatedCallbackFlow import com.google.android.msdl.data.model.MSDLToken import com.google.android.msdl.domain.MSDLPlayer import dagger.Lazy Loading Loading @@ -123,7 +122,6 @@ constructor( private val bouncerInteractor: BouncerInteractor, private val keyguardInteractor: KeyguardInteractor, private val sysUiState: SysUiState, @DisplayId private val displayId: Int, private val sceneLogger: SceneLogger, @FalsingCollectorActual private val falsingCollector: FalsingCollector, private val falsingManager: FalsingManager, Loading Loading @@ -732,21 +730,26 @@ constructor( sceneInteractor.transitionState .mapNotNull { it as? ObservableTransitionState.Idle } .distinctUntilChanged(), sceneInteractor.isVisible, occlusionInteractor.invisibleDueToOcclusion, ) { idleState, invisibleDueToOcclusion -> ) { idleState, isVisible, invisibleDueToOcclusion -> SceneContainerPlugin.SceneContainerPluginState( scene = idleState.currentScene, overlays = idleState.currentOverlays, isVisible = isVisible, invisibleDueToOcclusion = invisibleDueToOcclusion, ) } .collect { sceneContainerPluginState -> sysUiState.updateFlags( displayId, *SceneContainerPlugin.EvaluatorByFlag.map { (flag, evaluator) -> flag to evaluator.invoke(sceneContainerPluginState) .map { sceneContainerPluginState -> SceneContainerPlugin.EvaluatorByFlag.map { (flag, evaluator) -> flag to evaluator(sceneContainerPluginState) } .toTypedArray(), .toMap() } .distinctUntilChanged() .collect { flags -> sysUiState.updateFlags( *(flags.entries.map { (key, value) -> key to value }).toTypedArray() ) } } Loading