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

Commit 004ee4b2 authored by Selim Cinek's avatar Selim Cinek Committed by Android (Google) Code Review
Browse files

Merge "Switched Physics Animation to internal physics animations" into main

parents ff09b846 11268c3d
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -15,19 +15,22 @@
 */
package com.android.systemui.statusbar.notification

import android.animation.AnimatorTestRule
import android.util.FloatProperty
import android.util.Property
import android.view.View
import androidx.dynamicanimation.animation.DynamicAnimation

import androidx.test.annotation.UiThreadTest
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.internal.dynamicanimation.animation.DynamicAnimation
import com.android.systemui.SysuiTestCase
import com.android.systemui.res.R
import com.android.systemui.statusbar.notification.stack.AnimationProperties
import com.android.systemui.statusbar.notification.stack.ViewState
import org.junit.Assert
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mockito
@@ -50,6 +53,8 @@ class PhysicsPropertyAnimatorTest : SysuiTestCase() {
                return _value
            }
        }
    @get:Rule
    val animatorTestRule = AnimatorTestRule(this)
    private val property: PhysicsProperty =
        PhysicsProperty(R.id.scale_x_animator_tag, effectiveProperty)
    private var finishListener: DynamicAnimation.OnAnimationEndListener? = null
+34 −2
Original line number Diff line number Diff line
@@ -18,9 +18,11 @@ package com.android.systemui.statusbar.notification.stack

import android.platform.test.annotations.DisableFlags
import android.platform.test.annotations.EnableFlags
import android.platform.test.flag.junit.SetFlagsRule
import android.testing.TestableLooper.RunWithLooper
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.Flags
import com.android.systemui.SysuiTestCase
import com.android.systemui.animation.AnimatorTestRule
import com.android.systemui.res.R
@@ -44,6 +46,7 @@ import org.mockito.Mockito.clearInvocations
import org.mockito.Mockito.description
import org.mockito.Mockito.eq
import org.mockito.Mockito.verify
import org.mockito.kotlin.doNothing

private const val VIEW_HEIGHT = 100
private const val FULL_SHADE_APPEAR_TRANSLATION = 300
@@ -53,18 +56,20 @@ private const val HEADS_UP_ABOVE_SCREEN = 80
@RunWith(AndroidJUnit4::class)
@RunWithLooper
class StackStateAnimatorTest : SysuiTestCase() {

    @get:Rule val setFlagsRule = SetFlagsRule()
    @get:Rule val animatorTestRule = AnimatorTestRule(this)

    private lateinit var stackStateAnimator: StackStateAnimator
    private lateinit var headsUpAnimator: HeadsUpAnimator
    private val stackScroller: NotificationStackScrollLayout = mock()
    private val view: ExpandableView = mock()
    private val viewState: ExpandableViewState =
        ExpandableViewState().apply { height = VIEW_HEIGHT }
    private lateinit var viewState: ExpandableViewState
    private val runnableCaptor: ArgumentCaptor<Runnable> = argumentCaptor()

    @Before
    fun setUp() {
        viewState = ExpandableViewState().apply { height = VIEW_HEIGHT }
        overrideResource(
            R.dimen.go_to_full_shade_appearing_translation,
            FULL_SHADE_APPEAR_TRANSLATION,
@@ -153,6 +158,7 @@ class StackStateAnimatorTest : SysuiTestCase() {
            )
    }

    @DisableFlags(Flags.FLAG_PHYSICAL_NOTIFICATION_MOVEMENT)
    @Test
    @EnableFlags(NotificationsHunSharedAnimationValues.FLAG_NAME)
    fun startAnimationForEvents_headsUpFromBottom_startsHeadsUpAppearAnim_flagOn() {
@@ -238,6 +244,32 @@ class StackStateAnimatorTest : SysuiTestCase() {
            .removeFromTransientContainer()
    }

    @EnableFlags(Flags.FLAG_PHYSICAL_NOTIFICATION_MOVEMENT)
    @Test
    fun startAnimationForEvents_startsHeadsUpDisappearAnim_physical() {
        val disappearDuration = ANIMATION_DURATION_HEADS_UP_DISAPPEAR.toLong()
        val event = AnimationEvent(view, AnimationEvent.ANIMATION_TYPE_HEADS_UP_DISAPPEAR)
        clearInvocations(view)
        stackStateAnimator.startAnimationForEvents(arrayListOf(event), 0)

        verify(view)
            .performRemoveAnimation(
                /* duration= */ eq(disappearDuration),
                /* delay= */ eq(0L),
                /* translationDirection= */ eq(0f),
                /* isHeadsUpAnimation= */ eq(true),
                /* isHeadsUpCycling= */ eq(false),
                /* onStartedRunnable= */ any(),
                /* onFinishedRunnable= */ runnableCaptor.capture(),
                /* animationListener= */ any(),
                /* clipSide= */ eq(ExpandableView.ClipSide.BOTTOM),
            )

        runnableCaptor.value.run() // execute the end runnable
        verify(view, description("should be called at the end of the disappear animation"))
            .removeFromTransientContainer()
    }

    @Test
    fun initView_updatesResources() {
        // Given: the resource values are initialized in the SSA
+4 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.systemui.statusbar.notification.stack

import android.animation.AnimatorTestRule
import android.animation.ValueAnimator
import android.view.View
import androidx.test.annotation.UiThreadTest
@@ -28,6 +29,7 @@ import com.android.systemui.statusbar.notification.PhysicsPropertyAnimator
import com.android.systemui.statusbar.notification.PhysicsPropertyAnimator.Companion.TAG_ANIMATOR_TRANSLATION_Y
import com.android.systemui.statusbar.notification.PhysicsPropertyAnimator.Companion.Y_TRANSLATION
import org.junit.Assert
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import kotlin.math.log2
@@ -38,6 +40,8 @@ import kotlin.math.sqrt
@UiThreadTest
class ViewStateTest : SysuiTestCase() {
    private val viewState = ViewState(true /* usePhysicsForMovement */)
    @get:Rule
    val animatorTestRule = AnimatorTestRule(this)

    @Suppress("DIVISION_BY_ZERO")
    @Test
+6 −6
Original line number Diff line number Diff line
@@ -15,12 +15,12 @@
 */
package com.android.systemui.statusbar.notification

import android.util.FloatProperty
import android.util.Property
import android.view.View
import androidx.dynamicanimation.animation.DynamicAnimation
import androidx.dynamicanimation.animation.FloatPropertyCompat
import androidx.dynamicanimation.animation.SpringAnimation
import androidx.dynamicanimation.animation.SpringForce
import com.android.internal.dynamicanimation.animation.DynamicAnimation
import com.android.internal.dynamicanimation.animation.SpringAnimation
import com.android.internal.dynamicanimation.animation.SpringForce
import com.android.systemui.res.R
import com.android.systemui.statusbar.notification.PhysicsPropertyAnimator.Companion.createDefaultSpring
import com.android.systemui.statusbar.notification.stack.AnimationProperties
@@ -33,8 +33,8 @@ import com.android.systemui.statusbar.notification.stack.AnimationProperties
 */
data class PhysicsProperty(val tag: Int, val property: Property<View, Float>) {
    val offsetProperty =
        object : FloatPropertyCompat<View>(property.name) {
            override fun getValue(view: View): Float {
        object : FloatProperty<View>(property.name) {
            override fun get(view: View): Float {
                return property.get(view)
            }

+1 −1
Original line number Diff line number Diff line
@@ -23,7 +23,7 @@ import android.util.Property;
import android.view.View;
import android.view.animation.Interpolator;

import androidx.dynamicanimation.animation.DynamicAnimation;
import com.android.internal.dynamicanimation.animation.DynamicAnimation;

import java.util.function.Consumer;

Loading