Convert AwViewMsg_DocumentHasImages[Response] to Mojo message

This CL converts AwViewMsg_DocumentHasImages and
AwViewMsg_DocumentHasImagesResponse to android_webview's
LocalMainFrame interface. The response IPC message was handled
by reply callback.

Bug: 1146492
Change-Id: I03248da153c230e7850d4728bdfd844cd54ca6b0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2563015
Commit-Queue: Gyuyoung Kim <[email protected]>
Reviewed-by: Bo <[email protected]>
Reviewed-by: Kinuko Yasuda <[email protected]>
Reviewed-by: Dave Tapuska <[email protected]>
Cr-Commit-Position: refs/heads/master@{#833107}
diff --git a/android_webview/renderer/aw_render_frame_ext.cc b/android_webview/renderer/aw_render_frame_ext.cc
index fc7de82..14ab5a5 100644
--- a/android_webview/renderer/aw_render_frame_ext.cc
+++ b/android_webview/renderer/aw_render_frame_ext.cc
@@ -228,7 +228,6 @@
 bool AwRenderFrameExt::OnMessageReceived(const IPC::Message& message) {
   bool handled = true;
   IPC_BEGIN_MESSAGE_MAP(AwRenderFrameExt, message)
-    IPC_MESSAGE_HANDLER(AwViewMsg_DocumentHasImages, OnDocumentHasImagesRequest)
     IPC_MESSAGE_HANDLER(AwViewMsg_SetTextZoomFactor, OnSetTextZoomFactor)
     IPC_MESSAGE_HANDLER(AwViewMsg_ResetScrollAndScaleState,
                         OnResetScrollAndScaleState)
@@ -239,20 +238,6 @@
   return handled;
 }
 
-void AwRenderFrameExt::OnDocumentHasImagesRequest(uint32_t id) {
-  blink::WebLocalFrame* frame = render_frame()->GetWebFrame();
-
-  // AwViewMsg_DocumentHasImages should only be sent to the main frame.
-  DCHECK(frame);
-  DCHECK(!frame->Parent());
-
-  const blink::WebElement child_img = GetImgChild(frame->GetDocument());
-  bool has_images = !child_img.IsNull();
-
-  Send(new AwViewHostMsg_DocumentHasImagesResponse(routing_id(), id,
-                                                   has_images));
-}
-
 void AwRenderFrameExt::FocusedElementChanged(const blink::WebElement& element) {
   if (element.IsNull() || !render_frame() || !render_frame()->GetRenderView())
     return;
@@ -341,6 +326,19 @@
   webview->SetBaseBackgroundColor(c);
 }
 
+void AwRenderFrameExt::DocumentHasImage(DocumentHasImageCallback callback) {
+  blink::WebLocalFrame* frame = render_frame()->GetWebFrame();
+
+  // DocumentHasImages Mojo message should only be sent to the main frame.
+  DCHECK(frame);
+  DCHECK(!frame->Parent());
+
+  const blink::WebElement child_img = GetImgChild(frame->GetDocument());
+  bool has_images = !child_img.IsNull();
+
+  std::move(callback).Run(has_images);
+}
+
 void AwRenderFrameExt::OnSmoothScroll(int target_x,
                                       int target_y,
                                       base::TimeDelta duration) {
diff --git a/android_webview/renderer/aw_render_frame_ext.h b/android_webview/renderer/aw_render_frame_ext.h
index 2f83e47..92e8c00 100644
--- a/android_webview/renderer/aw_render_frame_ext.h
+++ b/android_webview/renderer/aw_render_frame_ext.h
@@ -47,8 +47,6 @@
   void FocusedElementChanged(const blink::WebElement& element) override;
   void OnDestruct() override;
 
-  void OnDocumentHasImagesRequest(uint32_t id);
-
   void OnSetTextZoomFactor(float zoom_factor);
 
   void OnResetScrollAndScaleState();
@@ -61,6 +59,7 @@
   void SetBackgroundColor(SkColor c) override;
   void HitTest(const gfx::PointF& touch_center,
                const gfx::SizeF& touch_area) override;
+  void DocumentHasImage(DocumentHasImageCallback callback) override;
 
   void BindLocalMainFrame(
       mojo::PendingAssociatedReceiver<mojom::LocalMainFrame> pending_receiver);