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