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

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

Issue 2738643002: Implement error page commit policy in PlzNavigate. (Closed)
Patch Set: Add comment. Created 3 years, 9 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 | « content/browser/frame_host/navigation_handle_impl_browsertest.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/navigation_request.cc
diff --git a/content/browser/frame_host/navigation_request.cc b/content/browser/frame_host/navigation_request.cc
index a1b6e73d4acca45a20cb1aa7a0b678bd3e0a695a..6ba54ceff8dbae7e6297620e53ec0825cca1fb4d 100644
--- a/content/browser/frame_host/navigation_request.cc
+++ b/content/browser/frame_host/navigation_request.cc
@@ -583,9 +583,23 @@ void NavigationRequest::OnRequestFailed(bool has_stale_copy_in_cache,
return;
}
- // Select an appropriate renderer to show the error page.
- RenderFrameHostImpl* render_frame_host =
- frame_tree_node_->render_manager()->GetFrameHostForNavigation(*this);
+ // There are two types of error pages that need to be handled differently.
+ // * Error pages resulting from blocking the request, because the original
+ // document wasn't even allowed to make the request. In such case,
+ // the error pages should be committed in the process of the original
+ // document, to avoid creating a process for the destination.
+ // * Error pages resulting from either network outage (no network, DNS
+ // error, etc) or similar cases, where the user can reasonably expect that
+ // a reload at a later point in time can be successful. Such error pages
+ // do belong to the process that will host the destination URL, as a
+ // reload will end up committing in that process anyway.
+ RenderFrameHostImpl* render_frame_host = nullptr;
+ if (net_error == net::ERR_BLOCKED_BY_CLIENT) {
+ render_frame_host = frame_tree_node_->current_frame_host();
+ } else {
+ render_frame_host =
+ frame_tree_node_->render_manager()->GetFrameHostForNavigation(*this);
+ }
// Don't ask the renderer to commit an URL if the browser will kill it when
// it does.
« no previous file with comments | « content/browser/frame_host/navigation_handle_impl_browsertest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698