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())));