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_fetcher_core.h" | 5 #include "net/url_request/url_fetcher_core.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
148 DCHECK(upload_content.empty() || !upload_content_type.empty()); | 148 DCHECK(upload_content.empty() || !upload_content_type.empty()); |
149 | 149 |
150 upload_content_type_ = upload_content_type; | 150 upload_content_type_ = upload_content_type; |
151 upload_content_ = upload_content; | 151 upload_content_ = upload_content; |
152 upload_content_set_ = true; | 152 upload_content_set_ = true; |
153 } | 153 } |
154 | 154 |
155 void URLFetcherCore::SetUploadFilePath( | 155 void URLFetcherCore::SetUploadFilePath( |
156 const std::string& upload_content_type, | 156 const std::string& upload_content_type, |
157 const base::FilePath& file_path, | 157 const base::FilePath& file_path, |
158 uint64 range_offset, | 158 uint64_t range_offset, |
159 uint64 range_length, | 159 uint64_t range_length, |
160 scoped_refptr<base::TaskRunner> file_task_runner) { | 160 scoped_refptr<base::TaskRunner> file_task_runner) { |
161 AssertHasNoUploadData(); | 161 AssertHasNoUploadData(); |
162 DCHECK(!is_chunked_upload_); | 162 DCHECK(!is_chunked_upload_); |
163 DCHECK_EQ(upload_range_offset_, 0ULL); | 163 DCHECK_EQ(upload_range_offset_, 0ULL); |
164 DCHECK_EQ(upload_range_length_, 0ULL); | 164 DCHECK_EQ(upload_range_length_, 0ULL); |
165 DCHECK(upload_content_type_.empty()); | 165 DCHECK(upload_content_type_.empty()); |
166 DCHECK(!upload_content_type.empty()); | 166 DCHECK(!upload_content_type.empty()); |
167 | 167 |
168 upload_content_type_ = upload_content_type; | 168 upload_content_type_ = upload_content_type; |
169 upload_file_path_ = file_path; | 169 upload_file_path_ = file_path; |
(...skipping 482 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
652 // If the context has been shut down, or there's no ThrottlerManager, just | 652 // If the context has been shut down, or there's no ThrottlerManager, just |
653 // start the request. In the former case, StartURLRequest() will just inform | 653 // start the request. In the former case, StartURLRequest() will just inform |
654 // the URLFetcher::Delegate the request has been canceled. | 654 // the URLFetcher::Delegate the request has been canceled. |
655 if (context && context->throttler_manager()) { | 655 if (context && context->throttler_manager()) { |
656 if (!original_url_throttler_entry_.get()) { | 656 if (!original_url_throttler_entry_.get()) { |
657 original_url_throttler_entry_ = | 657 original_url_throttler_entry_ = |
658 context->throttler_manager()->RegisterRequestUrl(original_url_); | 658 context->throttler_manager()->RegisterRequestUrl(original_url_); |
659 } | 659 } |
660 | 660 |
661 if (original_url_throttler_entry_.get()) { | 661 if (original_url_throttler_entry_.get()) { |
662 int64 delay = | 662 int64_t delay = |
663 original_url_throttler_entry_->ReserveSendingTimeForNextRequest( | 663 original_url_throttler_entry_->ReserveSendingTimeForNextRequest( |
664 GetBackoffReleaseTime()); | 664 GetBackoffReleaseTime()); |
665 if (delay != 0) { | 665 if (delay != 0) { |
666 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | 666 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
667 FROM_HERE, base::Bind(&URLFetcherCore::StartURLRequest, this), | 667 FROM_HERE, base::Bind(&URLFetcherCore::StartURLRequest, this), |
668 base::TimeDelta::FromMilliseconds(delay)); | 668 base::TimeDelta::FromMilliseconds(delay)); |
669 return; | 669 return; |
670 } | 670 } |
671 } | 671 } |
672 } | 672 } |
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
892 (request_type_ != URLFetcher::HEAD)) { | 892 (request_type_ != URLFetcher::HEAD)) { |
893 if (!request_->Read(buffer_.get(), kBufferSize, &bytes_read)) | 893 if (!request_->Read(buffer_.get(), kBufferSize, &bytes_read)) |
894 bytes_read = -1; // Match OnReadCompleted() interface contract. | 894 bytes_read = -1; // Match OnReadCompleted() interface contract. |
895 } | 895 } |
896 OnReadCompleted(request_.get(), bytes_read); | 896 OnReadCompleted(request_.get(), bytes_read); |
897 } | 897 } |
898 | 898 |
899 void URLFetcherCore::InformDelegateUploadProgress() { | 899 void URLFetcherCore::InformDelegateUploadProgress() { |
900 DCHECK(network_task_runner_->BelongsToCurrentThread()); | 900 DCHECK(network_task_runner_->BelongsToCurrentThread()); |
901 if (request_.get()) { | 901 if (request_.get()) { |
902 int64 current = request_->GetUploadProgress().position(); | 902 int64_t current = request_->GetUploadProgress().position(); |
903 if (current_upload_bytes_ != current) { | 903 if (current_upload_bytes_ != current) { |
904 current_upload_bytes_ = current; | 904 current_upload_bytes_ = current; |
905 int64 total = -1; | 905 int64_t total = -1; |
906 if (!is_chunked_upload_) { | 906 if (!is_chunked_upload_) { |
907 total = static_cast<int64>(request_->GetUploadProgress().size()); | 907 total = static_cast<int64_t>(request_->GetUploadProgress().size()); |
908 // Total may be zero if the UploadDataStream::Init has not been called | 908 // Total may be zero if the UploadDataStream::Init has not been called |
909 // yet. Don't send the upload progress until the size is initialized. | 909 // yet. Don't send the upload progress until the size is initialized. |
910 if (!total) | 910 if (!total) |
911 return; | 911 return; |
912 } | 912 } |
913 delegate_task_runner_->PostTask( | 913 delegate_task_runner_->PostTask( |
914 FROM_HERE, | 914 FROM_HERE, |
915 base::Bind( | 915 base::Bind( |
916 &URLFetcherCore::InformDelegateUploadProgressInDelegateThread, | 916 &URLFetcherCore::InformDelegateUploadProgressInDelegateThread, |
917 this, current, total)); | 917 this, current, total)); |
918 } | 918 } |
919 } | 919 } |
920 } | 920 } |
921 | 921 |
922 void URLFetcherCore::InformDelegateUploadProgressInDelegateThread( | 922 void URLFetcherCore::InformDelegateUploadProgressInDelegateThread( |
923 int64 current, int64 total) { | 923 int64_t current, |
| 924 int64_t total) { |
924 DCHECK(delegate_task_runner_->BelongsToCurrentThread()); | 925 DCHECK(delegate_task_runner_->BelongsToCurrentThread()); |
925 if (delegate_) | 926 if (delegate_) |
926 delegate_->OnURLFetchUploadProgress(fetcher_, current, total); | 927 delegate_->OnURLFetchUploadProgress(fetcher_, current, total); |
927 } | 928 } |
928 | 929 |
929 void URLFetcherCore::InformDelegateDownloadProgress() { | 930 void URLFetcherCore::InformDelegateDownloadProgress() { |
930 DCHECK(network_task_runner_->BelongsToCurrentThread()); | 931 DCHECK(network_task_runner_->BelongsToCurrentThread()); |
931 | 932 |
932 // TODO(pkasting): Remove ScopedTracker below once crbug.com/455952 is fixed. | 933 // TODO(pkasting): Remove ScopedTracker below once crbug.com/455952 is fixed. |
933 tracked_objects::ScopedTracker tracking_profile2( | 934 tracked_objects::ScopedTracker tracking_profile2( |
934 FROM_HERE_WITH_EXPLICIT_FUNCTION( | 935 FROM_HERE_WITH_EXPLICIT_FUNCTION( |
935 "455952 delegate_task_runner_->PostTask()")); | 936 "455952 delegate_task_runner_->PostTask()")); |
936 | 937 |
937 delegate_task_runner_->PostTask( | 938 delegate_task_runner_->PostTask( |
938 FROM_HERE, | 939 FROM_HERE, |
939 base::Bind( | 940 base::Bind( |
940 &URLFetcherCore::InformDelegateDownloadProgressInDelegateThread, | 941 &URLFetcherCore::InformDelegateDownloadProgressInDelegateThread, |
941 this, current_response_bytes_, total_response_bytes_)); | 942 this, current_response_bytes_, total_response_bytes_)); |
942 } | 943 } |
943 | 944 |
944 void URLFetcherCore::InformDelegateDownloadProgressInDelegateThread( | 945 void URLFetcherCore::InformDelegateDownloadProgressInDelegateThread( |
945 int64 current, int64 total) { | 946 int64_t current, |
| 947 int64_t total) { |
946 DCHECK(delegate_task_runner_->BelongsToCurrentThread()); | 948 DCHECK(delegate_task_runner_->BelongsToCurrentThread()); |
947 if (delegate_) | 949 if (delegate_) |
948 delegate_->OnURLFetchDownloadProgress(fetcher_, current, total); | 950 delegate_->OnURLFetchDownloadProgress(fetcher_, current, total); |
949 } | 951 } |
950 | 952 |
951 void URLFetcherCore::AssertHasNoUploadData() const { | 953 void URLFetcherCore::AssertHasNoUploadData() const { |
952 DCHECK(!upload_content_set_); | 954 DCHECK(!upload_content_set_); |
953 DCHECK(upload_content_.empty()); | 955 DCHECK(upload_content_.empty()); |
954 DCHECK(upload_file_path_.empty()); | 956 DCHECK(upload_file_path_.empty()); |
955 DCHECK(upload_stream_factory_.is_null()); | 957 DCHECK(upload_stream_factory_.is_null()); |
956 } | 958 } |
957 | 959 |
958 } // namespace net | 960 } // namespace net |
OLD | NEW |