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

Commit 5c6b4901 authored by Hawkwood Glazier's avatar Hawkwood Glazier Committed by Automerger Merge Worker
Browse files

Merge "Squishy ViewState no longer mutates global album art widgetState" into...

Merge "Squishy ViewState no longer mutates global album art widgetState" into tm-dev am: 4b337846 am: d337273f

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18185716



Change-Id: I3c06bf6bfd9a914a1c12b4329a6d77608c5f9ec5
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 6d078758 d337273f
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -278,13 +278,14 @@ class MediaViewController @Inject constructor(
    /**
     * Apply squishFraction to a copy of viewState such that the cached version is untouched.
     */
    private fun squishViewState(
    @VisibleForTesting
    internal fun squishViewState(
        viewState: TransitionViewState,
        squishFraction: Float
    ): TransitionViewState {
        val squishedViewState = viewState.copy()
        squishedViewState.height = (squishedViewState.height * squishFraction).toInt()
        val albumArtViewState = viewState.widgetStates.get(R.id.album_art)
        val albumArtViewState = squishedViewState.widgetStates.get(R.id.album_art)
        if (albumArtViewState != null) {
            albumArtViewState.height = squishedViewState.height
        }
@@ -317,6 +318,7 @@ class MediaViewController @Inject constructor(
        if (transitionLayout == null) {
            return null
        }

        // Not cached. Let's create a new measurement
        if (state.expansion == 0.0f || state.expansion == 1.0f) {
            result = transitionLayout!!.calculateViewState(
+20 −0
Original line number Diff line number Diff line
@@ -4,16 +4,22 @@ import android.testing.AndroidTestingRunner
import android.testing.TestableLooper
import android.view.View
import androidx.test.filters.SmallTest
import com.android.systemui.R
import com.android.systemui.SysuiTestCase
import com.android.systemui.util.animation.MeasurementInput
import com.android.systemui.util.animation.TransitionLayout
import com.android.systemui.util.animation.TransitionViewState
import com.android.systemui.util.animation.WidgetState
import junit.framework.Assert.assertTrue
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.Mockito.times
import org.mockito.Mockito.verify
import org.mockito.Mockito.verifyNoMoreInteractions
import org.mockito.MockitoAnnotations
import org.mockito.Mockito.`when` as whenever

/**
 * Tests for {@link MediaViewController}.
@@ -31,6 +37,9 @@ class MediaViewControllerTest : SysuiTestCase() {
    private lateinit var mediaViewController: MediaViewController
    private val mediaHostStateHolder = MediaHost.MediaHostStateHolder()
    private var transitionLayout = TransitionLayout(context, /* attrs */ null, /* defStyleAttr */ 0)
    @Mock private lateinit var mockViewState: TransitionViewState
    @Mock private lateinit var mockCopiedState: TransitionViewState
    @Mock private lateinit var mockWidgetState: WidgetState

    @Before
    fun setUp() {
@@ -63,4 +72,15 @@ class MediaViewControllerTest : SysuiTestCase() {
        mediaHostStateHolder.squishFraction = 0.5f
        assertTrue(mediaViewController.obtainViewState(mediaHostStateHolder)!!.height == 50)
    }

    @Test
    fun testSquish_DoesNotMutateViewState() {
        whenever(mockViewState.copy()).thenReturn(mockCopiedState)
        whenever(mockCopiedState.widgetStates)
            .thenReturn(mutableMapOf(R.id.album_art to mockWidgetState))

        mediaViewController.squishViewState(mockViewState, 0.5f)
        verify(mockViewState, times(1)).copy()
        verifyNoMoreInteractions(mockViewState)
    }
}
 No newline at end of file