Index: content/browser/frame_host/render_frame_host_manager.cc |
diff --git a/content/browser/frame_host/render_frame_host_manager.cc b/content/browser/frame_host/render_frame_host_manager.cc |
index 5ae522b0a7b448c1cf8ab395d06544110703e08e..7b532c5061906bf0b5a731706e519b7b847a7153 100644 |
--- a/content/browser/frame_host/render_frame_host_manager.cc |
+++ b/content/browser/frame_host/render_frame_host_manager.cc |
@@ -719,8 +719,6 @@ RenderFrameHostImpl* RenderFrameHostManager::GetFrameHostForNavigation( |
// The appropriate RenderFrameHost to commit the navigation. |
RenderFrameHostImpl* navigation_rfh = nullptr; |
- bool notify_webui_of_rf_creation = false; |
- |
// Reuse the current RenderFrameHost if its SiteInstance matches the |
// navigation's. |
bool no_renderer_swap = current_site_instance == dest_site_instance.get(); |
@@ -749,6 +747,7 @@ RenderFrameHostImpl* RenderFrameHostManager::GetFrameHostForNavigation( |
request.dest_site_instance(), was_server_redirect); |
} |
+ bool notify_webui_of_rf_creation = false; |
if (no_renderer_swap) { |
// GetFrameHostForNavigation will be called more than once during a |
// navigation (currently twice, on request and when it's about to commit in |
@@ -759,8 +758,13 @@ RenderFrameHostImpl* RenderFrameHostManager::GetFrameHostForNavigation( |
if (speculative_render_frame_host_) |
DiscardUnusedFrame(UnsetSpeculativeRenderFrameHost()); |
- UpdatePendingWebUIOnCurrentFrameHost(request.common_params().url, |
- request.bindings()); |
+ // Short-term solution: avoid creating a WebUI for subframes because |
+ // non-PlzNavigate code path doesn't do it and some WebUI pages don't |
+ // support it. See http://crrev.com/2810583006/. |
Charlie Reis
2017/04/19 19:34:04
Thanks, that helps. Let's change the last line of
arthursonzogni
2017/04/20 09:46:22
Done.
|
+ if (frame_tree_node_->IsMainFrame()) { |
+ UpdatePendingWebUIOnCurrentFrameHost(request.common_params().url, |
+ request.bindings()); |
+ } |
navigation_rfh = render_frame_host_.get(); |
@@ -785,13 +789,17 @@ RenderFrameHostImpl* RenderFrameHostManager::GetFrameHostForNavigation( |
} |
DCHECK(speculative_render_frame_host_); |
- bool changed_web_ui = speculative_render_frame_host_->UpdatePendingWebUI( |
- request.common_params().url, request.bindings()); |
- speculative_render_frame_host_->CommitPendingWebUI(); |
- DCHECK_EQ(GetNavigatingWebUI(), speculative_render_frame_host_->web_ui()); |
- notify_webui_of_rf_creation = |
- changed_web_ui && speculative_render_frame_host_->web_ui(); |
- |
+ // Short-term solution: avoid creating a WebUI for subframes because |
+ // non-PlzNavigate code path doesn't do it and some WebUI pages don't |
+ // support it. See http://crrev.com/2810583006/. |
+ if (frame_tree_node_->IsMainFrame()) { |
+ bool changed_web_ui = speculative_render_frame_host_->UpdatePendingWebUI( |
+ request.common_params().url, request.bindings()); |
+ speculative_render_frame_host_->CommitPendingWebUI(); |
+ DCHECK_EQ(GetNavigatingWebUI(), speculative_render_frame_host_->web_ui()); |
+ notify_webui_of_rf_creation = |
+ changed_web_ui && speculative_render_frame_host_->web_ui(); |
+ } |
navigation_rfh = speculative_render_frame_host_.get(); |
// Check if our current RFH is live. |
@@ -852,8 +860,13 @@ RenderFrameHostImpl* RenderFrameHostManager::GetFrameHostForNavigation( |
// If a WebUI was created in a speculative RenderFrameHost or a new |
// RenderFrame was created then the WebUI never interacted with the |
// RenderFrame or its RenderView. Notify using RenderFrameCreated. |
- if (notify_webui_of_rf_creation && GetNavigatingWebUI()) |
+ if (notify_webui_of_rf_creation && GetNavigatingWebUI() && |
+ // Short-term solution: avoid creating a WebUI for subframes because |
+ // non-PlzNavigate code path doesn't do it and some WebUI pages don't |
+ // support it. See http://crrev.com/2810583006/. |
Charlie Reis
2017/04/19 19:34:04
nit: Let's move this comment above line 863, since
arthursonzogni
2017/04/20 09:46:22
Done.
|
+ frame_tree_node_->IsMainFrame()) { |
GetNavigatingWebUI()->RenderFrameCreated(navigation_rfh); |
+ } |
return navigation_rfh; |
} |