| Index: content/child/resource_dispatcher.cc | 
| diff --git a/content/child/resource_dispatcher.cc b/content/child/resource_dispatcher.cc | 
| index f8f9126c4a63ae5fcdb4dfa4bd48e858a5dc4b34..1f1cf3e8f5a576156444be7905759d19cb6f3c28 100644 | 
| --- a/content/child/resource_dispatcher.cc | 
| +++ b/content/child/resource_dispatcher.cc | 
| @@ -331,7 +331,12 @@ void ResourceDispatcher::OnReceivedInlinedDataChunk( | 
| DCHECK(!request_info->buffer.get()); | 
|  | 
| request_info->peer->OnReceivedData( | 
| -      base::MakeUnique<content::FixedReceivedData>(data, encoded_data_length)); | 
| +      base::MakeUnique<content::FixedReceivedData>(data)); | 
| + | 
| +  // Get the request info again as the client callback may modify the info. | 
| +  request_info = GetPendingRequestInfo(request_id); | 
| +  if (request_info && encoded_data_length > 0) | 
| +    request_info->peer->OnTransferSizeUpdated(encoded_data_length); | 
| } | 
|  | 
| void ResourceDispatcher::OnReceivedData(int request_id, | 
| @@ -360,13 +365,17 @@ void ResourceDispatcher::OnReceivedData(int request_id, | 
| } | 
|  | 
| std::unique_ptr<RequestPeer::ReceivedData> data = | 
| -        request_info->received_data_factory->Create(data_offset, data_length, | 
| -                                                    encoded_data_length); | 
| +        request_info->received_data_factory->Create(data_offset, data_length); | 
| // |data| takes care of ACKing. | 
| send_ack = false; | 
| request_info->peer->OnReceivedData(std::move(data)); | 
| } | 
|  | 
| +  // Get the request info again as the client callback may modify the info. | 
| +  request_info = GetPendingRequestInfo(request_id); | 
| +  if (request_info && encoded_data_length > 0) | 
| +    request_info->peer->OnTransferSizeUpdated(encoded_data_length); | 
| + | 
| // Acknowledge the reception of this data. | 
| if (send_ack) | 
| message_sender_->Send(new ResourceHostMsg_DataReceived_ACK(request_id)); | 
|  |