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

This commit is contained in:
Jordan Demeulenaere
2021-11-15 10:36:55 +00:00
committed by Android (Google) Code Review
2 changed files with 34 additions and 14 deletions

View File

@@ -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 {
it.setBackgroundBlurRadius(viewRootImpl.surfaceControl, radius)
if (supportsBlursOnWindows()) {
it.setBackgroundBlurRadius(viewRootImpl.surfaceControl, radius)
if (lastAppliedBlur == 0 && radius != 0) {
it.setEarlyWakeupStart()
}
if (lastAppliedBlur != 0 && radius == 0) {
it.setEarlyWakeupEnd()
}
lastAppliedBlur = radius
}
it.setOpaque(viewRootImpl.surfaceControl, opaque)
if (lastAppliedBlur == 0 && radius != 0) {
it.setEarlyWakeupStart()
}
if (lastAppliedBlur != 0 && radius == 0) {
it.setEarlyWakeupEnd()
}
it.apply()
}
lastAppliedBlur = radius
}
@VisibleForTesting

View File

@@ -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 {