Chromium Code Reviews| Index: content/browser/loader/async_resource_handler.cc |
| diff --git a/content/browser/loader/async_resource_handler.cc b/content/browser/loader/async_resource_handler.cc |
| index 321b0de619bf68d689a4476e6487286ff235210e..6908304be1e4a03d52227fd6c12c7058f2ab9eb6 100644 |
| --- a/content/browser/loader/async_resource_handler.cc |
| +++ b/content/browser/loader/async_resource_handler.cc |
| @@ -72,6 +72,14 @@ void InitializeResourceBufferConstants() { |
| GetNumericArg("resource-buffer-max-allocation-size", &kMaxAllocationSize); |
| } |
| +// Returns the value of new_length - *cached_length, also updating |
| +// *cached_length to new_length. |
|
Mike West
2016/06/24 10:49:20
"length" is a weird-looking word. Especially when
Adam Rice
2016/07/07 06:50:09
You could try filing a bug against the English lan
|
| +int CalculateLengthDifference(int64_t new_length, int64_t* cached_length) { |
| + int length_difference = new_length - *cached_length; |
| + *cached_length = new_length; |
| + return length_difference; |
| +} |
| + |
| } // namespace |
| // Used when kOptimizeLoadingIPCForSmallResources is enabled. |
| @@ -117,6 +125,7 @@ class AsyncResourceHandler::InliningHelper { |
| // Returns true if the received data is sent to the consumer. |
| bool SendInlinedDataIfApplicable(int bytes_read, |
| int encoded_data_length, |
| + int encoded_body_length, |
| IPC::Sender* sender, |
| int request_id) { |
| DCHECK(sender); |
| @@ -129,7 +138,7 @@ class AsyncResourceHandler::InliningHelper { |
| leading_chunk_buffer_ = nullptr; |
| sender->Send(new ResourceMsg_InlinedDataChunkReceived( |
| - request_id, data, encoded_data_length)); |
| + request_id, data, encoded_data_length, encoded_body_length)); |
| return true; |
| } |
| @@ -206,7 +215,8 @@ AsyncResourceHandler::AsyncResourceHandler( |
| inlining_helper_(new InliningHelper), |
| last_upload_position_(0), |
| waiting_for_upload_progress_ack_(false), |
| - reported_transfer_size_(0) { |
| + reported_transfer_size_(0), |
| + reported_encoded_body_length_(0) { |
| InitializeResourceBufferConstants(); |
| } |
| @@ -440,10 +450,12 @@ bool AsyncResourceHandler::OnReadCompleted(int bytes_read, bool* defer) { |
| return false; |
| int encoded_data_length = CalculateEncodedDataLengthToReport(); |
| + int encoded_body_length = CalculateEncodedBodyLengthToReport(); |
| // Return early if InliningHelper handled the received data. |
| if (inlining_helper_->SendInlinedDataIfApplicable( |
| - bytes_read, encoded_data_length, filter, GetRequestID())) |
| + bytes_read, encoded_data_length, encoded_body_length, filter, |
| + GetRequestID())) |
| return true; |
| buffer_->ShrinkLastAllocation(bytes_read); |
| @@ -461,8 +473,9 @@ bool AsyncResourceHandler::OnReadCompleted(int bytes_read, bool* defer) { |
| int data_offset = buffer_->GetLastAllocationOffset(); |
| - filter->Send(new ResourceMsg_DataReceived( |
| - GetRequestID(), data_offset, bytes_read, encoded_data_length)); |
| + filter->Send(new ResourceMsg_DataReceived(GetRequestID(), data_offset, |
| + bytes_read, encoded_data_length, |
| + encoded_body_length)); |
| ++pending_data_count_; |
| if (!buffer_->CanAllocate()) { |
| @@ -576,10 +589,13 @@ bool AsyncResourceHandler::CheckForSufficientResource() { |
| } |
| int AsyncResourceHandler::CalculateEncodedDataLengthToReport() { |
| - int64_t current_transfer_size = request()->GetTotalReceivedBytes(); |
| - int encoded_data_length = current_transfer_size - reported_transfer_size_; |
| - reported_transfer_size_ = current_transfer_size; |
| - return encoded_data_length; |
| + return CalculateLengthDifference(request()->GetTotalReceivedBytes(), |
| + &reported_transfer_size_); |
| +} |
| + |
| +int AsyncResourceHandler::CalculateEncodedBodyLengthToReport() { |
| + return CalculateLengthDifference(request()->GetRawBodyBytes(), |
| + &reported_encoded_body_length_); |
| } |
| void AsyncResourceHandler::RecordHistogram() { |