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

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

Issue 863253002: Update from https://crrev.com/312600 (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 11 months 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
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_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 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 CancelURLRequest(ERR_ABORTED); 130 CancelURLRequest(ERR_ABORTED);
131 } else { 131 } else {
132 network_task_runner_->PostTask( 132 network_task_runner_->PostTask(
133 FROM_HERE, 133 FROM_HERE,
134 base::Bind(&URLFetcherCore::CancelURLRequest, this, ERR_ABORTED)); 134 base::Bind(&URLFetcherCore::CancelURLRequest, this, ERR_ABORTED));
135 } 135 }
136 } 136 }
137 137
138 void URLFetcherCore::SetUploadData(const std::string& upload_content_type, 138 void URLFetcherCore::SetUploadData(const std::string& upload_content_type,
139 const std::string& upload_content) { 139 const std::string& upload_content) {
140 AssertHasNoUploadData();
140 DCHECK(!is_chunked_upload_); 141 DCHECK(!is_chunked_upload_);
141 DCHECK(!upload_content_set_);
142 DCHECK(upload_content_.empty());
143 DCHECK(upload_file_path_.empty());
144 DCHECK(upload_content_type_.empty()); 142 DCHECK(upload_content_type_.empty());
145 143
146 // Empty |upload_content_type| is allowed iff the |upload_content| is empty. 144 // Empty |upload_content_type| is allowed iff the |upload_content| is empty.
147 DCHECK(upload_content.empty() || !upload_content_type.empty()); 145 DCHECK(upload_content.empty() || !upload_content_type.empty());
148 146
149 upload_content_type_ = upload_content_type; 147 upload_content_type_ = upload_content_type;
150 upload_content_ = upload_content; 148 upload_content_ = upload_content;
151 upload_content_set_ = true; 149 upload_content_set_ = true;
152 } 150 }
153 151
154 void URLFetcherCore::SetUploadFilePath( 152 void URLFetcherCore::SetUploadFilePath(
155 const std::string& upload_content_type, 153 const std::string& upload_content_type,
156 const base::FilePath& file_path, 154 const base::FilePath& file_path,
157 uint64 range_offset, 155 uint64 range_offset,
158 uint64 range_length, 156 uint64 range_length,
159 scoped_refptr<base::TaskRunner> file_task_runner) { 157 scoped_refptr<base::TaskRunner> file_task_runner) {
158 AssertHasNoUploadData();
160 DCHECK(!is_chunked_upload_); 159 DCHECK(!is_chunked_upload_);
161 DCHECK(!upload_content_set_);
162 DCHECK(upload_content_.empty());
163 DCHECK(upload_file_path_.empty());
164 DCHECK_EQ(upload_range_offset_, 0ULL); 160 DCHECK_EQ(upload_range_offset_, 0ULL);
165 DCHECK_EQ(upload_range_length_, 0ULL); 161 DCHECK_EQ(upload_range_length_, 0ULL);
166 DCHECK(upload_content_type_.empty()); 162 DCHECK(upload_content_type_.empty());
167 DCHECK(!upload_content_type.empty()); 163 DCHECK(!upload_content_type.empty());
168 164
169 upload_content_type_ = upload_content_type; 165 upload_content_type_ = upload_content_type;
170 upload_file_path_ = file_path; 166 upload_file_path_ = file_path;
171 upload_range_offset_ = range_offset; 167 upload_range_offset_ = range_offset;
172 upload_range_length_ = range_length; 168 upload_range_length_ = range_length;
173 upload_file_task_runner_ = file_task_runner; 169 upload_file_task_runner_ = file_task_runner;
174 upload_content_set_ = true; 170 upload_content_set_ = true;
175 } 171 }
176 172
173 void URLFetcherCore::SetUploadStreamFactory(
174 const std::string& upload_content_type,
175 const URLFetcher::CreateUploadStreamCallback& factory) {
176 AssertHasNoUploadData();
177 DCHECK(!is_chunked_upload_);
178 DCHECK(upload_content_type_.empty());
179
180 upload_content_type_ = upload_content_type;
181 upload_stream_factory_ = factory;
182 upload_content_set_ = true;
183 }
184
177 void URLFetcherCore::SetChunkedUpload(const std::string& content_type) { 185 void URLFetcherCore::SetChunkedUpload(const std::string& content_type) {
178 DCHECK(is_chunked_upload_ || 186 if (!is_chunked_upload_) {
179 (upload_content_type_.empty() && 187 AssertHasNoUploadData();
180 upload_content_.empty())); 188 DCHECK(upload_content_type_.empty());
189 }
181 190
182 // Empty |content_type| is not allowed here, because it is impossible 191 // Empty |content_type| is not allowed here, because it is impossible
183 // to ensure non-empty upload content as it is not yet supplied. 192 // to ensure non-empty upload content as it is not yet supplied.
184 DCHECK(!content_type.empty()); 193 DCHECK(!content_type.empty());
185 194
186 upload_content_type_ = content_type; 195 upload_content_type_ = content_type;
187 upload_content_.clear(); 196 upload_content_.clear();
188 is_chunked_upload_ = true; 197 is_chunked_upload_ = true;
189 } 198 }
190 199
(...skipping 407 matching lines...) Expand 10 before | Expand all | Expand 10 after
598 ElementsUploadDataStream::CreateWithReader(reader.Pass(), 0)); 607 ElementsUploadDataStream::CreateWithReader(reader.Pass(), 0));
599 } else if (!upload_file_path_.empty()) { 608 } else if (!upload_file_path_.empty()) {
600 scoped_ptr<UploadElementReader> reader( 609 scoped_ptr<UploadElementReader> reader(
601 new UploadFileElementReader(upload_file_task_runner_.get(), 610 new UploadFileElementReader(upload_file_task_runner_.get(),
602 upload_file_path_, 611 upload_file_path_,
603 upload_range_offset_, 612 upload_range_offset_,
604 upload_range_length_, 613 upload_range_length_,
605 base::Time())); 614 base::Time()));
606 request_->set_upload( 615 request_->set_upload(
607 ElementsUploadDataStream::CreateWithReader(reader.Pass(), 0)); 616 ElementsUploadDataStream::CreateWithReader(reader.Pass(), 0));
617 } else if (!upload_stream_factory_.is_null()) {
618 scoped_ptr<UploadDataStream> stream = upload_stream_factory_.Run();
619 DCHECK(stream);
620 request_->set_upload(stream.Pass());
608 } 621 }
609 622
610 current_upload_bytes_ = -1; 623 current_upload_bytes_ = -1;
611 // TODO(kinaba): http://crbug.com/118103. Implement upload callback in the 624 // TODO(kinaba): http://crbug.com/118103. Implement upload callback in the
612 // layer and avoid using timer here. 625 // layer and avoid using timer here.
613 upload_progress_checker_timer_.reset( 626 upload_progress_checker_timer_.reset(
614 new base::RepeatingTimer<URLFetcherCore>()); 627 new base::RepeatingTimer<URLFetcherCore>());
615 upload_progress_checker_timer_->Start( 628 upload_progress_checker_timer_->Start(
616 FROM_HERE, 629 FROM_HERE,
617 base::TimeDelta::FromMilliseconds(kUploadProgressTimerInterval), 630 base::TimeDelta::FromMilliseconds(kUploadProgressTimerInterval),
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after
950 this, current_response_bytes_, total_response_bytes_)); 963 this, current_response_bytes_, total_response_bytes_));
951 } 964 }
952 965
953 void URLFetcherCore::InformDelegateDownloadProgressInDelegateThread( 966 void URLFetcherCore::InformDelegateDownloadProgressInDelegateThread(
954 int64 current, int64 total) { 967 int64 current, int64 total) {
955 DCHECK(delegate_task_runner_->BelongsToCurrentThread()); 968 DCHECK(delegate_task_runner_->BelongsToCurrentThread());
956 if (delegate_) 969 if (delegate_)
957 delegate_->OnURLFetchDownloadProgress(fetcher_, current, total); 970 delegate_->OnURLFetchDownloadProgress(fetcher_, current, total);
958 } 971 }
959 972
973 void URLFetcherCore::AssertHasNoUploadData() const {
974 DCHECK(!upload_content_set_);
975 DCHECK(upload_content_.empty());
976 DCHECK(upload_file_path_.empty());
977 DCHECK(upload_stream_factory_.is_null());
978 }
979
960 } // namespace net 980 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698