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

Commit d13e70bd authored by Omar Miatello's avatar Omar Miatello
Browse files

[MM] MotionSpecBuilder resets maxLimitSemantics during last iteration

MotionSpecBuilder now resets maxLimitSemantics before applying the last
effect.

Test: atest MotionSpecBuilderTest
Bug: 410524175
Flag: com.android.systemui.scene_container
Change-Id: I12d38f0649b619fae4b56c8ffde36a8c5efce418
parent 4e2331eb
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -99,6 +99,7 @@ internal class MotionSpecBuilderImpl(
            maxLimitKey = key
            maxLimitSpring = spring
            maxLimitGuarantee = guarantee
            maxLimitSemantics = emptyList()
        }

        applyEffect(lastDefinition)
+28 −0
Original line number Diff line number Diff line
@@ -437,4 +437,32 @@ class MotionSpecBuilderTest : MotionBuilderContext by FakeMotionSpecBuilderConte
            .containsExactly("initial", "initial", "second", "second")
            .inOrder()
    }

    @Test
    fun effect_modifyMaxLimitSemantics() {
        val semanticKey = SemanticKey<String>("foo")
        val effect =
            object : Effect {
                override fun EffectApplyScope.createSpec() {
                    unidirectional(
                        Mapping.One,
                        semantics = listOf(SemanticValue(semanticKey, "initial")),
                    )
                    maxLimitSemantics = listOf(SemanticValue(semanticKey, "maxLimit"))
                }
            }

        val result =
            motionSpec(baseMapping = Mapping.Zero, defaultSpring = spatial.default) {
                val effect1 = between(1f, 2f, effect)
                after(effect1, FixedValue(2f))
            }

        assertThat(result)
            .maxDirection()
            .semantics()
            .withKey(semanticKey)
            .containsExactly("initial", "initial", "maxLimit")
            .inOrder()
    }
}