Remove legacy callDrawGlFunction2 from HWUI

Bug: 151439970
Test: CtsUiRenderingTestCases passes

Change-Id: I1c29df17bb6e8b078467edf73cb3547db6948cdd
diff --git a/libs/hwui/tests/common/TestUtils.h b/libs/hwui/tests/common/TestUtils.h
index 91a808d..36c5a8c1 100644
--- a/libs/hwui/tests/common/TestUtils.h
+++ b/libs/hwui/tests/common/TestUtils.h
@@ -287,18 +287,6 @@
 
     static std::unique_ptr<uint16_t[]> asciiToUtf16(const char* str);
 
-    class MockFunctor : public Functor {
-    public:
-        virtual status_t operator()(int what, void* data) {
-            mLastMode = what;
-            return DrawGlInfo::kStatusDone;
-        }
-        int getLastMode() const { return mLastMode; }
-
-    private:
-        int mLastMode = -1;
-    };
-
     static SkColor getColor(const sk_sp<SkSurface>& surface, int x, int y);
 
     static SkRect getClipBounds(const SkCanvas* canvas);
@@ -311,30 +299,32 @@
         int glesDraw = 0;
     };
 
-    static void expectOnRenderThread() { EXPECT_EQ(gettid(), TestUtils::getRenderThreadTid()); }
+    static void expectOnRenderThread(const std::string_view& function = "unknown") {
+        EXPECT_EQ(gettid(), TestUtils::getRenderThreadTid()) << "Called on wrong thread: " << function;
+    }
 
     static WebViewFunctorCallbacks createMockFunctor(RenderMode mode) {
         auto callbacks = WebViewFunctorCallbacks{
                 .onSync =
                         [](int functor, void* client_data, const WebViewSyncData& data) {
-                            expectOnRenderThread();
+                            expectOnRenderThread("onSync");
                             sMockFunctorCounts[functor].sync++;
                         },
                 .onContextDestroyed =
                         [](int functor, void* client_data) {
-                            expectOnRenderThread();
+                            expectOnRenderThread("onContextDestroyed");
                             sMockFunctorCounts[functor].contextDestroyed++;
                         },
                 .onDestroyed =
                         [](int functor, void* client_data) {
-                            expectOnRenderThread();
+                            expectOnRenderThread("onDestroyed");
                             sMockFunctorCounts[functor].destroyed++;
                         },
         };
         switch (mode) {
             case RenderMode::OpenGL_ES:
                 callbacks.gles.draw = [](int functor, void* client_data, const DrawGlInfo& params) {
-                    expectOnRenderThread();
+                    expectOnRenderThread("draw");
                     sMockFunctorCounts[functor].glesDraw++;
                 };
                 break;
diff --git a/libs/hwui/tests/unit/CanvasContextTests.cpp b/libs/hwui/tests/unit/CanvasContextTests.cpp
index 28cff5b..1771c35 100644
--- a/libs/hwui/tests/unit/CanvasContextTests.cpp
+++ b/libs/hwui/tests/unit/CanvasContextTests.cpp
@@ -42,14 +42,3 @@
 
     canvasContext->destroy();
 }
-
-RENDERTHREAD_TEST(CanvasContext, invokeFunctor) {
-    TestUtils::MockFunctor functor;
-    CanvasContext::invokeFunctor(renderThread, &functor);
-    if (Properties::getRenderPipelineType() == RenderPipelineType::SkiaVulkan) {
-        // we currently don't support OpenGL WebViews on the Vulkan backend
-        ASSERT_EQ(functor.getLastMode(), DrawGlInfo::kModeProcessNoContext);
-    } else {
-        ASSERT_EQ(functor.getLastMode(), DrawGlInfo::kModeProcess);
-    }
-}
diff --git a/libs/hwui/tests/unit/RenderNodeTests.cpp b/libs/hwui/tests/unit/RenderNodeTests.cpp
index 1cd9bd8..c19e1ed 100644
--- a/libs/hwui/tests/unit/RenderNodeTests.cpp
+++ b/libs/hwui/tests/unit/RenderNodeTests.cpp
@@ -231,39 +231,41 @@
 }
 
 TEST(RenderNode, releasedCallback) {
-    class DecRefOnReleased : public GlFunctorLifecycleListener {
-    public:
-        explicit DecRefOnReleased(int* refcnt) : mRefCnt(refcnt) {}
-        void onGlFunctorReleased(Functor* functor) override { *mRefCnt -= 1; }
-
-    private:
-        int* mRefCnt;
-    };
-
-    int refcnt = 0;
-    sp<DecRefOnReleased> listener(new DecRefOnReleased(&refcnt));
-    Functor noopFunctor;
+    int functor = WebViewFunctor_create(
+            nullptr, TestUtils::createMockFunctor(RenderMode::OpenGL_ES), RenderMode::OpenGL_ES);
 
     auto node = TestUtils::createNode(0, 0, 200, 400, [&](RenderProperties& props, Canvas& canvas) {
-        refcnt++;
-        canvas.callDrawGLFunction(&noopFunctor, listener.get());
+        canvas.drawWebViewFunctor(functor);
     });
-    TestUtils::syncHierarchyPropertiesAndDisplayList(node);
-    EXPECT_EQ(1, refcnt);
+    TestUtils::runOnRenderThreadUnmanaged([&] (RenderThread&) {
+        TestUtils::syncHierarchyPropertiesAndDisplayList(node);
+    });
+    auto& counts = TestUtils::countsForFunctor(functor);
+    EXPECT_EQ(1, counts.sync);
+    EXPECT_EQ(0, counts.destroyed);
 
     TestUtils::recordNode(*node, [&](Canvas& canvas) {
-        refcnt++;
-        canvas.callDrawGLFunction(&noopFunctor, listener.get());
+        canvas.drawWebViewFunctor(functor);
     });
-    EXPECT_EQ(2, refcnt);
+    EXPECT_EQ(1, counts.sync);
+    EXPECT_EQ(0, counts.destroyed);
 
-    TestUtils::syncHierarchyPropertiesAndDisplayList(node);
-    EXPECT_EQ(1, refcnt);
+    TestUtils::runOnRenderThreadUnmanaged([&] (RenderThread&) {
+        TestUtils::syncHierarchyPropertiesAndDisplayList(node);
+    });
+    EXPECT_EQ(2, counts.sync);
+    EXPECT_EQ(0, counts.destroyed);
+
+    WebViewFunctor_release(functor);
+    EXPECT_EQ(2, counts.sync);
+    EXPECT_EQ(0, counts.destroyed);
 
     TestUtils::recordNode(*node, [](Canvas& canvas) {});
-    EXPECT_EQ(1, refcnt);
-    TestUtils::syncHierarchyPropertiesAndDisplayList(node);
-    EXPECT_EQ(0, refcnt);
+    TestUtils::runOnRenderThreadUnmanaged([&] (RenderThread&) {
+        TestUtils::syncHierarchyPropertiesAndDisplayList(node);
+    });
+    EXPECT_EQ(2, counts.sync);
+    EXPECT_EQ(1, counts.destroyed);
 }
 
 RENDERTHREAD_TEST(RenderNode, prepareTree_nullableDisplayList) {
diff --git a/libs/hwui/tests/unit/SkiaDisplayListTests.cpp b/libs/hwui/tests/unit/SkiaDisplayListTests.cpp
index d08aea6..74a5654 100644
--- a/libs/hwui/tests/unit/SkiaDisplayListTests.cpp
+++ b/libs/hwui/tests/unit/SkiaDisplayListTests.cpp
@@ -48,7 +48,10 @@
     SkCanvas dummyCanvas;
     RenderNodeDrawable drawable(nullptr, &dummyCanvas);
     skiaDL->mChildNodes.emplace_back(nullptr, &dummyCanvas);
-    GLFunctorDrawable functorDrawable(nullptr, nullptr, &dummyCanvas);
+    int functor1 = WebViewFunctor_create(
+            nullptr, TestUtils::createMockFunctor(RenderMode::OpenGL_ES), RenderMode::OpenGL_ES);
+    GLFunctorDrawable functorDrawable{functor1, &dummyCanvas};
+    WebViewFunctor_release(functor1);
     skiaDL->mChildFunctors.push_back(&functorDrawable);
     skiaDL->mMutableImages.push_back(nullptr);
     skiaDL->appendVD(nullptr);
@@ -97,16 +100,13 @@
     SkiaDisplayList skiaDL;
 
     SkCanvas dummyCanvas;
-    TestUtils::MockFunctor functor;
-    GLFunctorDrawable functorDrawable(&functor, nullptr, &dummyCanvas);
-    skiaDL.mChildFunctors.push_back(&functorDrawable);
 
-    int functor2 = WebViewFunctor_create(
+    int functor1 = WebViewFunctor_create(
             nullptr, TestUtils::createMockFunctor(RenderMode::OpenGL_ES), RenderMode::OpenGL_ES);
-    auto& counts = TestUtils::countsForFunctor(functor2);
+    auto& counts = TestUtils::countsForFunctor(functor1);
     skiaDL.mChildFunctors.push_back(
-            skiaDL.allocateDrawable<GLFunctorDrawable>(functor2, &dummyCanvas));
-    WebViewFunctor_release(functor2);
+            skiaDL.allocateDrawable<GLFunctorDrawable>(functor1, &dummyCanvas));
+    WebViewFunctor_release(functor1);
 
     SkRect bounds = SkRect::MakeWH(200, 200);
     VectorDrawableRoot vectorDrawable(new VectorDrawable::Group());
@@ -120,7 +120,6 @@
         });
     });
 
-    EXPECT_EQ(functor.getLastMode(), DrawGlInfo::kModeSync);
     EXPECT_EQ(counts.sync, 1);
     EXPECT_EQ(counts.destroyed, 0);
     EXPECT_EQ(vectorDrawable.mutateProperties()->getBounds(), bounds);