| 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.h" | 5 #include "net/url_request/url_request.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
| (...skipping 12 matching lines...) Expand all Loading... |
| 23 #include "net/base/host_port_pair.h" | 23 #include "net/base/host_port_pair.h" |
| 24 #include "net/base/load_flags.h" | 24 #include "net/base/load_flags.h" |
| 25 #include "net/base/load_timing_info.h" | 25 #include "net/base/load_timing_info.h" |
| 26 #include "net/base/net_errors.h" | 26 #include "net/base/net_errors.h" |
| 27 #include "net/base/network_change_notifier.h" | 27 #include "net/base/network_change_notifier.h" |
| 28 #include "net/base/network_delegate.h" | 28 #include "net/base/network_delegate.h" |
| 29 #include "net/base/upload_data_stream.h" | 29 #include "net/base/upload_data_stream.h" |
| 30 #include "net/http/http_response_headers.h" | 30 #include "net/http/http_response_headers.h" |
| 31 #include "net/http/http_util.h" | 31 #include "net/http/http_util.h" |
| 32 #include "net/log/net_log.h" | 32 #include "net/log/net_log.h" |
| 33 #include "net/log/net_log_event_type.h" |
| 34 #include "net/log/net_log_source_type.h" |
| 33 #include "net/ssl/ssl_cert_request_info.h" | 35 #include "net/ssl/ssl_cert_request_info.h" |
| 34 #include "net/url_request/redirect_info.h" | 36 #include "net/url_request/redirect_info.h" |
| 35 #include "net/url_request/url_request_context.h" | 37 #include "net/url_request/url_request_context.h" |
| 36 #include "net/url_request/url_request_error_job.h" | 38 #include "net/url_request/url_request_error_job.h" |
| 37 #include "net/url_request/url_request_job.h" | 39 #include "net/url_request/url_request_job.h" |
| 38 #include "net/url_request/url_request_job_manager.h" | 40 #include "net/url_request/url_request_job_manager.h" |
| 39 #include "net/url_request/url_request_netlog_params.h" | 41 #include "net/url_request/url_request_netlog_params.h" |
| 40 #include "net/url_request/url_request_redirect_job.h" | 42 #include "net/url_request/url_request_redirect_job.h" |
| 41 #include "url/gurl.h" | 43 #include "url/gurl.h" |
| 42 #include "url/origin.h" | 44 #include "url/origin.h" |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 184 OrphanJob(); | 186 OrphanJob(); |
| 185 | 187 |
| 186 int deleted = context_->url_requests()->erase(this); | 188 int deleted = context_->url_requests()->erase(this); |
| 187 CHECK_EQ(1, deleted); | 189 CHECK_EQ(1, deleted); |
| 188 | 190 |
| 189 int net_error = OK; | 191 int net_error = OK; |
| 190 // Log error only on failure, not cancellation, as even successful requests | 192 // Log error only on failure, not cancellation, as even successful requests |
| 191 // are "cancelled" on destruction. | 193 // are "cancelled" on destruction. |
| 192 if (status_.status() == URLRequestStatus::FAILED) | 194 if (status_.status() == URLRequestStatus::FAILED) |
| 193 net_error = status_.error(); | 195 net_error = status_.error(); |
| 194 net_log_.EndEventWithNetErrorCode(NetLog::TYPE_REQUEST_ALIVE, net_error); | 196 net_log_.EndEventWithNetErrorCode(NetLogEventType::REQUEST_ALIVE, net_error); |
| 195 } | 197 } |
| 196 | 198 |
| 197 void URLRequest::set_upload(std::unique_ptr<UploadDataStream> upload) { | 199 void URLRequest::set_upload(std::unique_ptr<UploadDataStream> upload) { |
| 198 upload_data_stream_ = std::move(upload); | 200 upload_data_stream_ = std::move(upload); |
| 199 } | 201 } |
| 200 | 202 |
| 201 const UploadDataStream* URLRequest::get_upload() const { | 203 const UploadDataStream* URLRequest::get_upload() const { |
| 202 return upload_data_stream_.get(); | 204 return upload_data_stream_.get(); |
| 203 } | 205 } |
| 204 | 206 |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 326 // Only log information to NetLog during startup and certain deferring calls | 328 // Only log information to NetLog during startup and certain deferring calls |
| 327 // to delegates. For all reads but the first, do nothing. | 329 // to delegates. For all reads but the first, do nothing. |
| 328 if (!calling_delegate_ && !response_info_.request_time.is_null()) | 330 if (!calling_delegate_ && !response_info_.request_time.is_null()) |
| 329 return; | 331 return; |
| 330 | 332 |
| 331 LogUnblocked(); | 333 LogUnblocked(); |
| 332 blocked_by_ = blocked_by; | 334 blocked_by_ = blocked_by; |
| 333 use_blocked_by_as_load_param_ = false; | 335 use_blocked_by_as_load_param_ = false; |
| 334 | 336 |
| 335 net_log_.BeginEvent( | 337 net_log_.BeginEvent( |
| 336 NetLog::TYPE_DELEGATE_INFO, | 338 NetLogEventType::DELEGATE_INFO, |
| 337 NetLog::StringCallback("delegate_info", &blocked_by_)); | 339 NetLog::StringCallback("delegate_info", &blocked_by_)); |
| 338 } | 340 } |
| 339 | 341 |
| 340 void URLRequest::LogAndReportBlockedBy(const char* source) { | 342 void URLRequest::LogAndReportBlockedBy(const char* source) { |
| 341 LogBlockedBy(source); | 343 LogBlockedBy(source); |
| 342 use_blocked_by_as_load_param_ = true; | 344 use_blocked_by_as_load_param_ = true; |
| 343 } | 345 } |
| 344 | 346 |
| 345 void URLRequest::LogUnblocked() { | 347 void URLRequest::LogUnblocked() { |
| 346 if (blocked_by_.empty()) | 348 if (blocked_by_.empty()) |
| 347 return; | 349 return; |
| 348 | 350 |
| 349 net_log_.EndEvent(NetLog::TYPE_DELEGATE_INFO); | 351 net_log_.EndEvent(NetLogEventType::DELEGATE_INFO); |
| 350 blocked_by_.clear(); | 352 blocked_by_.clear(); |
| 351 } | 353 } |
| 352 | 354 |
| 353 UploadProgress URLRequest::GetUploadProgress() const { | 355 UploadProgress URLRequest::GetUploadProgress() const { |
| 354 if (!job_.get()) { | 356 if (!job_.get()) { |
| 355 // We haven't started or the request was cancelled | 357 // We haven't started or the request was cancelled |
| 356 return UploadProgress(); | 358 return UploadProgress(); |
| 357 } | 359 } |
| 358 if (final_upload_progress_.position()) { | 360 if (final_upload_progress_.position()) { |
| 359 // The first job completed and none of the subsequent series of | 361 // The first job completed and none of the subsequent series of |
| (...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 553 | 555 |
| 554 URLRequest::URLRequest(const GURL& url, | 556 URLRequest::URLRequest(const GURL& url, |
| 555 RequestPriority priority, | 557 RequestPriority priority, |
| 556 Delegate* delegate, | 558 Delegate* delegate, |
| 557 const URLRequestContext* context, | 559 const URLRequestContext* context, |
| 558 NetworkDelegate* network_delegate) | 560 NetworkDelegate* network_delegate) |
| 559 : context_(context), | 561 : context_(context), |
| 560 network_delegate_(network_delegate ? network_delegate | 562 network_delegate_(network_delegate ? network_delegate |
| 561 : context->network_delegate()), | 563 : context->network_delegate()), |
| 562 net_log_( | 564 net_log_( |
| 563 BoundNetLog::Make(context->net_log(), NetLog::SOURCE_URL_REQUEST)), | 565 BoundNetLog::Make(context->net_log(), NetLogSourceType::URL_REQUEST)), |
| 564 url_chain_(1, url), | 566 url_chain_(1, url), |
| 565 method_("GET"), | 567 method_("GET"), |
| 566 referrer_policy_(CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE), | 568 referrer_policy_(CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE), |
| 567 first_party_url_policy_(NEVER_CHANGE_FIRST_PARTY_URL), | 569 first_party_url_policy_(NEVER_CHANGE_FIRST_PARTY_URL), |
| 568 load_flags_(LOAD_NORMAL), | 570 load_flags_(LOAD_NORMAL), |
| 569 delegate_(delegate), | 571 delegate_(delegate), |
| 570 status_(URLRequestStatus::FromError(OK)), | 572 status_(URLRequestStatus::FromError(OK)), |
| 571 is_pending_(false), | 573 is_pending_(false), |
| 572 is_redirecting_(false), | 574 is_redirecting_(false), |
| 573 redirect_limit_(kMaxRedirects), | 575 redirect_limit_(kMaxRedirects), |
| 574 priority_(priority), | 576 priority_(priority), |
| 575 identifier_(GenerateURLRequestIdentifier()), | 577 identifier_(GenerateURLRequestIdentifier()), |
| 576 calling_delegate_(false), | 578 calling_delegate_(false), |
| 577 use_blocked_by_as_load_param_(false), | 579 use_blocked_by_as_load_param_(false), |
| 578 before_request_callback_(base::Bind(&URLRequest::BeforeRequestComplete, | 580 before_request_callback_(base::Bind(&URLRequest::BeforeRequestComplete, |
| 579 base::Unretained(this))), | 581 base::Unretained(this))), |
| 580 has_notified_completion_(false), | 582 has_notified_completion_(false), |
| 581 received_response_content_length_(0), | 583 received_response_content_length_(0), |
| 582 creation_time_(base::TimeTicks::Now()) { | 584 creation_time_(base::TimeTicks::Now()) { |
| 583 // Sanity check out environment. | 585 // Sanity check out environment. |
| 584 DCHECK(base::MessageLoop::current()) | 586 DCHECK(base::MessageLoop::current()) |
| 585 << "The current base::MessageLoop must exist"; | 587 << "The current base::MessageLoop must exist"; |
| 586 | 588 |
| 587 context->url_requests()->insert(this); | 589 context->url_requests()->insert(this); |
| 588 net_log_.BeginEvent(NetLog::TYPE_REQUEST_ALIVE); | 590 net_log_.BeginEvent(NetLogEventType::REQUEST_ALIVE); |
| 589 } | 591 } |
| 590 | 592 |
| 591 void URLRequest::BeforeRequestComplete(int error) { | 593 void URLRequest::BeforeRequestComplete(int error) { |
| 592 DCHECK(!job_.get()); | 594 DCHECK(!job_.get()); |
| 593 DCHECK_NE(ERR_IO_PENDING, error); | 595 DCHECK_NE(ERR_IO_PENDING, error); |
| 594 | 596 |
| 595 // Check that there are no callbacks to already canceled requests. | 597 // Check that there are no callbacks to already canceled requests. |
| 596 DCHECK_NE(URLRequestStatus::CANCELED, status_.status()); | 598 DCHECK_NE(URLRequestStatus::CANCELED, status_.status()); |
| 597 | 599 |
| 598 OnCallToDelegateComplete(); | 600 OnCallToDelegateComplete(); |
| 599 | 601 |
| 600 if (error != OK) { | 602 if (error != OK) { |
| 601 std::string source("delegate"); | 603 std::string source("delegate"); |
| 602 net_log_.AddEvent(NetLog::TYPE_CANCELLED, | 604 net_log_.AddEvent(NetLogEventType::CANCELLED, |
| 603 NetLog::StringCallback("source", &source)); | 605 NetLog::StringCallback("source", &source)); |
| 604 StartJob(new URLRequestErrorJob(this, network_delegate_, error)); | 606 StartJob(new URLRequestErrorJob(this, network_delegate_, error)); |
| 605 } else if (!delegate_redirect_url_.is_empty()) { | 607 } else if (!delegate_redirect_url_.is_empty()) { |
| 606 GURL new_url; | 608 GURL new_url; |
| 607 new_url.Swap(&delegate_redirect_url_); | 609 new_url.Swap(&delegate_redirect_url_); |
| 608 | 610 |
| 609 URLRequestRedirectJob* job = new URLRequestRedirectJob( | 611 URLRequestRedirectJob* job = new URLRequestRedirectJob( |
| 610 this, network_delegate_, new_url, | 612 this, network_delegate_, new_url, |
| 611 // Use status code 307 to preserve the method, so POST requests work. | 613 // Use status code 307 to preserve the method, so POST requests work. |
| 612 URLRequestRedirectJob::REDIRECT_307_TEMPORARY_REDIRECT, "Delegate"); | 614 URLRequestRedirectJob::REDIRECT_307_TEMPORARY_REDIRECT, "Delegate"); |
| 613 StartJob(job); | 615 StartJob(job); |
| 614 } else { | 616 } else { |
| 615 StartJob(URLRequestJobManager::GetInstance()->CreateJob( | 617 StartJob(URLRequestJobManager::GetInstance()->CreateJob( |
| 616 this, network_delegate_)); | 618 this, network_delegate_)); |
| 617 } | 619 } |
| 618 } | 620 } |
| 619 | 621 |
| 620 void URLRequest::StartJob(URLRequestJob* job) { | 622 void URLRequest::StartJob(URLRequestJob* job) { |
| 621 // TODO(mmenke): Remove ScopedTracker below once crbug.com/456327 is fixed. | 623 // TODO(mmenke): Remove ScopedTracker below once crbug.com/456327 is fixed. |
| 622 tracked_objects::ScopedTracker tracking_profile( | 624 tracked_objects::ScopedTracker tracking_profile( |
| 623 FROM_HERE_WITH_EXPLICIT_FUNCTION("456327 URLRequest::StartJob")); | 625 FROM_HERE_WITH_EXPLICIT_FUNCTION("456327 URLRequest::StartJob")); |
| 624 | 626 |
| 625 DCHECK(!is_pending_); | 627 DCHECK(!is_pending_); |
| 626 DCHECK(!job_.get()); | 628 DCHECK(!job_.get()); |
| 627 | 629 |
| 628 net_log_.BeginEvent( | 630 net_log_.BeginEvent( |
| 629 NetLog::TYPE_URL_REQUEST_START_JOB, | 631 NetLogEventType::URL_REQUEST_START_JOB, |
| 630 base::Bind(&NetLogURLRequestStartCallback, | 632 base::Bind(&NetLogURLRequestStartCallback, |
| 631 &url(), &method_, load_flags_, priority_, | 633 &url(), &method_, load_flags_, priority_, |
| 632 upload_data_stream_ ? upload_data_stream_->identifier() : -1)); | 634 upload_data_stream_ ? upload_data_stream_->identifier() : -1)); |
| 633 | 635 |
| 634 job_.reset(job); | 636 job_.reset(job); |
| 635 job_->SetExtraRequestHeaders(extra_request_headers_); | 637 job_->SetExtraRequestHeaders(extra_request_headers_); |
| 636 job_->SetPriority(priority_); | 638 job_->SetPriority(priority_); |
| 637 | 639 |
| 638 if (upload_data_stream_.get()) | 640 if (upload_data_stream_.get()) |
| 639 job_->SetUpload(upload_data_stream_.get()); | 641 job_->SetUpload(upload_data_stream_.get()); |
| 640 | 642 |
| 641 is_pending_ = true; | 643 is_pending_ = true; |
| 642 is_redirecting_ = false; | 644 is_redirecting_ = false; |
| 643 | 645 |
| 644 response_info_.was_cached = false; | 646 response_info_.was_cached = false; |
| 645 | 647 |
| 646 if (GURL(referrer_) != URLRequestJob::ComputeReferrerForRedirect( | 648 if (GURL(referrer_) != URLRequestJob::ComputeReferrerForRedirect( |
| 647 referrer_policy_, referrer_, url())) { | 649 referrer_policy_, referrer_, url())) { |
| 648 if (!network_delegate_ || | 650 if (!network_delegate_ || |
| 649 !network_delegate_->CancelURLRequestWithPolicyViolatingReferrerHeader( | 651 !network_delegate_->CancelURLRequestWithPolicyViolatingReferrerHeader( |
| 650 *this, url(), GURL(referrer_))) { | 652 *this, url(), GURL(referrer_))) { |
| 651 referrer_.clear(); | 653 referrer_.clear(); |
| 652 } else { | 654 } else { |
| 653 // We need to clear the referrer anyway to avoid an infinite recursion | 655 // We need to clear the referrer anyway to avoid an infinite recursion |
| 654 // when starting the error job. | 656 // when starting the error job. |
| 655 referrer_.clear(); | 657 referrer_.clear(); |
| 656 std::string source("delegate"); | 658 std::string source("delegate"); |
| 657 net_log_.AddEvent(NetLog::TYPE_CANCELLED, | 659 net_log_.AddEvent(NetLogEventType::CANCELLED, |
| 658 NetLog::StringCallback("source", &source)); | 660 NetLog::StringCallback("source", &source)); |
| 659 RestartWithJob(new URLRequestErrorJob( | 661 RestartWithJob(new URLRequestErrorJob( |
| 660 this, network_delegate_, ERR_BLOCKED_BY_CLIENT)); | 662 this, network_delegate_, ERR_BLOCKED_BY_CLIENT)); |
| 661 return; | 663 return; |
| 662 } | 664 } |
| 663 } | 665 } |
| 664 | 666 |
| 665 // Start() always completes asynchronously. | 667 // Start() always completes asynchronously. |
| 666 // | 668 // |
| 667 // Status is generally set by URLRequestJob itself, but Start() calls | 669 // Status is generally set by URLRequestJob itself, but Start() calls |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 712 | 714 |
| 713 // If the URL request already has an error status, then canceling is a no-op. | 715 // If the URL request already has an error status, then canceling is a no-op. |
| 714 // Plus, we don't want to change the error status once it has been set. | 716 // Plus, we don't want to change the error status once it has been set. |
| 715 if (status_.is_success()) { | 717 if (status_.is_success()) { |
| 716 status_ = URLRequestStatus(URLRequestStatus::CANCELED, error); | 718 status_ = URLRequestStatus(URLRequestStatus::CANCELED, error); |
| 717 response_info_.ssl_info = ssl_info; | 719 response_info_.ssl_info = ssl_info; |
| 718 | 720 |
| 719 // If the request hasn't already been completed, log a cancellation event. | 721 // If the request hasn't already been completed, log a cancellation event. |
| 720 if (!has_notified_completion_) { | 722 if (!has_notified_completion_) { |
| 721 // Don't log an error code on ERR_ABORTED, since that's redundant. | 723 // Don't log an error code on ERR_ABORTED, since that's redundant. |
| 722 net_log_.AddEventWithNetErrorCode(NetLog::TYPE_CANCELLED, | 724 net_log_.AddEventWithNetErrorCode(NetLogEventType::CANCELLED, |
| 723 error == ERR_ABORTED ? OK : error); | 725 error == ERR_ABORTED ? OK : error); |
| 724 } | 726 } |
| 725 } | 727 } |
| 726 | 728 |
| 727 if (is_pending_ && job_.get()) | 729 if (is_pending_ && job_.get()) |
| 728 job_->Kill(); | 730 job_->Kill(); |
| 729 | 731 |
| 730 // We need to notify about the end of this job here synchronously. The | 732 // We need to notify about the end of this job here synchronously. The |
| 731 // Job sends an asynchronous notification but by the time this is processed, | 733 // Job sends an asynchronous notification but by the time this is processed, |
| 732 // our |context_| is NULL. | 734 // our |context_| is NULL. |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 820 } | 822 } |
| 821 | 823 |
| 822 void URLRequest::NotifyResponseStarted(const URLRequestStatus& status) { | 824 void URLRequest::NotifyResponseStarted(const URLRequestStatus& status) { |
| 823 // Change status if there was an error. | 825 // Change status if there was an error. |
| 824 if (status.status() != URLRequestStatus::SUCCESS) | 826 if (status.status() != URLRequestStatus::SUCCESS) |
| 825 set_status(status); | 827 set_status(status); |
| 826 | 828 |
| 827 int net_error = OK; | 829 int net_error = OK; |
| 828 if (!status_.is_success()) | 830 if (!status_.is_success()) |
| 829 net_error = status_.error(); | 831 net_error = status_.error(); |
| 830 net_log_.EndEventWithNetErrorCode(NetLog::TYPE_URL_REQUEST_START_JOB, | 832 net_log_.EndEventWithNetErrorCode(NetLogEventType::URL_REQUEST_START_JOB, |
| 831 net_error); | 833 net_error); |
| 832 | 834 |
| 833 URLRequestJob* job = | 835 URLRequestJob* job = |
| 834 URLRequestJobManager::GetInstance()->MaybeInterceptResponse( | 836 URLRequestJobManager::GetInstance()->MaybeInterceptResponse( |
| 835 this, network_delegate_); | 837 this, network_delegate_); |
| 836 if (job) { | 838 if (job) { |
| 837 RestartWithJob(job); | 839 RestartWithJob(job); |
| 838 } else { | 840 } else { |
| 839 // In some cases (e.g. an event was canceled), we might have sent the | 841 // In some cases (e.g. an event was canceled), we might have sent the |
| 840 // completion event and receive a NotifyResponseStarted() later. | 842 // completion event and receive a NotifyResponseStarted() later. |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 897 | 899 |
| 898 status_ = URLRequestStatus::FromError(ERR_IO_PENDING); | 900 status_ = URLRequestStatus::FromError(ERR_IO_PENDING); |
| 899 job_->ContinueDespiteLastError(); | 901 job_->ContinueDespiteLastError(); |
| 900 } | 902 } |
| 901 | 903 |
| 902 void URLRequest::PrepareToRestart() { | 904 void URLRequest::PrepareToRestart() { |
| 903 DCHECK(job_.get()); | 905 DCHECK(job_.get()); |
| 904 | 906 |
| 905 // Close the current URL_REQUEST_START_JOB, since we will be starting a new | 907 // Close the current URL_REQUEST_START_JOB, since we will be starting a new |
| 906 // one. | 908 // one. |
| 907 net_log_.EndEvent(NetLog::TYPE_URL_REQUEST_START_JOB); | 909 net_log_.EndEvent(NetLogEventType::URL_REQUEST_START_JOB); |
| 908 | 910 |
| 909 OrphanJob(); | 911 OrphanJob(); |
| 910 | 912 |
| 911 response_info_ = HttpResponseInfo(); | 913 response_info_ = HttpResponseInfo(); |
| 912 response_info_.request_time = base::Time::Now(); | 914 response_info_.request_time = base::Time::Now(); |
| 913 | 915 |
| 914 load_timing_info_ = LoadTimingInfo(); | 916 load_timing_info_ = LoadTimingInfo(); |
| 915 load_timing_info_.request_start_time = response_info_.request_time; | 917 load_timing_info_.request_start_time = response_info_.request_time; |
| 916 load_timing_info_.request_start = base::TimeTicks::Now(); | 918 load_timing_info_.request_start = base::TimeTicks::Now(); |
| 917 | 919 |
| (...skipping 13 matching lines...) Expand all Loading... |
| 931 // that the callback becomes invalid. | 933 // that the callback becomes invalid. |
| 932 job_->Kill(); | 934 job_->Kill(); |
| 933 job_ = NULL; | 935 job_ = NULL; |
| 934 } | 936 } |
| 935 | 937 |
| 936 int URLRequest::Redirect(const RedirectInfo& redirect_info) { | 938 int URLRequest::Redirect(const RedirectInfo& redirect_info) { |
| 937 // Matches call in NotifyReceivedRedirect. | 939 // Matches call in NotifyReceivedRedirect. |
| 938 OnCallToDelegateComplete(); | 940 OnCallToDelegateComplete(); |
| 939 if (net_log_.IsCapturing()) { | 941 if (net_log_.IsCapturing()) { |
| 940 net_log_.AddEvent( | 942 net_log_.AddEvent( |
| 941 NetLog::TYPE_URL_REQUEST_REDIRECTED, | 943 NetLogEventType::URL_REQUEST_REDIRECTED, |
| 942 NetLog::StringCallback("location", | 944 NetLog::StringCallback("location", |
| 943 &redirect_info.new_url.possibly_invalid_spec())); | 945 &redirect_info.new_url.possibly_invalid_spec())); |
| 944 } | 946 } |
| 945 | 947 |
| 946 // TODO(davidben): Pass the full RedirectInfo to the NetworkDelegate. | 948 // TODO(davidben): Pass the full RedirectInfo to the NetworkDelegate. |
| 947 if (network_delegate_) | 949 if (network_delegate_) |
| 948 network_delegate_->NotifyBeforeRedirect(this, redirect_info.new_url); | 950 network_delegate_->NotifyBeforeRedirect(this, redirect_info.new_url); |
| 949 | 951 |
| 950 if (redirect_limit_ <= 0) { | 952 if (redirect_limit_ <= 0) { |
| 951 DVLOG(1) << "disallowing redirect: exceeds limit"; | 953 DVLOG(1) << "disallowing redirect: exceeds limit"; |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1039 // have MAXIMUM_PRIORITY for release mode. | 1041 // have MAXIMUM_PRIORITY for release mode. |
| 1040 return; | 1042 return; |
| 1041 } | 1043 } |
| 1042 | 1044 |
| 1043 if (priority_ == priority) | 1045 if (priority_ == priority) |
| 1044 return; | 1046 return; |
| 1045 | 1047 |
| 1046 priority_ = priority; | 1048 priority_ = priority; |
| 1047 if (job_.get()) { | 1049 if (job_.get()) { |
| 1048 net_log_.AddEvent( | 1050 net_log_.AddEvent( |
| 1049 NetLog::TYPE_URL_REQUEST_SET_PRIORITY, | 1051 NetLogEventType::URL_REQUEST_SET_PRIORITY, |
| 1050 NetLog::StringCallback("priority", RequestPriorityToString(priority_))); | 1052 NetLog::StringCallback("priority", RequestPriorityToString(priority_))); |
| 1051 job_->SetPriority(priority_); | 1053 job_->SetPriority(priority_); |
| 1052 } | 1054 } |
| 1053 } | 1055 } |
| 1054 | 1056 |
| 1055 void URLRequest::NotifyAuthRequired(AuthChallengeInfo* auth_info) { | 1057 void URLRequest::NotifyAuthRequired(AuthChallengeInfo* auth_info) { |
| 1056 NetworkDelegate::AuthRequiredResponse rv = | 1058 NetworkDelegate::AuthRequiredResponse rv = |
| 1057 NetworkDelegate::AUTH_REQUIRED_RESPONSE_NO_ACTION; | 1059 NetworkDelegate::AUTH_REQUIRED_RESPONSE_NO_ACTION; |
| 1058 auth_info_ = auth_info; | 1060 auth_info_ = auth_info; |
| 1059 if (network_delegate_) { | 1061 if (network_delegate_) { |
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1207 has_notified_completion_ = true; | 1209 has_notified_completion_ = true; |
| 1208 if (network_delegate_) | 1210 if (network_delegate_) |
| 1209 network_delegate_->NotifyCompleted(this, job_.get() != NULL, | 1211 network_delegate_->NotifyCompleted(this, job_.get() != NULL, |
| 1210 status_.error()); | 1212 status_.error()); |
| 1211 } | 1213 } |
| 1212 | 1214 |
| 1213 void URLRequest::OnCallToDelegate() { | 1215 void URLRequest::OnCallToDelegate() { |
| 1214 DCHECK(!calling_delegate_); | 1216 DCHECK(!calling_delegate_); |
| 1215 DCHECK(blocked_by_.empty()); | 1217 DCHECK(blocked_by_.empty()); |
| 1216 calling_delegate_ = true; | 1218 calling_delegate_ = true; |
| 1217 net_log_.BeginEvent(NetLog::TYPE_URL_REQUEST_DELEGATE); | 1219 net_log_.BeginEvent(NetLogEventType::URL_REQUEST_DELEGATE); |
| 1218 } | 1220 } |
| 1219 | 1221 |
| 1220 void URLRequest::OnCallToDelegateComplete() { | 1222 void URLRequest::OnCallToDelegateComplete() { |
| 1221 // This should have been cleared before resuming the request. | 1223 // This should have been cleared before resuming the request. |
| 1222 DCHECK(blocked_by_.empty()); | 1224 DCHECK(blocked_by_.empty()); |
| 1223 if (!calling_delegate_) | 1225 if (!calling_delegate_) |
| 1224 return; | 1226 return; |
| 1225 calling_delegate_ = false; | 1227 calling_delegate_ = false; |
| 1226 net_log_.EndEvent(NetLog::TYPE_URL_REQUEST_DELEGATE); | 1228 net_log_.EndEvent(NetLogEventType::URL_REQUEST_DELEGATE); |
| 1227 } | 1229 } |
| 1228 | 1230 |
| 1229 void URLRequest::GetConnectionAttempts(ConnectionAttempts* out) const { | 1231 void URLRequest::GetConnectionAttempts(ConnectionAttempts* out) const { |
| 1230 if (job_) | 1232 if (job_) |
| 1231 job_->GetConnectionAttempts(out); | 1233 job_->GetConnectionAttempts(out); |
| 1232 else | 1234 else |
| 1233 out->clear(); | 1235 out->clear(); |
| 1234 } | 1236 } |
| 1235 | 1237 |
| 1236 void URLRequest::set_status(URLRequestStatus status) { | 1238 void URLRequest::set_status(URLRequestStatus status) { |
| 1237 DCHECK(status_.is_io_pending() || status_.is_success() || | 1239 DCHECK(status_.is_io_pending() || status_.is_success() || |
| 1238 (!status.is_success() && !status.is_io_pending())); | 1240 (!status.is_success() && !status.is_io_pending())); |
| 1239 status_ = status; | 1241 status_ = status; |
| 1240 } | 1242 } |
| 1241 | 1243 |
| 1242 } // namespace net | 1244 } // namespace net |
| OLD | NEW |