OLD | NEW |
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 "content/browser/loader/async_resource_handler.h" | 5 #include "content/browser/loader/async_resource_handler.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
324 return false; | 324 return false; |
325 | 325 |
326 // TODO(erikchen): Temporary debugging. http://crbug.com/527588. | 326 // TODO(erikchen): Temporary debugging. http://crbug.com/527588. |
327 CHECK_LE(size, kBufferSize); | 327 CHECK_LE(size, kBufferSize); |
328 filter->Send(new ResourceMsg_SetDataBuffer( | 328 filter->Send(new ResourceMsg_SetDataBuffer( |
329 GetRequestID(), handle, size, filter->peer_pid())); | 329 GetRequestID(), handle, size, filter->peer_pid())); |
330 sent_first_data_msg_ = true; | 330 sent_first_data_msg_ = true; |
331 } | 331 } |
332 | 332 |
333 int data_offset = buffer_->GetLastAllocationOffset(); | 333 int data_offset = buffer_->GetLastAllocationOffset(); |
334 | 334 int encoded_data_length = CalculateEncodedDataLengthToReport(); |
335 int64_t current_transfer_size = request()->GetTotalReceivedBytes(); | |
336 int encoded_data_length = current_transfer_size - reported_transfer_size_; | |
337 reported_transfer_size_ = current_transfer_size; | |
338 | 335 |
339 // TODO(erikchen): Temporary debugging. http://crbug.com/527588. | 336 // TODO(erikchen): Temporary debugging. http://crbug.com/527588. |
340 CHECK_LE(data_offset, kBufferSize); | 337 CHECK_LE(data_offset, kBufferSize); |
341 | 338 |
342 filter->Send(new ResourceMsg_DataReceivedDebug(GetRequestID(), data_offset)); | 339 filter->Send(new ResourceMsg_DataReceivedDebug(GetRequestID(), data_offset)); |
343 filter->Send(new ResourceMsg_DataReceivedDebug2( | 340 filter->Send(new ResourceMsg_DataReceivedDebug2( |
344 GetRequestID(), data_offset, bytes_read, encoded_data_length)); | 341 GetRequestID(), data_offset, bytes_read, encoded_data_length)); |
345 filter->Send(new ResourceMsg_DataReceived( | 342 filter->Send(new ResourceMsg_DataReceived( |
346 GetRequestID(), data_offset, bytes_read, encoded_data_length)); | 343 GetRequestID(), data_offset, bytes_read, encoded_data_length)); |
347 ++pending_data_count_; | 344 ++pending_data_count_; |
348 | 345 |
349 if (!buffer_->CanAllocate()) { | 346 if (!buffer_->CanAllocate()) { |
350 *defer = did_defer_ = true; | 347 *defer = did_defer_ = true; |
351 OnDefer(); | 348 OnDefer(); |
352 } | 349 } |
353 | 350 |
354 return true; | 351 return true; |
355 } | 352 } |
356 | 353 |
357 void AsyncResourceHandler::OnDataDownloaded(int bytes_downloaded) { | 354 void AsyncResourceHandler::OnDataDownloaded(int bytes_downloaded) { |
358 int64_t current_transfer_size = request()->GetTotalReceivedBytes(); | 355 int encoded_data_length = CalculateEncodedDataLengthToReport(); |
359 int encoded_data_length = current_transfer_size - reported_transfer_size_; | |
360 reported_transfer_size_ = current_transfer_size; | |
361 | 356 |
362 ResourceMessageFilter* filter = GetFilter(); | 357 ResourceMessageFilter* filter = GetFilter(); |
363 if (filter) { | 358 if (filter) { |
364 filter->Send(new ResourceMsg_DataDownloaded( | 359 filter->Send(new ResourceMsg_DataDownloaded( |
365 GetRequestID(), bytes_downloaded, encoded_data_length)); | 360 GetRequestID(), bytes_downloaded, encoded_data_length)); |
366 } | 361 } |
367 } | 362 } |
368 | 363 |
369 void AsyncResourceHandler::OnResponseCompleted( | 364 void AsyncResourceHandler::OnResponseCompleted( |
370 const net::URLRequestStatus& status, | 365 const net::URLRequestStatus& status, |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
448 return true; | 443 return true; |
449 has_checked_for_sufficient_resources_ = true; | 444 has_checked_for_sufficient_resources_ = true; |
450 | 445 |
451 if (rdh_->HasSufficientResourcesForRequest(request())) | 446 if (rdh_->HasSufficientResourcesForRequest(request())) |
452 return true; | 447 return true; |
453 | 448 |
454 controller()->CancelWithError(net::ERR_INSUFFICIENT_RESOURCES); | 449 controller()->CancelWithError(net::ERR_INSUFFICIENT_RESOURCES); |
455 return false; | 450 return false; |
456 } | 451 } |
457 | 452 |
| 453 int AsyncResourceHandler::CalculateEncodedDataLengthToReport() { |
| 454 int64_t current_transfer_size = request()->GetTotalReceivedBytes(); |
| 455 int encoded_data_length = current_transfer_size - reported_transfer_size_; |
| 456 reported_transfer_size_ = current_transfer_size; |
| 457 return encoded_data_length; |
| 458 } |
| 459 |
458 } // namespace content | 460 } // namespace content |
OLD | NEW |