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 57f5479727c1c55f65e29f88a442875a0aa623f8..5bc27d4fc9f16b76321cd95e788985122a94b283 100644 |
--- a/content/browser/frame_host/navigation_request.cc |
+++ b/content/browser/frame_host/navigation_request.cc |
@@ -21,7 +21,8 @@ NavigationRequest::NavigationRequest( |
const CommitNavigationParams& commit_params) |
: frame_tree_node_(frame_tree_node), |
common_params_(common_params), |
- commit_params_(commit_params) { |
+ commit_params_(commit_params), |
+ state_(NOT_STARTED) { |
} |
NavigationRequest::~NavigationRequest() { |
@@ -31,6 +32,8 @@ void NavigationRequest::BeginNavigation( |
scoped_ptr<NavigationRequestInfo> info, |
scoped_refptr<ResourceRequestBody> request_body) { |
DCHECK(!loader_); |
+ DCHECK(state_ == NOT_STARTED || state_ == WAITING_FOR_RENDERER_RESPONSE); |
+ state_ = STARTED; |
loader_ = NavigationURLLoader::Create( |
frame_tree_node_->navigator()->GetController()->GetBrowserContext(), |
frame_tree_node_->frame_tree_node_id(), common_params_, info.Pass(), |
@@ -55,11 +58,15 @@ void NavigationRequest::OnRequestRedirected( |
void NavigationRequest::OnResponseStarted( |
const scoped_refptr<ResourceResponse>& response, |
scoped_ptr<StreamHandle> body) { |
+ DCHECK(state_ == STARTED); |
+ state_ = RESPONSE_STARTED; |
frame_tree_node_->navigator()->CommitNavigation(frame_tree_node_, |
response.get(), body.Pass()); |
} |
void NavigationRequest::OnRequestFailed(int net_error) { |
+ DCHECK(state_ == STARTED); |
+ state_ = FAILED; |
// TODO(davidben): Network failures should display a network error page. |
NOTIMPLEMENTED(); |
} |