summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/DraggableHandler.kt4
-rw-r--r--packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/PredictiveBackHandler.kt4
-rw-r--r--packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayout.kt16
-rw-r--r--packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayoutImpl.kt17
-rw-r--r--packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/OverlayTest.kt63
-rw-r--r--packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/PredictiveBackHandlerTest.kt53
-rw-r--r--packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/subjects/TransitionStateSubject.kt8
-rw-r--r--packages/SystemUI/compose/scene/tests/utils/src/com/android/compose/animation/scene/TestValues.kt2
8 files changed, 5 insertions, 162 deletions
diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/DraggableHandler.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/DraggableHandler.kt
index ab3f6396e5c0..916d85a80e77 100644
--- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/DraggableHandler.kt
+++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/DraggableHandler.kt
@@ -92,10 +92,6 @@ internal class DraggableHandler(
else -> null
} ?: return NoOpDragController
- if (result is UserActionResult.ShowOverlay) {
- layoutImpl.hideOverlays(result.hideCurrentOverlays)
- }
-
val swipeAnimation = createSwipeAnimation(swipes, result)
return updateDragController(swipes, swipeAnimation)
}
diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/PredictiveBackHandler.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/PredictiveBackHandler.kt
index 96d68ff03acd..621166e1823a 100644
--- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/PredictiveBackHandler.kt
+++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/PredictiveBackHandler.kt
@@ -44,10 +44,6 @@ internal fun PredictiveBackHandler(
return@PredictiveBackHandler
}
- if (result is ShowOverlay) {
- layoutImpl.hideOverlays(result.hideCurrentOverlays)
- }
-
val animation =
createSwipeAnimation(
layoutImpl,
diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayout.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayout.kt
index b6294c89cf9f..431a376d8eaf 100644
--- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayout.kt
+++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayout.kt
@@ -607,24 +607,8 @@ sealed class UserActionResult(
val overlay: OverlayKey,
override val transitionKey: TransitionKey? = null,
override val requiresFullDistanceSwipe: Boolean = false,
-
- /** Specify which overlays (if any) should be hidden when this user action is started. */
- val hideCurrentOverlays: HideCurrentOverlays = HideCurrentOverlays.None,
) : UserActionResult(transitionKey, requiresFullDistanceSwipe) {
override fun toContent(currentScene: SceneKey): ContentKey = overlay
-
- sealed class HideCurrentOverlays {
- /** Hide none of the current overlays. */
- object None : HideCurrentOverlays()
-
- /** Hide all current overlays. */
- object All : HideCurrentOverlays()
-
- /** Hide [overlays], for those in that set that are currently shown. */
- class Some(val overlays: Set<OverlayKey>) : HideCurrentOverlays() {
- constructor(vararg overlays: OverlayKey) : this(overlays.toSet())
- }
- }
}
/** A [UserActionResult] that hides [overlay]. */
diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayoutImpl.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayoutImpl.kt
index 6dd74615051e..38ad0a80fd00 100644
--- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayoutImpl.kt
+++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayoutImpl.kt
@@ -48,7 +48,6 @@ import androidx.compose.ui.unit.LayoutDirection
import androidx.compose.ui.util.fastForEach
import androidx.compose.ui.util.fastForEachReversed
import androidx.compose.ui.zIndex
-import com.android.compose.animation.scene.UserActionResult.ShowOverlay.HideCurrentOverlays
import com.android.compose.animation.scene.content.Content
import com.android.compose.animation.scene.content.Overlay
import com.android.compose.animation.scene.content.Scene
@@ -538,27 +537,13 @@ internal class SceneTransitionLayoutImpl(
.sortedBy { it.zIndex }
}
- internal fun hideOverlays(hide: HideCurrentOverlays) {
- fun maybeHide(overlay: OverlayKey) {
- if (state.canHideOverlay(overlay)) {
- state.hideOverlay(overlay, animationScope = this.animationScope)
- }
- }
-
- when (hide) {
- HideCurrentOverlays.None -> {}
- HideCurrentOverlays.All -> HashSet(state.currentOverlays).forEach { maybeHide(it) }
- is HideCurrentOverlays.Some -> hide.overlays.forEach { maybeHide(it) }
- }
- }
-
@VisibleForTesting
internal fun setContentsAndLayoutTargetSizeForTest(size: IntSize) {
lastSize = size
(scenes.values + overlays.values).forEach { it.targetSize = size }
}
- @VisibleForTesting internal fun overlaysOrNullForTest(): Map<OverlayKey, Overlay>? = _overlays
+ internal fun overlaysOrNullForTest(): Map<OverlayKey, Overlay>? = _overlays
}
private data class LayoutElement(private val layoutImpl: SceneTransitionLayoutImpl) :
diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/OverlayTest.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/OverlayTest.kt
index 9f4e044ca735..50bfbfe6d29c 100644
--- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/OverlayTest.kt
+++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/OverlayTest.kt
@@ -33,7 +33,6 @@ import androidx.compose.runtime.snapshotFlow
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.geometry.Offset
-import androidx.compose.ui.platform.LocalViewConfiguration
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.test.SemanticsMatcher
import androidx.compose.ui.test.assertIsDisplayed
@@ -51,10 +50,7 @@ import androidx.compose.ui.unit.dp
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.android.compose.animation.scene.TestOverlays.OverlayA
import com.android.compose.animation.scene.TestOverlays.OverlayB
-import com.android.compose.animation.scene.TestOverlays.OverlayC
-import com.android.compose.animation.scene.TestOverlays.OverlayD
import com.android.compose.animation.scene.TestScenes.SceneA
-import com.android.compose.animation.scene.UserActionResult.ShowOverlay
import com.android.compose.animation.scene.subjects.assertThat
import com.android.compose.test.assertSizeIsEqualTo
import com.android.compose.test.setContentAndCreateMainScope
@@ -825,63 +821,4 @@ class OverlayTest {
assertThat(state.transitionState).isIdle()
assertThat(state.transitionState).hasCurrentOverlays(/* empty */ )
}
-
- @Test
- fun showOverlay_hideAllOverlays() {
- val state =
- rule.runOnUiThread {
- MutableSceneTransitionLayoutStateImpl(
- SceneA,
- initialOverlays = setOf(OverlayA, OverlayB, OverlayC),
- // We don't allow overlay C to be hidden.
- canHideOverlay = { it != OverlayC },
- )
- }
-
- var touchSlop = 0f
- rule.setContent {
- touchSlop = LocalViewConfiguration.current.touchSlop
- SceneTransitionLayout(state) {
- scene(SceneA) { Box(Modifier.fillMaxSize()) }
- overlay(OverlayA) { Box(Modifier.fillMaxSize()) }
- overlay(OverlayB) { Box(Modifier.fillMaxSize()) }
- overlay(
- OverlayC,
- mapOf(
- Swipe.Down to
- ShowOverlay(
- OverlayD,
- hideCurrentOverlays = ShowOverlay.HideCurrentOverlays.All,
- )
- ),
- ) {
- Box(Modifier.fillMaxSize())
- }
- overlay(OverlayD) { Box(Modifier.fillMaxSize()) }
- }
- }
-
- assertThat(state.transitionState).hasCurrentOverlays(OverlayA, OverlayB, OverlayC)
-
- rule.onRoot().performTouchInput {
- down(center)
- moveBy(Offset(0f, touchSlop))
- }
-
- // We closed all overlay, but C can not be hidden.
- val transition = assertThat(state.transitionState).isShowOrHideOverlayTransition()
- assertThat(transition).hasCurrentScene(SceneA)
- assertThat(transition).hasCurrentOverlays(OverlayC)
- assertThat(transition).hasProgress(0f)
- assertThat(transition).hasOverlay(OverlayD)
-
- rule.onRoot().performTouchInput { moveBy(Offset(0f, bottom / 2f)) }
- assertThat(transition).hasProgress(0.5f)
-
- rule.onRoot().performTouchInput { up() }
- rule.waitForIdle()
- assertThat(state.transitionState).isIdle()
- assertThat(state.transitionState).hasCurrentScene(SceneA)
- assertThat(state.transitionState).hasCurrentOverlays(OverlayC, OverlayD)
- }
}
diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/PredictiveBackHandlerTest.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/PredictiveBackHandlerTest.kt
index 0bc52e7ad25e..9f15ebd69657 100644
--- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/PredictiveBackHandlerTest.kt
+++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/PredictiveBackHandlerTest.kt
@@ -32,11 +32,9 @@ import androidx.compose.ui.unit.dp
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.android.compose.animation.scene.TestOverlays.OverlayA
import com.android.compose.animation.scene.TestOverlays.OverlayB
-import com.android.compose.animation.scene.TestOverlays.OverlayC
import com.android.compose.animation.scene.TestScenes.SceneA
import com.android.compose.animation.scene.TestScenes.SceneB
import com.android.compose.animation.scene.TestScenes.SceneC
-import com.android.compose.animation.scene.UserActionResult.ShowOverlay
import com.android.compose.animation.scene.subjects.assertThat
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.CoroutineScope
@@ -275,57 +273,6 @@ class PredictiveBackHandlerTest {
rule.onNode(hasTestTag(OverlayB.testTag)).assertDoesNotExist()
}
- @Test
- fun showOverlay_hideSomeOverlays() {
- val state =
- rule.runOnUiThread {
- MutableSceneTransitionLayoutStateImpl(
- SceneA,
- initialOverlays = setOf(OverlayA, OverlayB),
- )
- }
-
- rule.setContent {
- SceneTransitionLayout(state) {
- scene(SceneA) { Box(Modifier.fillMaxSize()) }
- overlay(OverlayA) { Box(Modifier.fillMaxSize()) }
- overlay(
- OverlayB,
- mapOf(
- Back to
- ShowOverlay(
- OverlayC,
- hideCurrentOverlays = ShowOverlay.HideCurrentOverlays.Some(OverlayA),
- )
- ),
- ) {
- Box(Modifier.fillMaxSize())
- }
- overlay(OverlayC) { Box(Modifier.fillMaxSize()) }
- }
- }
-
- assertThat(state.transitionState).hasCurrentOverlays(OverlayA, OverlayB)
-
- val dispatcher = rule.activity.onBackPressedDispatcher
- rule.runOnUiThread { dispatcher.dispatchOnBackStarted(backEvent()) }
-
- val transition = assertThat(state.transitionState).isShowOrHideOverlayTransition()
- assertThat(transition).hasCurrentScene(SceneA)
- assertThat(transition).hasCurrentOverlays(OverlayB)
- assertThat(transition).hasProgress(0f)
- assertThat(transition).hasOverlay(OverlayC)
-
- rule.runOnUiThread { dispatcher.dispatchOnBackProgressed(backEvent(progress = 0.5f)) }
- assertThat(transition).hasProgress(0.5f)
-
- rule.runOnUiThread { dispatcher.onBackPressed() }
- rule.waitForIdle()
- assertThat(state.transitionState).isIdle()
- assertThat(state.transitionState).hasCurrentScene(SceneA)
- assertThat(state.transitionState).hasCurrentOverlays(OverlayB, OverlayC)
- }
-
private fun backEvent(progress: Float = 0f): BackEventCompat {
return BackEventCompat(
touchX = 0f,
diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/subjects/TransitionStateSubject.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/subjects/TransitionStateSubject.kt
index 0bd51cd9822d..8db7dbca2474 100644
--- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/subjects/TransitionStateSubject.kt
+++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/subjects/TransitionStateSubject.kt
@@ -129,22 +129,22 @@ abstract class BaseTransitionSubject<T : TransitionState.Transition>(
check("currentOverlays").that(actual.currentOverlays).containsExactlyElementsIn(overlays)
}
- fun hasProgress(progress: Float, tolerance: Float = 0.01f) {
+ fun hasProgress(progress: Float, tolerance: Float = 0f) {
check("progress").that(actual.progress).isWithin(tolerance).of(progress)
}
- fun hasProgressVelocity(progressVelocity: Float, tolerance: Float = 0.01f) {
+ fun hasProgressVelocity(progressVelocity: Float, tolerance: Float = 0f) {
check("progressVelocity")
.that(actual.progressVelocity)
.isWithin(tolerance)
.of(progressVelocity)
}
- fun hasPreviewProgress(progress: Float, tolerance: Float = 0.01f) {
+ fun hasPreviewProgress(progress: Float, tolerance: Float = 0f) {
check("previewProgress").that(actual.previewProgress).isWithin(tolerance).of(progress)
}
- fun hasPreviewProgressVelocity(progressVelocity: Float, tolerance: Float = 0.01f) {
+ fun hasPreviewProgressVelocity(progressVelocity: Float, tolerance: Float = 0f) {
check("previewProgressVelocity")
.that(actual.previewProgressVelocity)
.isWithin(tolerance)
diff --git a/packages/SystemUI/compose/scene/tests/utils/src/com/android/compose/animation/scene/TestValues.kt b/packages/SystemUI/compose/scene/tests/utils/src/com/android/compose/animation/scene/TestValues.kt
index 3067fb6604b6..95ef2ce821e1 100644
--- a/packages/SystemUI/compose/scene/tests/utils/src/com/android/compose/animation/scene/TestValues.kt
+++ b/packages/SystemUI/compose/scene/tests/utils/src/com/android/compose/animation/scene/TestValues.kt
@@ -33,8 +33,6 @@ object TestScenes {
object TestOverlays {
val OverlayA = OverlayKey("OverlayA")
val OverlayB = OverlayKey("OverlayB")
- val OverlayC = OverlayKey("OverlayC")
- val OverlayD = OverlayKey("OverlayD")
}
/** Element keys that can be reused by tests. */