OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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_http_job.h" | 5 #include "net/url_request/url_request_http_job.h" |
6 | 6 |
7 #include "base/base_switches.h" | 7 #include "base/base_switches.h" |
8 #include "base/bind.h" | 8 #include "base/bind.h" |
| 9 #include "base/bind_helpers.h" |
9 #include "base/build_time.h" | 10 #include "base/build_time.h" |
10 #include "base/command_line.h" | 11 #include "base/command_line.h" |
11 #include "base/compiler_specific.h" | 12 #include "base/compiler_specific.h" |
12 #include "base/file_util.h" | 13 #include "base/file_util.h" |
13 #include "base/file_version_info.h" | 14 #include "base/file_version_info.h" |
14 #include "base/message_loop.h" | 15 #include "base/message_loop.h" |
15 #include "base/metrics/field_trial.h" | 16 #include "base/metrics/field_trial.h" |
16 #include "base/metrics/histogram.h" | 17 #include "base/metrics/histogram.h" |
17 #include "base/rand_util.h" | 18 #include "base/rand_util.h" |
18 #include "base/string_util.h" | 19 #include "base/string_util.h" |
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
202 : URLRequestJob(request), | 203 : URLRequestJob(request), |
203 response_info_(NULL), | 204 response_info_(NULL), |
204 response_cookies_save_index_(0), | 205 response_cookies_save_index_(0), |
205 proxy_auth_state_(AUTH_STATE_DONT_NEED_AUTH), | 206 proxy_auth_state_(AUTH_STATE_DONT_NEED_AUTH), |
206 server_auth_state_(AUTH_STATE_DONT_NEED_AUTH), | 207 server_auth_state_(AUTH_STATE_DONT_NEED_AUTH), |
207 ALLOW_THIS_IN_INITIALIZER_LIST(start_callback_( | 208 ALLOW_THIS_IN_INITIALIZER_LIST(start_callback_( |
208 this, &URLRequestHttpJob::OnStartCompleted)), | 209 this, &URLRequestHttpJob::OnStartCompleted)), |
209 ALLOW_THIS_IN_INITIALIZER_LIST(read_callback_( | 210 ALLOW_THIS_IN_INITIALIZER_LIST(read_callback_( |
210 this, &URLRequestHttpJob::OnReadCompleted)), | 211 this, &URLRequestHttpJob::OnReadCompleted)), |
211 ALLOW_THIS_IN_INITIALIZER_LIST(notify_before_headers_sent_callback_( | 212 ALLOW_THIS_IN_INITIALIZER_LIST(notify_before_headers_sent_callback_( |
212 this, &URLRequestHttpJob::NotifyBeforeSendHeadersCallback)), | 213 base::Bind(&URLRequestHttpJob::NotifyBeforeSendHeadersCallback, |
| 214 base::Unretained(this)))), |
213 read_in_progress_(false), | 215 read_in_progress_(false), |
214 transaction_(NULL), | 216 transaction_(NULL), |
215 throttling_entry_(URLRequestThrottlerManager::GetInstance()-> | 217 throttling_entry_(URLRequestThrottlerManager::GetInstance()-> |
216 RegisterRequestUrl(request->url())), | 218 RegisterRequestUrl(request->url())), |
217 sdch_dictionary_advertised_(false), | 219 sdch_dictionary_advertised_(false), |
218 sdch_test_activated_(false), | 220 sdch_test_activated_(false), |
219 sdch_test_control_(false), | 221 sdch_test_control_(false), |
220 is_cached_content_(false), | 222 is_cached_content_(false), |
221 request_creation_time_(), | 223 request_creation_time_(), |
222 packet_timing_enabled_(false), | 224 packet_timing_enabled_(false), |
223 done_(false), | 225 done_(false), |
224 bytes_observed_in_packets_(0), | 226 bytes_observed_in_packets_(0), |
225 request_time_snapshot_(), | 227 request_time_snapshot_(), |
226 final_packet_time_(), | 228 final_packet_time_(), |
227 ALLOW_THIS_IN_INITIALIZER_LIST( | 229 ALLOW_THIS_IN_INITIALIZER_LIST( |
228 filter_context_(new HttpFilterContext(this))), | 230 filter_context_(new HttpFilterContext(this))), |
229 ALLOW_THIS_IN_INITIALIZER_LIST(method_factory_(this)), | 231 ALLOW_THIS_IN_INITIALIZER_LIST(method_factory_(this)), |
230 weak_ptr_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)), | 232 weak_ptr_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)), |
231 ALLOW_THIS_IN_INITIALIZER_LIST( | 233 ALLOW_THIS_IN_INITIALIZER_LIST(on_headers_received_callback_( |
232 on_headers_received_callback_( | 234 base::Bind(&URLRequestHttpJob::OnHeadersReceivedCallback, |
233 this, &URLRequestHttpJob::OnHeadersReceivedCallback)), | 235 base::Unretained(this)))), |
234 awaiting_callback_(false) { | 236 awaiting_callback_(false) { |
235 ResetTimer(); | 237 ResetTimer(); |
236 } | 238 } |
237 | 239 |
238 void URLRequestHttpJob::NotifyHeadersComplete() { | 240 void URLRequestHttpJob::NotifyHeadersComplete() { |
239 DCHECK(!response_info_); | 241 DCHECK(!response_info_); |
240 | 242 |
241 response_info_ = transaction_->GetResponseInfo(); | 243 response_info_ = transaction_->GetResponseInfo(); |
242 | 244 |
243 // Save boolean, as we'll need this info at destruction time, and filters may | 245 // Save boolean, as we'll need this info at destruction time, and filters may |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
298 | 300 |
299 DoneWithRequest(ABORTED); | 301 DoneWithRequest(ABORTED); |
300 transaction_.reset(); | 302 transaction_.reset(); |
301 response_info_ = NULL; | 303 response_info_ = NULL; |
302 context_ = NULL; | 304 context_ = NULL; |
303 } | 305 } |
304 | 306 |
305 void URLRequestHttpJob::StartTransaction() { | 307 void URLRequestHttpJob::StartTransaction() { |
306 if (request_->context() && request_->context()->network_delegate()) { | 308 if (request_->context() && request_->context()->network_delegate()) { |
307 int rv = request_->context()->network_delegate()->NotifyBeforeSendHeaders( | 309 int rv = request_->context()->network_delegate()->NotifyBeforeSendHeaders( |
308 request_, ¬ify_before_headers_sent_callback_, | 310 request_, notify_before_headers_sent_callback_, |
309 &request_info_.extra_headers); | 311 &request_info_.extra_headers); |
310 // If an extension blocks the request, we rely on the callback to | 312 // If an extension blocks the request, we rely on the callback to |
311 // StartTransactionInternal(). | 313 // StartTransactionInternal(). |
312 if (rv == ERR_IO_PENDING) { | 314 if (rv == ERR_IO_PENDING) { |
313 SetBlockedOnDelegate(); | 315 SetBlockedOnDelegate(); |
314 return; | 316 return; |
315 } | 317 } |
316 } | 318 } |
317 StartTransactionInternal(); | 319 StartTransactionInternal(); |
318 } | 320 } |
(...skipping 388 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
707 } | 709 } |
708 #endif | 710 #endif |
709 | 711 |
710 if (result == OK) { | 712 if (result == OK) { |
711 scoped_refptr<HttpResponseHeaders> headers = GetResponseHeaders(); | 713 scoped_refptr<HttpResponseHeaders> headers = GetResponseHeaders(); |
712 if (request_->context() && request_->context()->network_delegate()) { | 714 if (request_->context() && request_->context()->network_delegate()) { |
713 // Note that |this| may not be deleted until | 715 // Note that |this| may not be deleted until |
714 // |on_headers_received_callback_| or | 716 // |on_headers_received_callback_| or |
715 // |NetworkDelegate::URLRequestDestroyed()| has been called. | 717 // |NetworkDelegate::URLRequestDestroyed()| has been called. |
716 int error = request_->context()->network_delegate()-> | 718 int error = request_->context()->network_delegate()-> |
717 NotifyHeadersReceived(request_, &on_headers_received_callback_, | 719 NotifyHeadersReceived(request_, on_headers_received_callback_, |
718 headers, &override_response_headers_); | 720 headers, &override_response_headers_); |
719 if (error != net::OK) { | 721 if (error != net::OK) { |
720 if (error == net::ERR_IO_PENDING) { | 722 if (error == net::ERR_IO_PENDING) { |
721 awaiting_callback_ = true; | 723 awaiting_callback_ = true; |
722 request_->net_log().BeginEvent( | 724 request_->net_log().BeginEvent( |
723 NetLog::TYPE_URL_REQUEST_BLOCKED_ON_DELEGATE, NULL); | 725 NetLog::TYPE_URL_REQUEST_BLOCKED_ON_DELEGATE, NULL); |
724 } else { | 726 } else { |
725 request_->net_log().AddEvent(NetLog::TYPE_CANCELLED, | 727 request_->net_log().AddEvent(NetLog::TYPE_CANCELLED, |
726 make_scoped_refptr( | 728 make_scoped_refptr( |
727 new NetLogStringParameter("source", "delegate"))); | 729 new NetLogStringParameter("source", "delegate"))); |
(...skipping 682 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1410 return override_response_headers_.get() ? | 1412 return override_response_headers_.get() ? |
1411 override_response_headers_ : | 1413 override_response_headers_ : |
1412 transaction_->GetResponseInfo()->headers; | 1414 transaction_->GetResponseInfo()->headers; |
1413 } | 1415 } |
1414 | 1416 |
1415 void URLRequestHttpJob::NotifyURLRequestDestroyed() { | 1417 void URLRequestHttpJob::NotifyURLRequestDestroyed() { |
1416 awaiting_callback_ = false; | 1418 awaiting_callback_ = false; |
1417 } | 1419 } |
1418 | 1420 |
1419 } // namespace net | 1421 } // namespace net |
OLD | NEW |