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

Commit 0052a4fd authored by Jordan Demeulenaere's avatar Jordan Demeulenaere Committed by Automerger Merge Worker
Browse files

Merge "Set Shade opaqueness on devices that don't support blurs" into sc-v2-dev am: aa67cba3

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

Change-Id: I006fd7dd99f957d814e67a733f4e131c4c7d0bb4
parents db34a4aa aa67cba3
Loading
Loading
Loading
Loading
+11 −10
Original line number Diff line number Diff line
@@ -80,22 +80,23 @@ open class BlurUtils @Inject constructor(
     * @param opaque if surface is opaque, regardless or having blurs or no.
     */
    fun applyBlur(viewRootImpl: ViewRootImpl?, radius: Int, opaque: Boolean) {
        if (viewRootImpl == null || !viewRootImpl.surfaceControl.isValid ||
                !supportsBlursOnWindows()) {
        if (viewRootImpl == null || !viewRootImpl.surfaceControl.isValid) {
            return
        }
        createTransaction().use {
            if (supportsBlursOnWindows()) {
                it.setBackgroundBlurRadius(viewRootImpl.surfaceControl, radius)
            it.setOpaque(viewRootImpl.surfaceControl, opaque)
                if (lastAppliedBlur == 0 && radius != 0) {
                    it.setEarlyWakeupStart()
                }
                if (lastAppliedBlur != 0 && radius == 0) {
                    it.setEarlyWakeupEnd()
                }
                lastAppliedBlur = radius
            }
            it.setOpaque(viewRootImpl.surfaceControl, opaque)
            it.apply()
        }
        lastAppliedBlur = radius
    }

    @VisibleForTesting
+23 −4
Original line number Diff line number Diff line
@@ -27,9 +27,12 @@ import org.junit.Before
import org.junit.Test
import org.mockito.Mock
import org.mockito.Mockito.`when`
import org.mockito.Mockito.any
import org.mockito.Mockito.anyInt
import org.mockito.Mockito.clearInvocations
import org.mockito.Mockito.eq
import org.mockito.Mockito.mock
import org.mockito.Mockito.never
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations

@@ -40,12 +43,11 @@ class BlurUtilsTest : SysuiTestCase() {
    @Mock lateinit var dumpManager: DumpManager
    @Mock lateinit var transaction: SurfaceControl.Transaction
    @Mock lateinit var crossWindowBlurListeners: CrossWindowBlurListeners
    lateinit var blurUtils: BlurUtils
    lateinit var blurUtils: TestableBlurUtils

    @Before
    fun setup() {
        MockitoAnnotations.initMocks(this)
        `when`(crossWindowBlurListeners.isCrossWindowBlurEnabled).thenReturn(true)
        blurUtils = TestableBlurUtils()
    }

@@ -75,6 +77,21 @@ class BlurUtilsTest : SysuiTestCase() {
        verify(transaction).apply()
    }

    @Test
    fun testApplyBlur_blurDisabled() {
        val radius = 10
        val surfaceControl = mock(SurfaceControl::class.java)
        val viewRootImpl = mock(ViewRootImpl::class.java)
        `when`(viewRootImpl.surfaceControl).thenReturn(surfaceControl)
        `when`(surfaceControl.isValid).thenReturn(true)

        blurUtils.blursEnabled = false
        blurUtils.applyBlur(viewRootImpl, radius, true /* opaque */)
        verify(transaction).setOpaque(eq(surfaceControl), eq(true))
        verify(transaction, never()).setBackgroundBlurRadius(any(), anyInt())
        verify(transaction).apply()
    }

    @Test
    fun testEarlyWakeUp() {
        val radius = 10
@@ -89,9 +106,11 @@ class BlurUtilsTest : SysuiTestCase() {
        verify(transaction).setEarlyWakeupEnd()
    }

    inner class TestableBlurUtils() : BlurUtils(resources, crossWindowBlurListeners, dumpManager) {
    inner class TestableBlurUtils : BlurUtils(resources, crossWindowBlurListeners, dumpManager) {
        var blursEnabled = true

        override fun supportsBlursOnWindows(): Boolean {
            return true
            return blursEnabled
        }

        override fun createTransaction(): SurfaceControl.Transaction {