Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ece6cd58 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Refactor MotionValueDebugger to use CompositionLocal" into main

parents 5a82e7f7 f945a4cc
Loading
Loading
Loading
Loading
+9 −10
Original line number Diff line number Diff line
@@ -41,7 +41,7 @@ import androidx.compose.ui.unit.Constraints
import androidx.compose.ui.unit.dp
import com.android.mechanics.DistanceGestureContext
import com.android.mechanics.MotionValue
import com.android.mechanics.debug.findMotionValueDebugger
import com.android.mechanics.debug.DebugMotionValueNode
import com.android.mechanics.effects.MagneticDetach
import com.android.mechanics.effects.MagneticDetach.Defaults.AttachDetachState
import com.android.mechanics.spec.InputDirection
@@ -140,6 +140,10 @@ private class OverscrollToDismissNode(
            spec = spec::value,
        )

    init {
        delegate(DebugMotionValueNode(motionValue))
    }

    private var delegateNode =
        delegate(NestedDraggableRootNode(this, orientation, null, enabled, true))

@@ -220,16 +224,11 @@ private class OverscrollToDismissNode(
    }

    private suspend fun keepRunningUntilDismissed() {
        val debuggerHandle = findMotionValueDebugger()?.register(motionValue)
        try {
        motionValue.keepRunningWhile {
            val isDismissed = get(isDismissedState) ?: false
            !(isDismissed && isStable)
        }
        onDismissed()
        } finally {
            debuggerHandle?.dispose()
        }
    }

    companion object {
+31 −30
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import androidx.compose.foundation.pager.HorizontalPager
import androidx.compose.foundation.pager.PagerState
import androidx.compose.foundation.pager.rememberPagerState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.ui.Modifier
import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.graphics.Color
@@ -41,8 +42,8 @@ import androidx.compose.ui.test.swipeRight
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.android.mechanics.debug.MotionValueDebuggerState
import com.android.mechanics.debug.motionValueDebugger
import com.android.mechanics.debug.LocalMotionValueDebugController
import com.android.mechanics.debug.MotionValueDebugController
import com.android.mechanics.spec.builder.rememberMotionBuilderContext
import com.google.common.truth.Truth.assertThat
import kotlin.math.sin
@@ -148,7 +149,7 @@ class OverscrollToDismissTest {
        }

    private fun performGesture(gestureControl: TouchInjectionScope.() -> Unit) = MotionControl {
        val debugInspector = debugger.observedMotionValues.single().debugInspector()
        val debugInspector = debugger.observed.single().debugInspector()
        try {
            performTouchInputAsync(onNodeWithTag("DismissContainer")) { gestureControl() }
            awaitCondition { !debugInspector.isAnimating && !pagerState.isScrollInProgress }
@@ -158,7 +159,7 @@ class OverscrollToDismissTest {
    }

    private var isDismissed = false
    private val debugger = MotionValueDebuggerState()
    private val debugger = MotionValueDebugController()
    private lateinit var pagerState: PagerState

    @Composable
@@ -169,11 +170,10 @@ class OverscrollToDismissTest {
        isSwipingEnabled: Boolean = true,
    ) {
        pagerState = rememberPagerState(initialPage) { pageCount }

        CompositionLocalProvider(LocalMotionValueDebugController provides debugger) {
            Box(
                modifier =
                Modifier.motionValueDebugger(debugger)
                    .size(150.dp, 100.dp)
                    Modifier.size(150.dp, 100.dp)
                        .background(Color.Blue)
                        .testTag("DismissContainer")
                        .overscrollToDismiss(
@@ -199,6 +199,7 @@ class OverscrollToDismissTest {
                }
            }
        }
    }

    companion object {
        val xPositionInRoot =