{Add,Get}Interface() for PendingAssociatedReceiver/AssociatedRemote

This comes from the discussion of crrev/c/1306240. We want to migrate
- AssociatedInterfaceRequest to PendingAssociatedReceiver.
- AssociatedInterfacePtr to AssociatedRemote

However AssociatedInterfaceRegistry and AssociatedInterfaceProvider
don't have such support yet.

Bug: 955171
Change-Id: I350dba2dac66b37cfc59f08daa06b000352b0c1d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1685837
Reviewed-by: Ken Rockot <[email protected]>
Reviewed-by: Arthur Sonzogni <[email protected]>
Reviewed-by: Daniel Cheng <[email protected]>
Commit-Queue: Shimi Zhang <[email protected]>
Cr-Commit-Position: refs/heads/master@{#675743}
diff --git a/content/browser/frame_host/render_frame_host_impl.h b/content/browser/frame_host/render_frame_host_impl.h
index 77dbc25..1231e88 100644
--- a/content/browser/frame_host/render_frame_host_impl.h
+++ b/content/browser/frame_host/render_frame_host_impl.h
@@ -56,6 +56,7 @@
 #include "content/public/common/previews_state.h"
 #include "content/public/common/transferrable_url_loader.mojom.h"
 #include "media/mojo/interfaces/interface_factory.mojom.h"
+#include "mojo/public/cpp/bindings/associated_remote.h"
 #include "mojo/public/cpp/bindings/binding_set.h"
 #include "mojo/public/cpp/bindings/remote.h"
 #include "mojo/public/cpp/system/data_pipe.h"
@@ -1952,7 +1953,7 @@
   mojo::AssociatedBinding<mojom::FrameHost> frame_host_associated_binding_;
   mojom::FramePtr frame_;
   mojom::FrameBindingsControlAssociatedPtr frame_bindings_control_;
-  mojom::FrameNavigationControlAssociatedPtr navigation_control_;
+  mojo::AssociatedRemote<mojom::FrameNavigationControl> navigation_control_;
 
   // If this is true then this object was created in response to a renderer
   // initiated request. Init() will be called, and until then navigation
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index 84e06fc..72582cd4 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -1841,7 +1841,7 @@
       frame_binding_(this),
       host_zoom_binding_(this),
       frame_bindings_control_binding_(this),
-      frame_navigation_control_binding_(this),
+      frame_navigation_control_receiver_(this),
       fullscreen_binding_(this),
       mhtml_file_writer_binding_(this),
       navigation_client_impl_(nullptr),
@@ -2347,9 +2347,9 @@
 }
 
 void RenderFrameImpl::BindFrameNavigationControl(
-    mojom::FrameNavigationControlAssociatedRequest request) {
-  frame_navigation_control_binding_.Bind(
-      std::move(request), GetTaskRunner(blink::TaskType::kInternalIPC));
+    mojo::PendingAssociatedReceiver<mojom::FrameNavigationControl> receiver) {
+  frame_navigation_control_receiver_.Bind(
+      std::move(receiver), GetTaskRunner(blink::TaskType::kInternalIPC));
 }
 
 void RenderFrameImpl::BindNavigationClient(
diff --git a/content/renderer/render_frame_impl.h b/content/renderer/render_frame_impl.h
index 3f45bcc..9fad002 100644
--- a/content/renderer/render_frame_impl.h
+++ b/content/renderer/render_frame_impl.h
@@ -62,6 +62,7 @@
 #include "ipc/ipc_platform_file.h"
 #include "media/base/routing_token_callback.h"
 #include "mojo/public/cpp/bindings/associated_binding.h"
+#include "mojo/public/cpp/bindings/associated_receiver.h"
 #include "mojo/public/cpp/bindings/binding.h"
 #include "mojo/public/cpp/bindings/binding_set.h"
 #include "mojo/public/cpp/system/data_pipe.h"
@@ -904,7 +905,7 @@
   void BindFrameBindingsControl(
       mojom::FrameBindingsControlAssociatedRequest request);
   void BindFrameNavigationControl(
-      mojom::FrameNavigationControlAssociatedRequest request);
+      mojo::PendingAssociatedReceiver<mojom::FrameNavigationControl> receiver);
   // Only used when PerNavigationMojoInterface is enabled.
   void BindNavigationClient(mojom::NavigationClientAssociatedRequest request);
 
@@ -1669,8 +1670,8 @@
   mojo::AssociatedBinding<mojom::HostZoom> host_zoom_binding_;
   mojo::AssociatedBinding<mojom::FrameBindingsControl>
       frame_bindings_control_binding_;
-  mojo::AssociatedBinding<mojom::FrameNavigationControl>
-      frame_navigation_control_binding_;
+  mojo::AssociatedReceiver<mojom::FrameNavigationControl>
+      frame_navigation_control_receiver_;
   mojo::AssociatedBinding<mojom::FullscreenVideoElementHandler>
       fullscreen_binding_;
   mojo::AssociatedBinding<mojom::MhtmlFileWriter> mhtml_file_writer_binding_;