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