OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "content/browser/loader/mojo_async_resource_handler.h" | 5 #include "content/browser/loader/mojo_async_resource_handler.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <utility> | 8 #include <utility> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 382 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
393 shared_writer_->writer(), data, available, MOJO_WRITE_DATA_FLAG_NONE); | 393 shared_writer_->writer(), data, available, MOJO_WRITE_DATA_FLAG_NONE); |
394 if (result == MOJO_RESULT_OK) | 394 if (result == MOJO_RESULT_OK) |
395 *available = std::min(*available, static_cast<uint32_t>(kMaxChunkSize)); | 395 *available = std::min(*available, static_cast<uint32_t>(kMaxChunkSize)); |
396 else if (result == MOJO_RESULT_SHOULD_WAIT) | 396 else if (result == MOJO_RESULT_SHOULD_WAIT) |
397 handle_watcher_.ArmOrNotify(); | 397 handle_watcher_.ArmOrNotify(); |
398 return result; | 398 return result; |
399 } | 399 } |
400 | 400 |
401 MojoResult MojoAsyncResourceHandler::EndWrite(uint32_t written) { | 401 MojoResult MojoAsyncResourceHandler::EndWrite(uint32_t written) { |
402 MojoResult result = mojo::EndWriteDataRaw(shared_writer_->writer(), written); | 402 MojoResult result = mojo::EndWriteDataRaw(shared_writer_->writer(), written); |
403 if (result == MOJO_RESULT_OK) | 403 if (result == MOJO_RESULT_OK) { |
| 404 total_written_bytes_ += written; |
404 handle_watcher_.ArmOrNotify(); | 405 handle_watcher_.ArmOrNotify(); |
| 406 } |
405 return result; | 407 return result; |
406 } | 408 } |
407 | 409 |
408 net::IOBufferWithSize* MojoAsyncResourceHandler::GetResponseMetadata( | 410 net::IOBufferWithSize* MojoAsyncResourceHandler::GetResponseMetadata( |
409 net::URLRequest* request) { | 411 net::URLRequest* request) { |
410 return request->response_info().metadata.get(); | 412 return request->response_info().metadata.get(); |
411 } | 413 } |
412 | 414 |
413 void MojoAsyncResourceHandler::OnResponseCompleted( | 415 void MojoAsyncResourceHandler::OnResponseCompleted( |
414 const net::URLRequestStatus& status, | 416 const net::URLRequestStatus& status, |
(...skipping 30 matching lines...) Expand all Loading... |
445 DCHECK(!was_ignored_by_handler || error_code == net::ERR_ABORTED); | 447 DCHECK(!was_ignored_by_handler || error_code == net::ERR_ABORTED); |
446 | 448 |
447 ResourceRequestCompletionStatus request_complete_data; | 449 ResourceRequestCompletionStatus request_complete_data; |
448 request_complete_data.error_code = error_code; | 450 request_complete_data.error_code = error_code; |
449 request_complete_data.was_ignored_by_handler = was_ignored_by_handler; | 451 request_complete_data.was_ignored_by_handler = was_ignored_by_handler; |
450 request_complete_data.exists_in_cache = request()->response_info().was_cached; | 452 request_complete_data.exists_in_cache = request()->response_info().was_cached; |
451 request_complete_data.completion_time = base::TimeTicks::Now(); | 453 request_complete_data.completion_time = base::TimeTicks::Now(); |
452 request_complete_data.encoded_data_length = | 454 request_complete_data.encoded_data_length = |
453 request()->GetTotalReceivedBytes(); | 455 request()->GetTotalReceivedBytes(); |
454 request_complete_data.encoded_body_length = request()->GetRawBodyBytes(); | 456 request_complete_data.encoded_body_length = request()->GetRawBodyBytes(); |
| 457 request_complete_data.decoded_body_length = total_written_bytes_; |
455 | 458 |
456 url_loader_client_->OnComplete(request_complete_data); | 459 url_loader_client_->OnComplete(request_complete_data); |
457 controller->Resume(); | 460 controller->Resume(); |
458 } | 461 } |
459 | 462 |
460 bool MojoAsyncResourceHandler::CopyReadDataToDataPipe(bool* defer) { | 463 bool MojoAsyncResourceHandler::CopyReadDataToDataPipe(bool* defer) { |
461 while (buffer_bytes_read_ > 0) { | 464 while (buffer_bytes_read_ > 0) { |
462 scoped_refptr<net::IOBufferWithSize> dest; | 465 scoped_refptr<net::IOBufferWithSize> dest; |
463 if (!AllocateWriterIOBuffer(&dest, defer)) | 466 if (!AllocateWriterIOBuffer(&dest, defer)) |
464 return false; | 467 return false; |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
594 base::Bind(&MojoAsyncResourceHandler::OnUploadProgressACK, | 597 base::Bind(&MojoAsyncResourceHandler::OnUploadProgressACK, |
595 weak_factory_.GetWeakPtr())); | 598 weak_factory_.GetWeakPtr())); |
596 } | 599 } |
597 | 600 |
598 void MojoAsyncResourceHandler::OnUploadProgressACK() { | 601 void MojoAsyncResourceHandler::OnUploadProgressACK() { |
599 if (upload_progress_tracker_) | 602 if (upload_progress_tracker_) |
600 upload_progress_tracker_->OnAckReceived(); | 603 upload_progress_tracker_->OnAckReceived(); |
601 } | 604 } |
602 | 605 |
603 } // namespace content | 606 } // namespace content |
OLD | NEW |