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 fdd38e2540374d9c049cd2b5289c77cfacd2dc6a..f7d3e861cc7f144c3ac53e883536141ed3beac99 100644 |
--- a/content/browser/web_contents/web_contents_impl.cc |
+++ b/content/browser/web_contents/web_contents_impl.cc |
@@ -424,6 +424,9 @@ WebContentsImpl::~WebContentsImpl() { |
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 = |
@@ -846,12 +849,12 @@ WebUI* WebContentsImpl::CreateSubframeWebUI(const GURL& url, |
} |
WebUI* WebContentsImpl::GetWebUI() const { |
- return GetRenderManager()->web_ui() ? GetRenderManager()->web_ui() |
- : GetRenderManager()->pending_web_ui(); |
+ return GetCommittedWebUI() ? GetCommittedWebUI() |
nasko
2015/11/18 23:48:04
nit: Why not assign it to WebUI* and avoid the two
carlosk
2015/11/19 16:49:14
Done.
|
+ : GetRenderManager()->GetNavigatingWebUI(); |
} |
WebUI* WebContentsImpl::GetCommittedWebUI() const { |
- return GetRenderManager()->web_ui(); |
+ return frame_tree_.root()->current_frame_host()->web_ui(); |
} |
void WebContentsImpl::SetUserAgentOverride(const std::string& override) { |
@@ -918,8 +921,11 @@ const base::string16& WebContentsImpl::GetTitle() const { |
if (entry) { |
return entry->GetTitleForDisplay(accept_languages); |
} |
- WebUI* our_web_ui = GetRenderManager()->pending_web_ui() ? |
- GetRenderManager()->pending_web_ui() : GetRenderManager()->web_ui(); |
+ |
+ WebUI* our_web_ui = GetRenderManager()->GetNavigatingWebUI() |
+ ? GetRenderManager()->GetNavigatingWebUI() |
+ : GetRenderManager()->current_frame_host()->web_ui(); |
nasko
2015/11/18 23:48:04
Same as above.
carlosk
2015/11/19 16:49:14
Done.
|
+ |
if (our_web_ui) { |
// Don't override the title in view source mode. |
entry = controller_.GetVisibleEntry(); |
@@ -3854,18 +3860,6 @@ void WebContentsImpl::RenderViewCreated(RenderViewHost* render_view_host) { |
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. |
@@ -4280,7 +4274,7 @@ int WebContentsImpl::CreateSwappedOutRenderView( |
GetRenderManager()->CreateRenderFrameProxy(instance); |
} else { |
GetRenderManager()->CreateRenderFrame( |
- instance, nullptr, CREATE_RF_SWAPPED_OUT | CREATE_RF_HIDDEN, |
+ instance, CREATE_RF_SWAPPED_OUT | CREATE_RF_HIDDEN, |
&render_view_routing_id); |
} |
return render_view_routing_id; |
@@ -4454,7 +4448,7 @@ NavigationControllerImpl& WebContentsImpl::GetControllerForRenderManager() { |
return GetController(); |
} |
-scoped_ptr<WebUIImpl> WebContentsImpl::CreateWebUIForRenderManager( |
+scoped_ptr<WebUIImpl> WebContentsImpl::CreateWebUIForRenderFrameHost( |
const GURL& url) { |
return scoped_ptr<WebUIImpl>(static_cast<WebUIImpl*>(CreateWebUI( |
url, std::string()))); |