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

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

Issue 1523433002: Remove support for a URLRequest having a NULL Delegate. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Merge, remove if in file_writer_delegate Created 5 years 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
« no previous file with comments | « net/url_request/url_request.h ('k') | net/url_request/url_request_context.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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.h" 5 #include "net/url_request/url_request.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/callback.h" 9 #include "base/callback.h"
10 #include "base/compiler_specific.h" 10 #include "base/compiler_specific.h"
(...skipping 475 matching lines...) Expand 10 before | Expand all | Expand 10 after
486 referrer_ = referrer; 486 referrer_ = referrer;
487 } 487 }
488 } 488 }
489 489
490 void URLRequest::set_referrer_policy(ReferrerPolicy referrer_policy) { 490 void URLRequest::set_referrer_policy(ReferrerPolicy referrer_policy) {
491 DCHECK(!is_pending_); 491 DCHECK(!is_pending_);
492 referrer_policy_ = referrer_policy; 492 referrer_policy_ = referrer_policy;
493 } 493 }
494 494
495 void URLRequest::set_delegate(Delegate* delegate) { 495 void URLRequest::set_delegate(Delegate* delegate) {
496 DCHECK(!delegate_);
497 DCHECK(delegate);
496 delegate_ = delegate; 498 delegate_ = delegate;
497 } 499 }
498 500
499 void URLRequest::Start() { 501 void URLRequest::Start() {
502 DCHECK(delegate_);
503
500 // TODO(pkasting): Remove ScopedTracker below once crbug.com/456327 is fixed. 504 // TODO(pkasting): Remove ScopedTracker below once crbug.com/456327 is fixed.
501 tracked_objects::ScopedTracker tracking_profile( 505 tracked_objects::ScopedTracker tracking_profile(
502 FROM_HERE_WITH_EXPLICIT_FUNCTION("456327 URLRequest::Start")); 506 FROM_HERE_WITH_EXPLICIT_FUNCTION("456327 URLRequest::Start"));
503 507
504 // Some values can be NULL, but the job factory must not be. 508 // Some values can be NULL, but the job factory must not be.
505 DCHECK(context_->job_factory()); 509 DCHECK(context_->job_factory());
506 510
507 // Anything that sets |blocked_by_| before start should have cleaned up after 511 // Anything that sets |blocked_by_| before start should have cleaned up after
508 // itself. 512 // itself.
509 DCHECK(blocked_by_.empty()); 513 DCHECK(blocked_by_.empty());
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after
785 void URLRequest::NotifyReceivedRedirect(const RedirectInfo& redirect_info, 789 void URLRequest::NotifyReceivedRedirect(const RedirectInfo& redirect_info,
786 bool* defer_redirect) { 790 bool* defer_redirect) {
787 is_redirecting_ = true; 791 is_redirecting_ = true;
788 792
789 // TODO(davidben): Pass the full RedirectInfo down to MaybeInterceptRedirect? 793 // TODO(davidben): Pass the full RedirectInfo down to MaybeInterceptRedirect?
790 URLRequestJob* job = 794 URLRequestJob* job =
791 URLRequestJobManager::GetInstance()->MaybeInterceptRedirect( 795 URLRequestJobManager::GetInstance()->MaybeInterceptRedirect(
792 this, network_delegate_, redirect_info.new_url); 796 this, network_delegate_, redirect_info.new_url);
793 if (job) { 797 if (job) {
794 RestartWithJob(job); 798 RestartWithJob(job);
795 } else if (delegate_) { 799 } else {
796 OnCallToDelegate(); 800 OnCallToDelegate();
797 delegate_->OnReceivedRedirect(this, redirect_info, defer_redirect); 801 delegate_->OnReceivedRedirect(this, redirect_info, defer_redirect);
798 // |this| may be have been destroyed here. 802 // |this| may be have been destroyed here.
799 } 803 }
800 } 804 }
801 805
802 void URLRequest::NotifyBeforeNetworkStart(bool* defer) { 806 void URLRequest::NotifyBeforeNetworkStart(bool* defer) {
803 if (delegate_ && !notified_before_network_start_) { 807 if (!notified_before_network_start_) {
804 OnCallToDelegate(); 808 OnCallToDelegate();
805 delegate_->OnBeforeNetworkStart(this, defer); 809 delegate_->OnBeforeNetworkStart(this, defer);
806 if (!*defer) 810 if (!*defer)
807 OnCallToDelegateComplete(); 811 OnCallToDelegateComplete();
808 notified_before_network_start_ = true; 812 notified_before_network_start_ = true;
809 } 813 }
810 } 814 }
811 815
812 void URLRequest::ResumeNetworkStart() { 816 void URLRequest::ResumeNetworkStart() {
813 DCHECK(job_.get()); 817 DCHECK(job_.get());
814 DCHECK(notified_before_network_start_); 818 DCHECK(notified_before_network_start_);
815 819
816 OnCallToDelegateComplete(); 820 OnCallToDelegateComplete();
817 job_->ResumeNetworkStart(); 821 job_->ResumeNetworkStart();
818 } 822 }
819 823
820 void URLRequest::NotifyResponseStarted() { 824 void URLRequest::NotifyResponseStarted() {
821 int net_error = OK; 825 int net_error = OK;
822 if (!status_.is_success()) 826 if (!status_.is_success())
823 net_error = status_.error(); 827 net_error = status_.error();
824 net_log_.EndEventWithNetErrorCode(NetLog::TYPE_URL_REQUEST_START_JOB, 828 net_log_.EndEventWithNetErrorCode(NetLog::TYPE_URL_REQUEST_START_JOB,
825 net_error); 829 net_error);
826 830
827 URLRequestJob* job = 831 URLRequestJob* job =
828 URLRequestJobManager::GetInstance()->MaybeInterceptResponse( 832 URLRequestJobManager::GetInstance()->MaybeInterceptResponse(
829 this, network_delegate_); 833 this, network_delegate_);
830 if (job) { 834 if (job) {
831 RestartWithJob(job); 835 RestartWithJob(job);
832 } else { 836 } else {
833 if (delegate_) { 837 // In some cases (e.g. an event was canceled), we might have sent the
834 // In some cases (e.g. an event was canceled), we might have sent the 838 // completion event and receive a NotifyResponseStarted() later.
835 // completion event and receive a NotifyResponseStarted() later. 839 if (!has_notified_completion_ && status_.is_success()) {
836 if (!has_notified_completion_ && status_.is_success()) { 840 if (network_delegate_)
837 if (network_delegate_) 841 network_delegate_->NotifyResponseStarted(this);
838 network_delegate_->NotifyResponseStarted(this); 842 }
839 }
840 843
841 // Notify in case the entire URL Request has been finished. 844 // Notify in case the entire URL Request has been finished.
842 if (!has_notified_completion_ && !status_.is_success()) 845 if (!has_notified_completion_ && !status_.is_success())
843 NotifyRequestCompleted(); 846 NotifyRequestCompleted();
844 847
845 OnCallToDelegate(); 848 OnCallToDelegate();
846 delegate_->OnResponseStarted(this); 849 delegate_->OnResponseStarted(this);
847 // Nothing may appear below this line as OnResponseStarted may delete 850 // Nothing may appear below this line as OnResponseStarted may delete
848 // |this|. 851 // |this|.
849 }
850 } 852 }
851 } 853 }
852 854
853 void URLRequest::FollowDeferredRedirect() { 855 void URLRequest::FollowDeferredRedirect() {
854 CHECK(job_.get()); 856 CHECK(job_.get());
855 CHECK(status_.is_success()); 857 CHECK(status_.is_success());
856 858
857 job_->FollowDeferredRedirect(); 859 job_->FollowDeferredRedirect();
858 } 860 }
859 861
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
1081 // so it can be reset on another round. 1083 // so it can be reset on another round.
1082 AuthCredentials credentials = auth_credentials_; 1084 AuthCredentials credentials = auth_credentials_;
1083 auth_credentials_ = AuthCredentials(); 1085 auth_credentials_ = AuthCredentials();
1084 scoped_refptr<AuthChallengeInfo> auth_info; 1086 scoped_refptr<AuthChallengeInfo> auth_info;
1085 auth_info.swap(auth_info_); 1087 auth_info.swap(auth_info_);
1086 1088
1087 switch (result) { 1089 switch (result) {
1088 case NetworkDelegate::AUTH_REQUIRED_RESPONSE_NO_ACTION: 1090 case NetworkDelegate::AUTH_REQUIRED_RESPONSE_NO_ACTION:
1089 // Defer to the URLRequest::Delegate, since the NetworkDelegate 1091 // Defer to the URLRequest::Delegate, since the NetworkDelegate
1090 // didn't take an action. 1092 // didn't take an action.
1091 if (delegate_) 1093 delegate_->OnAuthRequired(this, auth_info.get());
1092 delegate_->OnAuthRequired(this, auth_info.get());
1093 break; 1094 break;
1094 1095
1095 case NetworkDelegate::AUTH_REQUIRED_RESPONSE_SET_AUTH: 1096 case NetworkDelegate::AUTH_REQUIRED_RESPONSE_SET_AUTH:
1096 SetAuth(credentials); 1097 SetAuth(credentials);
1097 break; 1098 break;
1098 1099
1099 case NetworkDelegate::AUTH_REQUIRED_RESPONSE_CANCEL_AUTH: 1100 case NetworkDelegate::AUTH_REQUIRED_RESPONSE_CANCEL_AUTH:
1100 CancelAuth(); 1101 CancelAuth();
1101 break; 1102 break;
1102 1103
1103 case NetworkDelegate::AUTH_REQUIRED_RESPONSE_IO_PENDING: 1104 case NetworkDelegate::AUTH_REQUIRED_RESPONSE_IO_PENDING:
1104 NOTREACHED(); 1105 NOTREACHED();
1105 break; 1106 break;
1106 } 1107 }
1107 } 1108 }
1108 1109
1109 void URLRequest::NotifyCertificateRequested( 1110 void URLRequest::NotifyCertificateRequested(
1110 SSLCertRequestInfo* cert_request_info) { 1111 SSLCertRequestInfo* cert_request_info) {
1111 if (delegate_) 1112 delegate_->OnCertificateRequested(this, cert_request_info);
1112 delegate_->OnCertificateRequested(this, cert_request_info);
1113 } 1113 }
1114 1114
1115 void URLRequest::NotifySSLCertificateError(const SSLInfo& ssl_info, 1115 void URLRequest::NotifySSLCertificateError(const SSLInfo& ssl_info,
1116 bool fatal) { 1116 bool fatal) {
1117 if (delegate_) 1117 delegate_->OnSSLCertificateError(this, ssl_info, fatal);
1118 delegate_->OnSSLCertificateError(this, ssl_info, fatal);
1119 } 1118 }
1120 1119
1121 bool URLRequest::CanGetCookies(const CookieList& cookie_list) const { 1120 bool URLRequest::CanGetCookies(const CookieList& cookie_list) const {
1122 DCHECK(!(load_flags_ & LOAD_DO_NOT_SEND_COOKIES)); 1121 DCHECK(!(load_flags_ & LOAD_DO_NOT_SEND_COOKIES));
1123 if (network_delegate_) { 1122 if (network_delegate_) {
1124 return network_delegate_->CanGetCookies(*this, cookie_list); 1123 return network_delegate_->CanGetCookies(*this, cookie_list);
1125 } 1124 }
1126 return g_default_can_use_cookies; 1125 return g_default_can_use_cookies;
1127 } 1126 }
1128 1127
(...skipping 20 matching lines...) Expand all
1149 if (bytes_read <= 0) 1148 if (bytes_read <= 0)
1150 NotifyRequestCompleted(); 1149 NotifyRequestCompleted();
1151 1150
1152 // Notify NetworkChangeNotifier that we just received network data. 1151 // Notify NetworkChangeNotifier that we just received network data.
1153 // This is to identify cases where the NetworkChangeNotifier thinks we 1152 // This is to identify cases where the NetworkChangeNotifier thinks we
1154 // are off-line but we are still receiving network data (crbug.com/124069), 1153 // are off-line but we are still receiving network data (crbug.com/124069),
1155 // and to get rough network connection measurements. 1154 // and to get rough network connection measurements.
1156 if (bytes_read > 0 && !was_cached()) 1155 if (bytes_read > 0 && !was_cached())
1157 NetworkChangeNotifier::NotifyDataReceived(*this, bytes_read); 1156 NetworkChangeNotifier::NotifyDataReceived(*this, bytes_read);
1158 1157
1159 if (delegate_) 1158 delegate_->OnReadCompleted(this, bytes_read);
1160 delegate_->OnReadCompleted(this, bytes_read);
1161 1159
1162 // Nothing below this line as OnReadCompleted may delete |this|. 1160 // Nothing below this line as OnReadCompleted may delete |this|.
1163 } 1161 }
1164 1162
1165 void URLRequest::OnHeadersComplete() { 1163 void URLRequest::OnHeadersComplete() {
1166 // Cache load timing information now, as information will be lost once the 1164 // Cache load timing information now, as information will be lost once the
1167 // socket is closed and the ClientSocketHandle is Reset, which will happen 1165 // socket is closed and the ClientSocketHandle is Reset, which will happen
1168 // once the body is complete. The start times should already be populated. 1166 // once the body is complete. The start times should already be populated.
1169 if (job_.get()) { 1167 if (job_.get()) {
1170 // Keep a copy of the two times the URLRequest sets. 1168 // Keep a copy of the two times the URLRequest sets.
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
1221 } 1219 }
1222 1220
1223 void URLRequest::GetConnectionAttempts(ConnectionAttempts* out) const { 1221 void URLRequest::GetConnectionAttempts(ConnectionAttempts* out) const {
1224 if (job_) 1222 if (job_)
1225 job_->GetConnectionAttempts(out); 1223 job_->GetConnectionAttempts(out);
1226 else 1224 else
1227 out->clear(); 1225 out->clear();
1228 } 1226 }
1229 1227
1230 } // namespace net 1228 } // namespace net
OLDNEW
« no previous file with comments | « net/url_request/url_request.h ('k') | net/url_request/url_request_context.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698