| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/url_request/url_request_job.h" | 5 #include "net/url_request/url_request_job.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/compiler_specific.h" | 8 #include "base/compiler_specific.h" |
| 9 #include "base/location.h" | 9 #include "base/location.h" |
| 10 #include "base/metrics/histogram_macros.h" | 10 #include "base/metrics/histogram_macros.h" |
| (...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 371 request_->NotifyBeforeNetworkStart(defer); | 371 request_->NotifyBeforeNetworkStart(defer); |
| 372 } | 372 } |
| 373 | 373 |
| 374 void URLRequestJob::NotifyHeadersComplete() { | 374 void URLRequestJob::NotifyHeadersComplete() { |
| 375 if (!request_ || !request_->has_delegate()) | 375 if (!request_ || !request_->has_delegate()) |
| 376 return; // The request was destroyed, so there is no more work to do. | 376 return; // The request was destroyed, so there is no more work to do. |
| 377 | 377 |
| 378 if (has_handled_response_) | 378 if (has_handled_response_) |
| 379 return; | 379 return; |
| 380 | 380 |
| 381 DCHECK(!request_->status().is_io_pending()); | 381 // This should not be called on error, and the job type should have cleared |
| 382 // IO_PENDING state before calling this method. |
| 383 DCHECK(request_->status().is_success()); |
| 382 | 384 |
| 383 // Initialize to the current time, and let the subclass optionally override | 385 // Initialize to the current time, and let the subclass optionally override |
| 384 // the time stamps if it has that information. The default request_time is | 386 // the time stamps if it has that information. The default request_time is |
| 385 // set by URLRequest before it calls our Start method. | 387 // set by URLRequest before it calls our Start method. |
| 386 request_->response_info_.response_time = base::Time::Now(); | 388 request_->response_info_.response_time = base::Time::Now(); |
| 387 GetResponseInfo(&request_->response_info_); | 389 GetResponseInfo(&request_->response_info_); |
| 388 | 390 |
| 389 // When notifying the delegate, the delegate can release the request | 391 // When notifying the delegate, the delegate can release the request |
| 390 // (and thus release 'this'). After calling to the delgate, we must | 392 // (and thus release 'this'). After calling to the delgate, we must |
| 391 // check the request pointer to see if it still exists, and return | 393 // check the request pointer to see if it still exists, and return |
| (...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 754 | 756 |
| 755 const URLRequestStatus URLRequestJob::GetStatus() { | 757 const URLRequestStatus URLRequestJob::GetStatus() { |
| 756 if (request_) | 758 if (request_) |
| 757 return request_->status(); | 759 return request_->status(); |
| 758 // If the request is gone, we must be cancelled. | 760 // If the request is gone, we must be cancelled. |
| 759 return URLRequestStatus(URLRequestStatus::CANCELED, | 761 return URLRequestStatus(URLRequestStatus::CANCELED, |
| 760 ERR_ABORTED); | 762 ERR_ABORTED); |
| 761 } | 763 } |
| 762 | 764 |
| 763 void URLRequestJob::SetStatus(const URLRequestStatus &status) { | 765 void URLRequestJob::SetStatus(const URLRequestStatus &status) { |
| 764 if (request_) | 766 if (request_) { |
| 767 // A URLRequestJob should not replace a failed or cancelled status. |
| 768 DCHECK(request_->status().is_success() || |
| 769 request_->status().is_io_pending()); |
| 765 request_->set_status(status); | 770 request_->set_status(status); |
| 771 } |
| 766 } | 772 } |
| 767 | 773 |
| 768 void URLRequestJob::SetProxyServer(const HostPortPair& proxy_server) { | 774 void URLRequestJob::SetProxyServer(const HostPortPair& proxy_server) { |
| 769 request_->proxy_server_ = proxy_server; | 775 request_->proxy_server_ = proxy_server; |
| 770 } | 776 } |
| 771 | 777 |
| 772 bool URLRequestJob::ReadRawDataForFilter(int* bytes_read) { | 778 bool URLRequestJob::ReadRawDataForFilter(int* bytes_read) { |
| 773 bool rv = false; | 779 bool rv = false; |
| 774 | 780 |
| 775 DCHECK(bytes_read); | 781 DCHECK(bytes_read); |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 899 // Alter the referrer if redirecting cross-origin (especially HTTP->HTTPS). | 905 // Alter the referrer if redirecting cross-origin (especially HTTP->HTTPS). |
| 900 redirect_info.new_referrer = | 906 redirect_info.new_referrer = |
| 901 ComputeReferrerForRedirect(request_->referrer_policy(), | 907 ComputeReferrerForRedirect(request_->referrer_policy(), |
| 902 request_->referrer(), | 908 request_->referrer(), |
| 903 redirect_info.new_url).spec(); | 909 redirect_info.new_url).spec(); |
| 904 | 910 |
| 905 return redirect_info; | 911 return redirect_info; |
| 906 } | 912 } |
| 907 | 913 |
| 908 } // namespace net | 914 } // namespace net |
| OLD | NEW |