Combine mojom::Frame and FrameNavigationControl, delete FrameFactory

The Frame mojom is removed, and FrameNavigationControl inherits its
members and is renamed to Frame.

The FrameFactory is deleted, and we pass a pending Frame receiver to
the renderer when we create the RenderFrame. Likewise, when a child
frame is created in the renderer, we pass a pending Frame remote to the
browser. Then the Frame mojom interface is present in the browser as
long as the RenderFrame is created (aka render_frame_created_ = true).
This means we remove the concept of pending RenderFrames in the
renderer as well.

This was discussed on chromium-dev@ and navigation-dev@ here:
https://groups.google.com/a/chromium.org/g/navigation-dev/c/ROWqf4OSAc8/m/ayWK5o5HAwAJ

RenderFrameCreated() is now solely responsible for setting up the mojom
bindings pulled off the content::mojom::Frame interface, and assumes
that the remote Frame interface has been given to the RenderFrameHost
before-hand. This should be done as at the time of sending or receiving
and IPC to create the renderer-side Frame, the pending remote is
generated or received in the browser process.

[email protected], [email protected]

Bug: 1158869, 859110
Change-Id: Ibbb91855ea5428d21b6bfe2328fa845eaa4794c5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2593750
Commit-Queue: danakj <[email protected]>
Reviewed-by: Nasko Oskov <[email protected]>
Reviewed-by: Sergey Volk <[email protected]>
Reviewed-by: Daniel Cheng <[email protected]>
Reviewed-by: Dave Tapuska <[email protected]>
Reviewed-by: Jeremy Roman <[email protected]>
Reviewed-by: Avi Drissman <[email protected]>
Cr-Commit-Position: refs/heads/master@{#845282}
diff --git a/content/renderer/render_thread_impl.h b/content/renderer/render_thread_impl.h
index 77b706d..e815d72 100644
--- a/content/renderer/render_thread_impl.h
+++ b/content/renderer/render_thread_impl.h
@@ -104,6 +104,7 @@
 class CategorizedWorkerPool;
 class GpuVideoAcceleratorFactoriesImpl;
 class MediaInterfaceFactory;
+class RenderFrameImpl;
 class RenderThreadObserver;
 class RendererBlinkPlatformImpl;
 class ResourceDispatcher;
@@ -163,6 +164,9 @@
   std::string GetLocale() override;
   IPC::SyncMessageFilter* GetSyncMessageFilter() override;
   void AddRoute(int32_t routing_id, IPC::Listener* listener) override;
+  void AttachTaskRunnerToRoute(
+      int32_t routing_id,
+      scoped_refptr<base::SingleThreadTaskRunner> task_runner) override;
   void RemoveRoute(int32_t routing_id) override;
   int GenerateRoutingID() override;
   bool GenerateFrameRoutingID(