Revert of Move WebUI ownership from the RenderFrameHostManager to the RenderFrameHost. (patchset #37 id:900001 of https://codereview.chromium.org/1352813006/ )

Reason for revert:
Due to crashes in RenderFrameHostManager::CheckWebUITransition.

Original issue's description:
> Move WebUI ownership from the RenderFrameHostManager to the RenderFrameHost.
>
> This change refactors the current ownership of the WebUI instance,
> moving it from the RenderFrameHostManager to the RenderFrameHost which
> is directly associated with the WebUI.
>
> The design document for this change is here:
> https://docs.google.com/a/chromium.org/document/d/1jrge5ulZ1YtqSR3WkNXzrtxhd3JXcWm8_zWBhEjaJtI
>
> BUG=508850
>
> Committed: https://crrev.com/e5c678bf5b084988a60a4636342414f2831c1695
> Cr-Commit-Position: refs/heads/master@{#358050}

[email protected],[email protected],[email protected],[email protected]
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=508850

Review URL: https://codereview.chromium.org/1422043007

Cr-Commit-Position: refs/heads/master@{#358297}
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index 6db55ed..e979525 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -841,9 +841,8 @@
 }
 
 WebUI* WebContentsImpl::GetWebUI() const {
-  return GetRenderManager()->web_ui()
-             ? GetRenderManager()->web_ui()
-             : GetRenderManager()->GetNavigatingWebUI();
+  return GetRenderManager()->web_ui() ? GetRenderManager()->web_ui()
+      : GetRenderManager()->pending_web_ui();
 }
 
 WebUI* WebContentsImpl::GetCommittedWebUI() const {
@@ -914,9 +913,8 @@
   if (entry) {
     return entry->GetTitleForDisplay(accept_languages);
   }
-  WebUI* our_web_ui = GetRenderManager()->GetNavigatingWebUI()
-                          ? GetRenderManager()->GetNavigatingWebUI()
-                          : GetRenderManager()->web_ui();
+  WebUI* our_web_ui = GetRenderManager()->pending_web_ui() ?
+      GetRenderManager()->pending_web_ui() : GetRenderManager()->web_ui();
   if (our_web_ui) {
     // Don't override the title in view source mode.
     entry = controller_.GetVisibleEntry();
@@ -3792,6 +3790,18 @@
       Source<WebContents>(this),
       Details<RenderViewHost>(render_view_host));
 
+  // When we're creating views, we're still doing initial setup, so we always
+  // use the pending Web UI rather than any possibly existing committed one.
+  if (GetRenderManager()->pending_web_ui())
+    GetRenderManager()->pending_web_ui()->RenderViewCreated(render_view_host);
+
+  if (base::CommandLine::ForCurrentProcess()->HasSwitch(
+          switches::kEnableBrowserSideNavigation) &&
+      GetRenderManager()->speculative_web_ui()) {
+    GetRenderManager()->speculative_web_ui()->RenderViewCreated(
+        render_view_host);
+  }
+
   NavigationEntry* entry = controller_.GetPendingEntry();
   if (entry && entry->IsViewSourceMode()) {
     // Put the renderer in view source mode.
@@ -4245,7 +4255,7 @@
     GetRenderManager()->CreateRenderFrameProxy(instance);
   } else {
     GetRenderManager()->CreateRenderFrame(
-        instance, CREATE_RF_SWAPPED_OUT | CREATE_RF_HIDDEN,
+        instance, nullptr, CREATE_RF_SWAPPED_OUT | CREATE_RF_HIDDEN,
         &render_view_routing_id);
   }
   return render_view_routing_id;
@@ -4412,7 +4422,7 @@
   return GetController();
 }
 
-scoped_ptr<WebUIImpl> WebContentsImpl::CreateWebUIForRenderFrameHost(
+scoped_ptr<WebUIImpl> WebContentsImpl::CreateWebUIForRenderManager(
     const GURL& url) {
   return scoped_ptr<WebUIImpl>(static_cast<WebUIImpl*>(CreateWebUI(
       url, std::string())));