Skip to content
Snippets Groups Projects
Commit d0eb85b7 authored by Ale Nijamkin's avatar Ale Nijamkin Committed by Android (Google) Code Review
Browse files

Merge "[flexiglass] Require single swipe up to return to LS from QS scene" into main

parents 2830e96f 7bfffc4f
No related branches found
No related tags found
No related merge requests found
......@@ -31,6 +31,7 @@ import com.android.systemui.qs.FooterActionsController
import com.android.systemui.qs.footer.ui.viewmodel.FooterActionsViewModel
import com.android.systemui.qs.ui.adapter.FakeQSSceneAdapter
import com.android.systemui.res.R
import com.android.systemui.scene.domain.interactor.sceneInteractor
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.settings.brightness.ui.viewmodel.brightnessMirrorViewModel
import com.android.systemui.shade.domain.interactor.privacyChipInteractor
......@@ -88,6 +89,7 @@ class QuickSettingsSceneViewModelTest : SysuiTestCase() {
flags,
scope = testScope.backgroundScope,
)
private val sceneInteractor = kosmos.sceneInteractor
private lateinit var shadeHeaderViewModel: ShadeHeaderViewModel
......@@ -115,11 +117,12 @@ class QuickSettingsSceneViewModelTest : SysuiTestCase() {
notifications = kosmos.notificationsPlaceholderViewModel,
footerActionsViewModelFactory = footerActionsViewModelFactory,
footerActionsController = footerActionsController,
sceneInteractor = sceneInteractor,
)
}
@Test
fun destinationsNotCustomizing() =
fun destinations_whenNotCustomizing() =
testScope.runTest {
overrideResource(R.bool.config_use_split_notification_shade, false)
val destinations by collectLastValue(underTest.destinationScenes)
......@@ -135,7 +138,30 @@ class QuickSettingsSceneViewModelTest : SysuiTestCase() {
}
@Test
fun destinationsCustomizing_noDestinations() =
fun destinations_whenNotCustomizing_withPreviousSceneLockscreen() =
testScope.runTest {
overrideResource(R.bool.config_use_split_notification_shade, false)
qsFlexiglassAdapter.setCustomizing(false)
val destinations by collectLastValue(underTest.destinationScenes)
val currentScene by collectLastValue(sceneInteractor.currentScene)
val previousScene by collectLastValue(sceneInteractor.previousScene)
sceneInteractor.changeScene(Scenes.Lockscreen, "reason")
sceneInteractor.changeScene(Scenes.QuickSettings, "reason")
assertThat(currentScene).isEqualTo(Scenes.QuickSettings)
assertThat(previousScene).isEqualTo(Scenes.Lockscreen)
assertThat(destinations)
.isEqualTo(
mapOf(
Back to UserActionResult(Scenes.Lockscreen),
Swipe(SwipeDirection.Up) to UserActionResult(Scenes.Lockscreen),
)
)
}
@Test
fun destinations_whenCustomizing_noDestinations() =
testScope.runTest {
overrideResource(R.bool.config_use_split_notification_shade, false)
val destinations by collectLastValue(underTest.destinationScenes)
......
......@@ -25,12 +25,15 @@ import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.qs.FooterActionsController
import com.android.systemui.qs.footer.ui.viewmodel.FooterActionsViewModel
import com.android.systemui.qs.ui.adapter.QSSceneAdapter
import com.android.systemui.scene.domain.interactor.SceneInteractor
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.settings.brightness.ui.viewModel.BrightnessMirrorViewModel
import com.android.systemui.shade.ui.viewmodel.ShadeHeaderViewModel
import com.android.systemui.statusbar.notification.stack.ui.viewmodel.NotificationsPlaceholderViewModel
import java.util.concurrent.atomic.AtomicBoolean
import javax.inject.Inject
import kotlinx.coroutines.flow.flatMapLatest
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.flow.map
/** Models UI state and handles user input for the quick settings scene. */
......@@ -44,20 +47,23 @@ constructor(
val notifications: NotificationsPlaceholderViewModel,
private val footerActionsViewModelFactory: FooterActionsViewModel.Factory,
private val footerActionsController: FooterActionsController,
private val sceneInteractor: SceneInteractor,
) {
val destinationScenes =
qsSceneAdapter.isCustomizing.map { customizing ->
qsSceneAdapter.isCustomizing.flatMapLatest { customizing ->
if (customizing) {
// TODO(b/332749288) Empty map so there are no back handlers and back can close
// customizer
emptyMap()
flowOf(emptyMap())
// TODO(b/330200163) Add an Up from Bottom to be able to collapse the shade
// while customizing
} else {
mapOf(
Back to UserActionResult(Scenes.Shade),
Swipe(SwipeDirection.Up) to UserActionResult(Scenes.Shade),
)
sceneInteractor.previousScene.map { previousScene ->
mapOf(
Back to UserActionResult(previousScene ?: Scenes.Shade),
Swipe(SwipeDirection.Up) to UserActionResult(previousScene ?: Scenes.Shade),
)
}
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment