Have HWUI validate the WebViewFunctors at registration

Also tweak how webview's plat_support creates the functor
sruct to be thread-safe, avoids any potential race conditions
even though WebView itself is stated to be thread-hostile in
general. It's too easy to have this just be defined-safe instead.

Bug: 186814981
Test: build & boot, no crashes in real-webview apps
Change-Id: I06f02a279e248fee375ce133c5ce9a2250665ad9
diff --git a/libs/hwui/tests/common/TestUtils.h b/libs/hwui/tests/common/TestUtils.h
index cf8fc82..5092675 100644
--- a/libs/hwui/tests/common/TestUtils.h
+++ b/libs/hwui/tests/common/TestUtils.h
@@ -287,6 +287,7 @@
         int sync = 0;
         int contextDestroyed = 0;
         int destroyed = 0;
+        int removeOverlays = 0;
         int glesDraw = 0;
     };
 
@@ -311,6 +312,12 @@
                             expectOnRenderThread("onDestroyed");
                             sMockFunctorCounts[functor].destroyed++;
                         },
+                .removeOverlays =
+                        [](int functor, void* data,
+                           void (*mergeTransaction)(ASurfaceTransaction*)) {
+                            expectOnRenderThread("removeOverlays");
+                            sMockFunctorCounts[functor].removeOverlays++;
+                        },
         };
         switch (mode) {
             case RenderMode::OpenGL_ES:
diff --git a/libs/hwui/tests/unit/main.cpp b/libs/hwui/tests/unit/main.cpp
index 402cb58..10c874e 100644
--- a/libs/hwui/tests/unit/main.cpp
+++ b/libs/hwui/tests/unit/main.cpp
@@ -62,8 +62,10 @@
         gSigChain.insert(pair<int, struct sigaction>(sig, old_sa));
     }
 
-    // Replace the default GLES driver
+    // Avoid talking to SF
     Properties::isolatedProcess = true;
+    // Default to GLES (Vulkan-aware tests will override this)
+    Properties::overrideRenderPipelineType(RenderPipelineType::SkiaGL);
 
     // Run the tests
     testing::InitGoogleTest(&argc, argv);