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

Commit aa67cba3 authored by Jordan Demeulenaere's avatar Jordan Demeulenaere Committed by Android (Google) Code Review
Browse files

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

parents b5827095 4dcdafc4
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 {