| 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 "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 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 139 : context_(context), | 139 : context_(context), |
| 140 net_log_(BoundNetLog::Make(context->net_log(), | 140 net_log_(BoundNetLog::Make(context->net_log(), |
| 141 NetLog::SOURCE_URL_REQUEST)), | 141 NetLog::SOURCE_URL_REQUEST)), |
| 142 url_chain_(1, url), | 142 url_chain_(1, url), |
| 143 method_("GET"), | 143 method_("GET"), |
| 144 referrer_policy_(CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE), | 144 referrer_policy_(CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE), |
| 145 load_flags_(LOAD_NORMAL), | 145 load_flags_(LOAD_NORMAL), |
| 146 delegate_(delegate), | 146 delegate_(delegate), |
| 147 is_pending_(false), | 147 is_pending_(false), |
| 148 redirect_limit_(kMaxRedirects), | 148 redirect_limit_(kMaxRedirects), |
| 149 final_upload_progress_(0), | |
| 150 priority_(LOWEST), | 149 priority_(LOWEST), |
| 151 identifier_(GenerateURLRequestIdentifier()), | 150 identifier_(GenerateURLRequestIdentifier()), |
| 152 blocked_on_delegate_(false), | 151 blocked_on_delegate_(false), |
| 153 ALLOW_THIS_IN_INITIALIZER_LIST(before_request_callback_( | 152 ALLOW_THIS_IN_INITIALIZER_LIST(before_request_callback_( |
| 154 base::Bind(&URLRequest::BeforeRequestComplete, | 153 base::Bind(&URLRequest::BeforeRequestComplete, |
| 155 base::Unretained(this)))), | 154 base::Unretained(this)))), |
| 156 has_notified_completion_(false), | 155 has_notified_completion_(false), |
| 157 creation_time_(base::TimeTicks::Now()) { | 156 creation_time_(base::TimeTicks::Now()) { |
| 158 SIMPLE_STATS_COUNTER("URLRequestCount"); | 157 SIMPLE_STATS_COUNTER("URLRequestCount"); |
| 159 | 158 |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 279 | 278 |
| 280 LoadStateWithParam URLRequest::GetLoadState() const { | 279 LoadStateWithParam URLRequest::GetLoadState() const { |
| 281 if (blocked_on_delegate_) { | 280 if (blocked_on_delegate_) { |
| 282 return LoadStateWithParam(LOAD_STATE_WAITING_FOR_DELEGATE, | 281 return LoadStateWithParam(LOAD_STATE_WAITING_FOR_DELEGATE, |
| 283 load_state_param_); | 282 load_state_param_); |
| 284 } | 283 } |
| 285 return LoadStateWithParam(job_ ? job_->GetLoadState() : LOAD_STATE_IDLE, | 284 return LoadStateWithParam(job_ ? job_->GetLoadState() : LOAD_STATE_IDLE, |
| 286 string16()); | 285 string16()); |
| 287 } | 286 } |
| 288 | 287 |
| 289 uint64 URLRequest::GetUploadProgress() const { | 288 UploadProgress URLRequest::GetUploadProgress() const { |
| 290 if (!job_) { | 289 if (!job_) { |
| 291 // We haven't started or the request was cancelled | 290 // We haven't started or the request was cancelled |
| 292 return 0; | 291 return UploadProgress(); |
| 293 } | 292 } |
| 294 if (final_upload_progress_) { | 293 if (final_upload_progress_.position) { |
| 295 // The first job completed and none of the subsequent series of | 294 // The first job completed and none of the subsequent series of |
| 296 // GETs when following redirects will upload anything, so we return the | 295 // GETs when following redirects will upload anything, so we return the |
| 297 // cached results from the initial job, the POST. | 296 // cached results from the initial job, the POST. |
| 298 return final_upload_progress_; | 297 return final_upload_progress_; |
| 299 } | 298 } |
| 300 return job_->GetUploadProgress(); | 299 return job_->GetUploadProgress(); |
| 301 } | 300 } |
| 302 | 301 |
| 303 void URLRequest::GetResponseHeaderById(int id, string* value) { | 302 void URLRequest::GetResponseHeaderById(int id, string* value) { |
| 304 DCHECK(job_); | 303 DCHECK(job_); |
| (...skipping 432 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 737 // Suppress the referrer if we're redirecting out of https. | 736 // Suppress the referrer if we're redirecting out of https. |
| 738 if (referrer_policy_ == | 737 if (referrer_policy_ == |
| 739 CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE && | 738 CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE && |
| 740 GURL(referrer_).SchemeIsSecure() && !location.SchemeIsSecure()) { | 739 GURL(referrer_).SchemeIsSecure() && !location.SchemeIsSecure()) { |
| 741 referrer_.clear(); | 740 referrer_.clear(); |
| 742 } | 741 } |
| 743 | 742 |
| 744 url_chain_.push_back(location); | 743 url_chain_.push_back(location); |
| 745 --redirect_limit_; | 744 --redirect_limit_; |
| 746 | 745 |
| 747 if (!final_upload_progress_) | 746 if (!final_upload_progress_.position) |
| 748 final_upload_progress_ = job_->GetUploadProgress(); | 747 final_upload_progress_ = job_->GetUploadProgress(); |
| 749 | 748 |
| 750 PrepareToRestart(); | 749 PrepareToRestart(); |
| 751 Start(); | 750 Start(); |
| 752 return OK; | 751 return OK; |
| 753 } | 752 } |
| 754 | 753 |
| 755 const URLRequestContext* URLRequest::context() const { | 754 const URLRequestContext* URLRequest::context() const { |
| 756 return context_; | 755 return context_; |
| 757 } | 756 } |
| (...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 921 new base::debug::StackTrace(NULL, 0); | 920 new base::debug::StackTrace(NULL, 0); |
| 922 *stack_trace_copy = stack_trace; | 921 *stack_trace_copy = stack_trace; |
| 923 stack_trace_.reset(stack_trace_copy); | 922 stack_trace_.reset(stack_trace_copy); |
| 924 } | 923 } |
| 925 | 924 |
| 926 const base::debug::StackTrace* URLRequest::stack_trace() const { | 925 const base::debug::StackTrace* URLRequest::stack_trace() const { |
| 927 return stack_trace_.get(); | 926 return stack_trace_.get(); |
| 928 } | 927 } |
| 929 | 928 |
| 930 } // namespace net | 929 } // namespace net |
| OLD | NEW |