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();