Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4)

Side by Side Diff: net/url_request/url_request_job.cc

Issue 1271593002: Fix cancellation of a pair of URLRequestJob subclasses (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Change random stuff Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
OLDNEW
« no previous file with comments | « net/url_request/url_request_http_job_unittest.cc ('k') | net/url_request/url_request_simple_job.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698