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

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

Issue 1459333002: Revert "Reland: URLRequestJob: change ReadRawData contract" (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 1 month 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_ftp_job.h ('k') | net/url_request/url_request_http_job.h » ('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_ftp_job.h" 5 #include "net/url_request/url_request_ftp_job.h"
6 6
7 #include "base/compiler_specific.h" 7 #include "base/compiler_specific.h"
8 #include "base/location.h" 8 #include "base/location.h"
9 #include "base/single_thread_task_runner.h" 9 #include "base/single_thread_task_runner.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 HandleAuthNeededResponse(); 232 HandleAuthNeededResponse();
233 return; 233 return;
234 } 234 }
235 } 235 }
236 NotifyHeadersComplete(); 236 NotifyHeadersComplete();
237 } else if (ftp_transaction_ && 237 } else if (ftp_transaction_ &&
238 ftp_transaction_->GetResponseInfo()->needs_auth) { 238 ftp_transaction_->GetResponseInfo()->needs_auth) {
239 HandleAuthNeededResponse(); 239 HandleAuthNeededResponse();
240 return; 240 return;
241 } else { 241 } else {
242 NotifyStartError(URLRequestStatus(URLRequestStatus::FAILED, result)); 242 NotifyDone(URLRequestStatus(URLRequestStatus::FAILED, result));
243 } 243 }
244 } 244 }
245 245
246 void URLRequestFtpJob::OnStartCompletedAsync(int result) { 246 void URLRequestFtpJob::OnStartCompletedAsync(int result) {
247 base::ThreadTaskRunnerHandle::Get()->PostTask( 247 base::ThreadTaskRunnerHandle::Get()->PostTask(
248 FROM_HERE, base::Bind(&URLRequestFtpJob::OnStartCompleted, 248 FROM_HERE, base::Bind(&URLRequestFtpJob::OnStartCompleted,
249 weak_factory_.GetWeakPtr(), result)); 249 weak_factory_.GetWeakPtr(), result));
250 } 250 }
251 251
252 void URLRequestFtpJob::OnReadCompleted(int result) { 252 void URLRequestFtpJob::OnReadCompleted(int result) {
253 read_in_progress_ = false; 253 read_in_progress_ = false;
254 ReadRawDataComplete(result); 254 if (result == 0) {
255 NotifyDone(URLRequestStatus());
256 } else if (result < 0) {
257 NotifyDone(URLRequestStatus(URLRequestStatus::FAILED, result));
258 } else {
259 // Clear the IO_PENDING status
260 SetStatus(URLRequestStatus());
261 }
262 NotifyReadComplete(result);
255 } 263 }
256 264
257 void URLRequestFtpJob::RestartTransactionWithAuth() { 265 void URLRequestFtpJob::RestartTransactionWithAuth() {
258 DCHECK(auth_data_.get() && auth_data_->state == AUTH_STATE_HAVE_AUTH); 266 DCHECK(auth_data_.get() && auth_data_->state == AUTH_STATE_HAVE_AUTH);
259 267
260 // No matter what, we want to report our status as IO pending since we will 268 // No matter what, we want to report our status as IO pending since we will
261 // be notifying our consumer asynchronously via OnStartCompleted. 269 // be notifying our consumer asynchronously via OnStartCompleted.
262 SetStatus(URLRequestStatus(URLRequestStatus::IO_PENDING, 0)); 270 SetStatus(URLRequestStatus(URLRequestStatus::IO_PENDING, 0));
263 271
264 int rv; 272 int rv;
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
337 // Once the auth is cancelled, we proceed with the request as though 345 // Once the auth is cancelled, we proceed with the request as though
338 // there were no auth. Schedule this for later so that we don't cause 346 // there were no auth. Schedule this for later so that we don't cause
339 // any recursing into the caller as a result of this call. 347 // any recursing into the caller as a result of this call.
340 OnStartCompletedAsync(OK); 348 OnStartCompletedAsync(OK);
341 } 349 }
342 350
343 UploadProgress URLRequestFtpJob::GetUploadProgress() const { 351 UploadProgress URLRequestFtpJob::GetUploadProgress() const {
344 return UploadProgress(); 352 return UploadProgress();
345 } 353 }
346 354
347 int URLRequestFtpJob::ReadRawData(IOBuffer* buf, int buf_size) { 355 bool URLRequestFtpJob::ReadRawData(IOBuffer* buf,
356 int buf_size,
357 int* bytes_read) {
348 DCHECK_NE(buf_size, 0); 358 DCHECK_NE(buf_size, 0);
359 DCHECK(bytes_read);
349 DCHECK(!read_in_progress_); 360 DCHECK(!read_in_progress_);
350 361
351 int rv; 362 int rv;
352
353 if (proxy_info_.is_direct()) { 363 if (proxy_info_.is_direct()) {
354 rv = ftp_transaction_->Read(buf, buf_size, 364 rv = ftp_transaction_->Read(buf, buf_size,
355 base::Bind(&URLRequestFtpJob::OnReadCompleted, 365 base::Bind(&URLRequestFtpJob::OnReadCompleted,
356 base::Unretained(this))); 366 base::Unretained(this)));
357 } else { 367 } else {
358 rv = http_transaction_->Read(buf, buf_size, 368 rv = http_transaction_->Read(buf, buf_size,
359 base::Bind(&URLRequestFtpJob::OnReadCompleted, 369 base::Bind(&URLRequestFtpJob::OnReadCompleted,
360 base::Unretained(this))); 370 base::Unretained(this)));
361 } 371 }
362 372
363 if (rv == ERR_IO_PENDING) 373 if (rv >= 0) {
374 *bytes_read = rv;
375 return true;
376 }
377
378 if (rv == ERR_IO_PENDING) {
364 read_in_progress_ = true; 379 read_in_progress_ = true;
365 return rv; 380 SetStatus(URLRequestStatus(URLRequestStatus::IO_PENDING, 0));
381 } else {
382 NotifyDone(URLRequestStatus(URLRequestStatus::FAILED, rv));
383 }
384 return false;
366 } 385 }
367 386
368 void URLRequestFtpJob::HandleAuthNeededResponse() { 387 void URLRequestFtpJob::HandleAuthNeededResponse() {
369 GURL origin = request_->url().GetOrigin(); 388 GURL origin = request_->url().GetOrigin();
370 389
371 if (auth_data_.get()) { 390 if (auth_data_.get()) {
372 if (auth_data_->state == AUTH_STATE_CANCELED) { 391 if (auth_data_->state == AUTH_STATE_CANCELED) {
373 NotifyHeadersComplete(); 392 NotifyHeadersComplete();
374 return; 393 return;
375 } 394 }
(...skipping 11 matching lines...) Expand all
387 if (cached_auth) { 406 if (cached_auth) {
388 // Retry using cached auth data. 407 // Retry using cached auth data.
389 SetAuth(cached_auth->credentials); 408 SetAuth(cached_auth->credentials);
390 } else { 409 } else {
391 // Prompt for a username/password. 410 // Prompt for a username/password.
392 NotifyHeadersComplete(); 411 NotifyHeadersComplete();
393 } 412 }
394 } 413 }
395 414
396 } // namespace net 415 } // namespace net
OLDNEW
« no previous file with comments | « net/url_request/url_request_ftp_job.h ('k') | net/url_request/url_request_http_job.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698