Index: content/browser/frame_host/navigation_handle_impl.cc |
diff --git a/content/browser/frame_host/navigation_handle_impl.cc b/content/browser/frame_host/navigation_handle_impl.cc |
index 74e0b202c6f005ffc79bb32c909b01bb847c83f2..1ab5e8d2c7ececb6e41864c2f3f921fbb2703a62 100644 |
--- a/content/browser/frame_host/navigation_handle_impl.cc |
+++ b/content/browser/frame_host/navigation_handle_impl.cc |
@@ -42,12 +42,6 @@ namespace content { |
namespace { |
-void UpdateThrottleCheckResult( |
- NavigationThrottle::ThrottleCheckResult* to_update, |
- NavigationThrottle::ThrottleCheckResult result) { |
- *to_update = result; |
-} |
- |
void NotifyAbandonedTransferNavigation(const GlobalRequestID& id) { |
DCHECK_CURRENTLY_ON(BrowserThread::IO); |
if (ResourceDispatcherHostImpl* rdh = ResourceDispatcherHostImpl::Get()) |
@@ -354,9 +348,8 @@ NavigationHandleImpl::CallWillStartRequestForTesting( |
const Referrer& sanitized_referrer, |
bool has_user_gesture, |
ui::PageTransition transition, |
- bool is_external_protocol) { |
- NavigationThrottle::ThrottleCheckResult result = NavigationThrottle::DEFER; |
- |
+ bool is_external_protocol, |
+ const ThrottleChecksFinishedCallback& complete_callback) { |
scoped_refptr<ResourceRequestBodyImpl> resource_request_body; |
std::string method = "GET"; |
if (is_post) { |
@@ -366,16 +359,10 @@ NavigationHandleImpl::CallWillStartRequestForTesting( |
resource_request_body = new ResourceRequestBodyImpl(); |
resource_request_body->AppendBytes(body.data(), body.size()); |
} |
- |
- WillStartRequest(method, resource_request_body, sanitized_referrer, |
- has_user_gesture, transition, is_external_protocol, |
- REQUEST_CONTEXT_TYPE_LOCATION, |
- blink::WebMixedContentContextType::Blockable, |
- base::Bind(&UpdateThrottleCheckResult, &result)); |
- |
- // Reset the callback to ensure it will not be called later. |
- complete_callback_.Reset(); |
- return result; |
+ return WillStartRequest( |
+ method, resource_request_body, sanitized_referrer, has_user_gesture, |
+ transition, is_external_protocol, REQUEST_CONTEXT_TYPE_LOCATION, |
+ blink::WebMixedContentContextType::Blockable, complete_callback); |
} |
NavigationThrottle::ThrottleCheckResult |
@@ -383,35 +370,26 @@ NavigationHandleImpl::CallWillRedirectRequestForTesting( |
const GURL& new_url, |
bool new_method_is_post, |
const GURL& new_referrer_url, |
- bool new_is_external_protocol) { |
- NavigationThrottle::ThrottleCheckResult result = NavigationThrottle::DEFER; |
- WillRedirectRequest(new_url, new_method_is_post ? "POST" : "GET", |
- new_referrer_url, new_is_external_protocol, |
- scoped_refptr<net::HttpResponseHeaders>(), |
- net::HttpResponseInfo::CONNECTION_INFO_UNKNOWN, |
- base::Bind(&UpdateThrottleCheckResult, &result)); |
- |
- // Reset the callback to ensure it will not be called later. |
- complete_callback_.Reset(); |
- return result; |
+ bool new_is_external_protocol, |
+ const ThrottleChecksFinishedCallback& complete_callback) { |
+ return WillRedirectRequest( |
+ new_url, new_method_is_post ? "POST" : "GET", new_referrer_url, |
+ new_is_external_protocol, scoped_refptr<net::HttpResponseHeaders>(), |
+ net::HttpResponseInfo::CONNECTION_INFO_UNKNOWN, complete_callback); |
} |
NavigationThrottle::ThrottleCheckResult |
NavigationHandleImpl::CallWillProcessResponseForTesting( |
content::RenderFrameHost* render_frame_host, |
- const std::string& raw_response_headers) { |
+ const std::string& raw_response_headers, |
+ const ThrottleChecksFinishedCallback& complete_callback) { |
scoped_refptr<net::HttpResponseHeaders> headers = |
new net::HttpResponseHeaders(raw_response_headers); |
- NavigationThrottle::ThrottleCheckResult result = NavigationThrottle::DEFER; |
- WillProcessResponse(static_cast<RenderFrameHostImpl*>(render_frame_host), |
- headers, net::HttpResponseInfo::CONNECTION_INFO_UNKNOWN, |
- SSLStatus(), GlobalRequestID(), false, false, false, |
- base::Closure(), |
- base::Bind(&UpdateThrottleCheckResult, &result)); |
- |
- // Reset the callback to ensure it will not be called later. |
- complete_callback_.Reset(); |
- return result; |
+ return WillProcessResponse( |
+ static_cast<RenderFrameHostImpl*>(render_frame_host), headers, |
+ net::HttpResponseInfo::CONNECTION_INFO_UNKNOWN, SSLStatus(), |
+ GlobalRequestID(), false, false, false, base::Closure(), |
+ complete_callback); |
} |
void NavigationHandleImpl::CallDidCommitNavigationForTesting(const GURL& url) { |
@@ -475,7 +453,7 @@ void NavigationHandleImpl::InitAppCacheHandle( |
appcache_handle_.reset(new AppCacheNavigationHandle(appcache_service)); |
} |
-void NavigationHandleImpl::WillStartRequest( |
+NavigationThrottle::ThrottleCheckResult NavigationHandleImpl::WillStartRequest( |
const std::string& method, |
scoped_refptr<content::ResourceRequestBodyImpl> resource_request_body, |
const Referrer& sanitized_referrer, |
@@ -520,9 +498,11 @@ void NavigationHandleImpl::WillStartRequest( |
// If the navigation is not deferred, run the callback. |
if (result != NavigationThrottle::DEFER) |
RunCompleteCallback(result); |
+ return result; |
} |
-void NavigationHandleImpl::WillRedirectRequest( |
+NavigationThrottle::ThrottleCheckResult |
+NavigationHandleImpl::WillRedirectRequest( |
const GURL& new_url, |
const std::string& new_method, |
const GURL& new_referrer_url, |
@@ -557,9 +537,11 @@ void NavigationHandleImpl::WillRedirectRequest( |
// If the navigation is not deferred, run the callback. |
if (result != NavigationThrottle::DEFER) |
RunCompleteCallback(result); |
+ return result; |
} |
-void NavigationHandleImpl::WillProcessResponse( |
+NavigationThrottle::ThrottleCheckResult |
+NavigationHandleImpl::WillProcessResponse( |
RenderFrameHostImpl* render_frame_host, |
scoped_refptr<net::HttpResponseHeaders> response_headers, |
net::HttpResponseInfo::ConnectionInfo connection_info, |
@@ -592,11 +574,12 @@ void NavigationHandleImpl::WillProcessResponse( |
// Note: if MaybeTransferAndProceed returns false, this means that this |
// NavigationHandle was deleted, so return immediately. |
if (result == NavigationThrottle::PROCEED && !MaybeTransferAndProceed()) |
- return; |
+ return result; |
// If the navigation is not deferred, run the callback. |
if (result != NavigationThrottle::DEFER) |
RunCompleteCallback(result); |
+ return result; |
} |
void NavigationHandleImpl::ReadyToCommitNavigation( |