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

Commit 805da853 authored by omarmt's avatar omarmt Committed by Omar Miatello
Browse files

Do not reset roundness on ExpandableOutlineView.initDimens()

Manual test steps:
- Post some notifications in different sections
- Change the wallpaper of your device
Previous behavior: Notifications no longer stayed rounded
New behavior: Notifications remain rounded

Test: atest ActivatableNotificationViewTest.roundnessShouldBeTheSame_after_onDensityOrFontScale()
Bug: 262573700
Change-Id: I12550d1201b8e43ca7af92a1ba5fd1e164446bd0
parent a5d6da85
Loading
Loading
Loading
Loading
+12 −2
Original line number Diff line number Diff line
@@ -306,9 +306,12 @@ interface Roundable {
 */
class RoundableState(
    internal val targetView: View,
    roundable: Roundable,
    internal val maxRadius: Float,
    private val roundable: Roundable,
    maxRadius: Float,
) {
    internal var maxRadius = maxRadius
        private set

    /** Animatable for top roundness */
    private val topAnimatable = topAnimatable(roundable)

@@ -356,6 +359,13 @@ class RoundableState(
        PropertyAnimator.setProperty(targetView, bottomAnimatable, value, DURATION, animated)
    }

    fun setMaxRadius(radius: Float) {
        if (maxRadius != radius) {
            maxRadius = radius
            roundable.applyRoundnessAndInvalidate()
        }
    }

    fun debugString() = buildString {
        append("TargetView: ${targetView.hashCode()} ")
        append("Top: $topRoundness ")
+5 −1
Original line number Diff line number Diff line
@@ -214,7 +214,11 @@ public abstract class ExpandableOutlineView extends ExpandableView {
        } else {
            maxRadius = res.getDimensionPixelSize(R.dimen.notification_corner_radius);
        }
        if (mRoundableState == null) {
            mRoundableState = new RoundableState(this, this, maxRadius);
        } else {
            mRoundableState.setMaxRadius(maxRadius);
        }
        setClipToOutline(mAlwaysRoundBothCorners);
    }

+14 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import com.android.systemui.R
import com.android.systemui.SysuiTestCase
import com.android.systemui.statusbar.notification.FakeShadowView
import com.android.systemui.statusbar.notification.NotificationUtils
import com.android.systemui.statusbar.notification.SourceType
import com.android.systemui.util.mockito.mock
import com.google.common.truth.Truth.assertThat
import org.junit.Before
@@ -83,4 +84,17 @@ class ActivatableNotificationViewTest : SysuiTestCase() {
        mView.updateBackgroundColors()
        assertThat(mView.currentBackgroundTint).isEqualTo(mNormalColor)
    }

    @Test
    fun roundnessShouldBeTheSame_after_onDensityOrFontScaleChanged() {
        val roundableState = mView.roundableState
        assertThat(mView.topRoundness).isEqualTo(0f)
        mView.requestTopRoundness(1f, SourceType.from(""))
        assertThat(mView.topRoundness).isEqualTo(1f)

        mView.onDensityOrFontScaleChanged()

        assertThat(mView.topRoundness).isEqualTo(1f)
        assertThat(mView.roundableState.hashCode()).isEqualTo(roundableState.hashCode())
    }
}
 No newline at end of file