Convert AwViewMsg_ResetScrollAndScaleState to Mojo

This CL migrates AwViewMsg_ResetScrollAndScaleState to
LocalMainFrame interface.

Bug: 1157122
Change-Id: I353739146052f471d2f45bbfd7b0d579cd2f0772
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2583588
Commit-Queue: Gyuyoung Kim <[email protected]>
Reviewed-by: Dave Tapuska <[email protected]>
Reviewed-by: Bo <[email protected]>
Reviewed-by: Kinuko Yasuda <[email protected]>
Cr-Commit-Position: refs/heads/master@{#836391}
diff --git a/android_webview/browser/renderer_host/aw_render_view_host_ext.cc b/android_webview/browser/renderer_host/aw_render_view_host_ext.cc
index ed883fad..a4b36a8 100644
--- a/android_webview/browser/renderer_host/aw_render_view_host_ext.cc
+++ b/android_webview/browser/renderer_host/aw_render_view_host_ext.cc
@@ -82,8 +82,8 @@
 
 void AwRenderViewHostExt::ResetScrollAndScaleState() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-  web_contents()->GetMainFrame()->Send(new AwViewMsg_ResetScrollAndScaleState(
-      web_contents()->GetMainFrame()->GetRoutingID()));
+  if (local_main_frame_remote_)
+    local_main_frame_remote_->ResetScrollAndScaleState();
 }
 
 void AwRenderViewHostExt::SetInitialPageScale(double page_scale_factor) {
diff --git a/android_webview/common/mojom/frame.mojom b/android_webview/common/mojom/frame.mojom
index 5b0568f..f1bb8ba 100644
--- a/android_webview/common/mojom/frame.mojom
+++ b/android_webview/common/mojom/frame.mojom
@@ -95,6 +95,11 @@
   // Requests for the renderer to determine if the document contains any image
   // elements.
   DocumentHasImage() => (bool has_images);
+
+  // Resets Blink WebView scrolling and scale state. We need to call this
+  // method whenever we want to guarantee that page's scale will be recalculated
+  // by Blink.
+  ResetScrollAndScaleState();
 };
 
 // Similar to blink::mojom::FrameHost. Implemented in Browser, this
diff --git a/android_webview/common/render_view_messages.h b/android_webview/common/render_view_messages.h
index 00d0949..20c2f625 100644
--- a/android_webview/common/render_view_messages.h
+++ b/android_webview/common/render_view_messages.h
@@ -20,11 +20,6 @@
 // RenderView messages
 // These are messages sent from the browser to the renderer process.
 
-// Resets WebKit WebView scrolling and scale state. We need to send this
-// message whenever we want to guarantee that page's scale will be
-// recalculated by WebKit.
-IPC_MESSAGE_ROUTED0(AwViewMsg_ResetScrollAndScaleState)
-
 // Sets the initial page scale. This overrides initial scale set by
 // the meta viewport tag.
 IPC_MESSAGE_ROUTED1(AwViewMsg_SetInitialPageScale,
diff --git a/android_webview/renderer/aw_render_frame_ext.cc b/android_webview/renderer/aw_render_frame_ext.cc
index 8d5401ed..80ae8f3 100644
--- a/android_webview/renderer/aw_render_frame_ext.cc
+++ b/android_webview/renderer/aw_render_frame_ext.cc
@@ -240,8 +240,6 @@
 bool AwRenderFrameExt::OnMessageReceived(const IPC::Message& message) {
   bool handled = true;
   IPC_BEGIN_MESSAGE_MAP(AwRenderFrameExt, message)
-    IPC_MESSAGE_HANDLER(AwViewMsg_ResetScrollAndScaleState,
-                        OnResetScrollAndScaleState)
     IPC_MESSAGE_HANDLER(AwViewMsg_SetInitialPageScale, OnSetInitialPageScale)
     IPC_MESSAGE_HANDLER(AwViewMsg_SmoothScroll, OnSmoothScroll)
     IPC_MESSAGE_UNHANDLED(handled = false)
@@ -300,14 +298,6 @@
   GetFrameHost()->UpdateHitTestData(std::move(data));
 }
 
-void AwRenderFrameExt::OnResetScrollAndScaleState() {
-  blink::WebView* webview = GetWebView();
-  if (!webview)
-    return;
-
-  webview->ResetScrollAndScaleState();
-}
-
 void AwRenderFrameExt::OnSetInitialPageScale(double page_scale_factor) {
   blink::WebView* webview = GetWebView();
   if (!webview)
@@ -362,6 +352,14 @@
   webview->SmoothScroll(target_x, target_y, duration);
 }
 
+void AwRenderFrameExt::ResetScrollAndScaleState() {
+  blink::WebView* webview = GetWebView();
+  if (!webview)
+    return;
+
+  webview->ResetScrollAndScaleState();
+}
+
 blink::WebView* AwRenderFrameExt::GetWebView() {
   if (!render_frame() || !render_frame()->GetRenderView() ||
       !render_frame()->GetRenderView()->GetWebView())
diff --git a/android_webview/renderer/aw_render_frame_ext.h b/android_webview/renderer/aw_render_frame_ext.h
index 3b1e2f8..6b7cd6f 100644
--- a/android_webview/renderer/aw_render_frame_ext.h
+++ b/android_webview/renderer/aw_render_frame_ext.h
@@ -48,8 +48,6 @@
   void FocusedElementChanged(const blink::WebElement& element) override;
   void OnDestruct() override;
 
-  void OnResetScrollAndScaleState();
-
   void OnSetInitialPageScale(double page_scale_factor);
 
   void OnSmoothScroll(int target_x, int target_y, base::TimeDelta duration);
@@ -60,6 +58,7 @@
   void HitTest(const gfx::PointF& touch_center,
                const gfx::SizeF& touch_area) override;
   void DocumentHasImage(DocumentHasImageCallback callback) override;
+  void ResetScrollAndScaleState() override;
 
   void BindLocalMainFrame(
       mojo::PendingAssociatedReceiver<mojom::LocalMainFrame> pending_receiver);