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 27168939594e2e1689911cee6d08097b1507fe4e..a8d32e911e2311019cb8131cbb571d7f6da39a4e 100644 |
--- a/content/browser/frame_host/navigation_handle_impl.cc |
+++ b/content/browser/frame_host/navigation_handle_impl.cc |
@@ -147,23 +147,14 @@ |
} |
void NavigationHandleImpl::Resume() { |
- if (state_ != DEFERRING_START && state_ != DEFERRING_REDIRECT && |
- state_ != DEFERRING_RESPONSE) { |
+ if (state_ != DEFERRING_START && state_ != DEFERRING_REDIRECT) |
return; |
- } |
NavigationThrottle::ThrottleCheckResult result = NavigationThrottle::DEFER; |
if (state_ == DEFERRING_START) { |
result = CheckWillStartRequest(); |
- } else if (state_ == DEFERRING_REDIRECT) { |
+ } else { |
result = CheckWillRedirectRequest(); |
- } else { |
- result = CheckWillProcessResponse(); |
- |
- // If the navigation is about to proceed after processing the response, then |
- // it's ready to commit. |
- if (result == NavigationThrottle::PROCEED) |
- ReadyToCommitNavigation(render_frame_host_, response_headers_); |
} |
if (result != NavigationThrottle::DEFER) |
@@ -288,28 +279,6 @@ |
RunCompleteCallback(result); |
} |
-void NavigationHandleImpl::WillProcessResponse( |
- RenderFrameHostImpl* render_frame_host, |
- scoped_refptr<net::HttpResponseHeaders> response_headers, |
- const ThrottleChecksFinishedCallback& callback) { |
- DCHECK(!render_frame_host_ || render_frame_host_ == render_frame_host); |
- render_frame_host_ = render_frame_host; |
- response_headers_ = response_headers; |
- state_ = WILL_PROCESS_RESPONSE; |
- complete_callback_ = callback; |
- |
- // Notify each throttle of the response. |
- NavigationThrottle::ThrottleCheckResult result = CheckWillProcessResponse(); |
- |
- // If the navigation is about to proceed, then it's ready to commit. |
- if (result == NavigationThrottle::PROCEED) |
- ReadyToCommitNavigation(render_frame_host, response_headers); |
- |
- // If the navigation is not deferred, run the callback. |
- if (result != NavigationThrottle::DEFER) |
- RunCompleteCallback(result); |
-} |
- |
void NavigationHandleImpl::DidRedirectNavigation(const GURL& new_url) { |
url_ = new_url; |
GetDelegate()->DidRedirectNavigation(this); |
@@ -400,46 +369,13 @@ |
return NavigationThrottle::PROCEED; |
} |
-NavigationThrottle::ThrottleCheckResult |
-NavigationHandleImpl::CheckWillProcessResponse() { |
- DCHECK(state_ == WILL_PROCESS_RESPONSE || state_ == DEFERRING_RESPONSE); |
- DCHECK(state_ != WILL_PROCESS_RESPONSE || next_index_ == 0); |
- DCHECK(state_ != DEFERRING_RESPONSE || next_index_ != 0); |
- for (size_t i = next_index_; i < throttles_.size(); ++i) { |
- NavigationThrottle::ThrottleCheckResult result = |
- throttles_[i]->WillProcessResponse(); |
- switch (result) { |
- case NavigationThrottle::PROCEED: |
- continue; |
- |
- case NavigationThrottle::CANCEL: |
- case NavigationThrottle::CANCEL_AND_IGNORE: |
- state_ = CANCELING; |
- return result; |
- |
- case NavigationThrottle::DEFER: |
- state_ = DEFERRING_RESPONSE; |
- next_index_ = i + 1; |
- return result; |
- } |
- } |
- next_index_ = 0; |
- state_ = WILL_PROCESS_RESPONSE; |
- return NavigationThrottle::PROCEED; |
-} |
- |
void NavigationHandleImpl::RunCompleteCallback( |
NavigationThrottle::ThrottleCheckResult result) { |
DCHECK(result != NavigationThrottle::DEFER); |
- |
- ThrottleChecksFinishedCallback callback = complete_callback_; |
+ if (!complete_callback_.is_null()) |
+ complete_callback_.Run(result); |
+ |
complete_callback_.Reset(); |
- |
- if (!callback.is_null()) |
- callback.Run(result); |
- |
- // No code after running the callback, as it might have resulted in our |
- // destruction. |
} |
} // namespace content |