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 b39ba868e73a97a9a2ddd0e5c15abe4e43577d8b..4b4c9e4e957059865e31324a61f7e2eceb3bbb65 100644 |
--- a/content/browser/frame_host/navigation_request.cc |
+++ b/content/browser/frame_host/navigation_request.cc |
@@ -389,12 +389,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 |
@@ -709,6 +711,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(); |
} |