| 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 dd52d622cc7dabca3630645b565decf989710c57..42ee8bc75ae27ee8f7c2818f27a2b4536c46e797 100644
|
| --- a/content/browser/frame_host/render_frame_host_manager.cc
|
| +++ b/content/browser/frame_host/render_frame_host_manager.cc
|
| @@ -721,8 +721,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();
|
| @@ -751,6 +749,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
|
| @@ -761,8 +760,14 @@ 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.
|
| + // TODO(crbug.com/713313): Make WebUI objects always be per-frame instead.
|
| + if (frame_tree_node_->IsMainFrame()) {
|
| + UpdatePendingWebUIOnCurrentFrameHost(request.common_params().url,
|
| + request.bindings());
|
| + }
|
|
|
| navigation_rfh = render_frame_host_.get();
|
|
|
| @@ -787,13 +792,18 @@ 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.
|
| + // TODO(crbug.com/713313): Make WebUI objects always be per-frame instead.
|
| + 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.
|
| @@ -854,8 +864,15 @@ 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())
|
| + //
|
| + // 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.
|
| + // TODO(crbug.com/713313): Make WebUI objects always be per-frame instead.
|
| + if (notify_webui_of_rf_creation && GetNavigatingWebUI() &&
|
| + frame_tree_node_->IsMainFrame()) {
|
| GetNavigatingWebUI()->RenderFrameCreated(navigation_rfh);
|
| + }
|
|
|
| return navigation_rfh;
|
| }
|
|
|