Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(534)

Unified Diff: content/browser/frame_host/render_frame_host_manager.cc

Issue 2810583006: PlzNavigate: Avoid creating WebUI for subframes. (Closed)
Patch Set: Adding comments and modifying the issue. Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/ui/webui/uber/uber_ui.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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;
}
« no previous file with comments | « chrome/browser/ui/webui/uber/uber_ui.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698