CTS test to verify fix for aggressive SkImageFilter caching
Added test to RenderNodeTests to verify that a child view
that is invalidated will re-generate an SkImage with the
SkImageFilter applied to the updated ViewGroup
Bug: 199242895
Test: this
Change-Id: I8ea7812644fdbbc1564550c9e23db2c41ebe9a49
diff --git a/tests/tests/uirendering/src/android/uirendering/cts/testclasses/RenderNodeTests.java b/tests/tests/uirendering/src/android/uirendering/cts/testclasses/RenderNodeTests.java
index 87a01ba..bed338c 100644
--- a/tests/tests/uirendering/src/android/uirendering/cts/testclasses/RenderNodeTests.java
+++ b/tests/tests/uirendering/src/android/uirendering/cts/testclasses/RenderNodeTests.java
@@ -58,6 +58,7 @@
import java.util.HashSet;
import java.util.Set;
+import java.util.concurrent.CountDownLatch;
@MediumTest
@RunWith(AndroidJUnit4.class)
@@ -620,6 +621,36 @@
);
}
+ @Test
+ public void testRenderEffectOnParentInvalidatesWhenChildChanges() {
+ final CountDownLatch latch = new CountDownLatch(1);
+ createTest()
+ .addLayout(R.layout.frame_layout, (view) -> {
+ FrameLayout root = view.findViewById(R.id.frame_layout);
+ root.setRenderEffect(
+ RenderEffect.createBlurEffect(
+ 30f, 30f, null, Shader.TileMode.CLAMP)
+ );
+ View innerView = new View(view.getContext());
+ innerView.setLayoutParams(
+ new FrameLayout.LayoutParams(TEST_WIDTH, TEST_HEIGHT));
+ innerView.setBackgroundColor(Color.BLUE);
+ root.addView(innerView);
+ root.getViewTreeObserver().registerFrameCommitCallback(
+ new Runnable() {
+ @Override
+ public void run() {
+ innerView.setBackgroundColor(Color.RED);
+ latch.countDown();
+ root.getViewTreeObserver().unregisterFrameCommitCallback(this);
+ }
+ }
+ );
+ }, true, latch)
+ .runWithVerifier(new ColorVerifier(Color.RED)
+ );
+ }
+
private static class TestDrawable extends Drawable {
private final Paint mPaint = new Paint();