Index: content/browser/web_contents/web_contents_impl.cc |
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc |
index f7adc26453c33eac9b8c575c80a96287a5813cf1..fdd38e2540374d9c049cd2b5289c77cfacd2dc6a 100644 |
--- a/content/browser/web_contents/web_contents_impl.cc |
+++ b/content/browser/web_contents/web_contents_impl.cc |
@@ -424,9 +424,6 @@ |
frame_tree_.ForEach( |
base::Bind(&RenderFrameHostManager::ClearRFHsPendingShutdown)); |
- // Destroy all WebUI instances. |
- frame_tree_.ForEach(base::Bind(&RenderFrameHostManager::ClearWebUIInstances)); |
- |
ClearAllPowerSaveBlockers(); |
for (std::set<RenderWidgetHostImpl*>::iterator iter = |
@@ -849,13 +846,12 @@ |
} |
WebUI* WebContentsImpl::GetWebUI() const { |
- WebUI* commited_web_ui = GetCommittedWebUI(); |
- return commited_web_ui ? commited_web_ui |
- : GetRenderManager()->GetNavigatingWebUI(); |
+ return GetRenderManager()->web_ui() ? GetRenderManager()->web_ui() |
+ : GetRenderManager()->pending_web_ui(); |
} |
WebUI* WebContentsImpl::GetCommittedWebUI() const { |
- return frame_tree_.root()->current_frame_host()->web_ui(); |
+ return GetRenderManager()->web_ui(); |
} |
void WebContentsImpl::SetUserAgentOverride(const std::string& override) { |
@@ -922,12 +918,8 @@ |
if (entry) { |
return entry->GetTitleForDisplay(accept_languages); |
} |
- |
- WebUI* navigating_web_ui = GetRenderManager()->GetNavigatingWebUI(); |
- WebUI* our_web_ui = navigating_web_ui |
- ? navigating_web_ui |
- : GetRenderManager()->current_frame_host()->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(); |
@@ -3862,6 +3854,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. |
@@ -4276,7 +4280,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; |
@@ -4450,7 +4454,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()))); |