diff options
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. */ |