Chromium Code Reviews| 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()))); |