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 a33257a2be0021c7f87e2d57a107efce9a67a78a..c1ab7f9ed7120385bf5620508da8dd1f200edb68 100644 |
--- a/content/browser/frame_host/navigation_request.cc |
+++ b/content/browser/frame_host/navigation_request.cc |
@@ -394,12 +394,14 @@ void NavigationRequest::CreateNavigationHandle(int pending_nav_entry_id) { |
redirect_chain.push_back(common_params_.url); |
std::unique_ptr<NavigationHandleImpl> navigation_handle = |
- NavigationHandleImpl::Create( |
- common_params_.url, redirect_chain, frame_tree_node_, |
- !browser_initiated_, FrameMsg_Navigate_Type::IsSameDocument( |
- common_params_.navigation_type), |
- common_params_.navigation_start, pending_nav_entry_id, |
- false); // started_in_context_menu |
+ NavigationHandleImpl::Create(common_params_.url, redirect_chain, |
+ frame_tree_node_, !browser_initiated_, |
+ FrameMsg_Navigate_Type::IsSameDocument( |
+ common_params_.navigation_type), |
+ common_params_.navigation_start, |
+ pending_nav_entry_id, |
+ false, // started_in_context_menu |
+ common_params_.should_bypass_main_world_csp); |
if (!frame_tree_node->navigation_request()) { |
// A callback could have cancelled this request synchronously in which case |
@@ -720,6 +722,13 @@ void NavigationRequest::OnRedirectChecksComplete( |
return; |
} |
+ if (result == NavigationThrottle::BLOCK_REQUEST) { |
+ OnRequestFailed(false, net::ERR_BLOCKED_BY_CLIENT); |
+ // DO NOT ADD CODE after this. The previous call to OnRequestFailed has |
+ // destroyed the NavigationRequest. |
+ return; |
+ } |
+ |
loader_->FollowRedirect(); |
} |