Chromium Code Reviews| 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 "chrome/browser/net/chrome_network_delegate.h" | 5 #include "chrome/browser/net/chrome_network_delegate.h" | 
| 6 | 6 | 
| 7 #include <stddef.h> | 7 #include <stddef.h> | 
| 8 #include <stdlib.h> | 8 #include <stdlib.h> | 
| 9 | 9 | 
| 10 #include <vector> | 10 #include <vector> | 
| (...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 344 void ChromeNetworkDelegate::OnResponseStarted(net::URLRequest* request, | 344 void ChromeNetworkDelegate::OnResponseStarted(net::URLRequest* request, | 
| 345 int net_error) { | 345 int net_error) { | 
| 346 extensions_delegate_->OnResponseStarted(request, net_error); | 346 extensions_delegate_->OnResponseStarted(request, net_error); | 
| 347 } | 347 } | 
| 348 | 348 | 
| 349 void ChromeNetworkDelegate::OnNetworkBytesReceived(net::URLRequest* request, | 349 void ChromeNetworkDelegate::OnNetworkBytesReceived(net::URLRequest* request, | 
| 350 int64_t bytes_received) { | 350 int64_t bytes_received) { | 
| 351 #if !defined(OS_ANDROID) | 351 #if !defined(OS_ANDROID) | 
| 352 // Note: Currently, OnNetworkBytesReceived is only implemented for HTTP jobs, | 352 // Note: Currently, OnNetworkBytesReceived is only implemented for HTTP jobs, | 
| 353 // not FTP or other types, so those kinds of bytes will not be reported here. | 353 // not FTP or other types, so those kinds of bytes will not be reported here. | 
| 354 task_manager::TaskManagerInterface::OnRawBytesRead(*request, bytes_received); | 354 | 
| 355 // Only net::URLRequestJob instances created by the ResourceDispatcherHost | |
| 356 // have an associated ResourceRequestInfo and a render frame associated. | |
| 357 // All other jobs will have -1 returned for the render process child and | |
| 358 // routing ids - the jobs may still match a resource based on their origin id, | |
| 359 // otherwise BytesRead() will attribute the activity to the Browser resource. | |
| 360 const content::ResourceRequestInfo* info = | |
| 361 content::ResourceRequestInfo::ForRequest(request); | |
| 362 int child_id = -1; | |
| 363 int route_id = -1; | |
| 364 | |
| 365 if (info) | |
| 366 info->GetAssociatedRenderFrame(&child_id, &route_id); | |
| 367 | |
| 368 // Get the origin PID of the request's originator. This will only be set for | |
| 369 // plugins - for renderer or browser initiated requests it will be zero. | |
| 370 int origin_pid = info ? info->GetOriginPID() : 0; | |
| 371 task_manager::BytesTransferredKey key = {origin_pid, child_id, route_id}; | |
| 372 int64_t bytes_sent = 0; | |
| 373 task_manager::TaskManagerInterface::OnRawBytesTransferred(key, bytes_received, | |
| 374 bytes_sent); | |
| 355 #endif // !defined(OS_ANDROID) | 375 #endif // !defined(OS_ANDROID) | 
| 356 | 376 | 
| 357 ReportDataUsageStats(request, 0 /* tx_bytes */, bytes_received); | 377 ReportDataUsageStats(request, 0 /* tx_bytes */, bytes_received); | 
| 358 } | 378 } | 
| 359 | 379 | 
| 360 void ChromeNetworkDelegate::OnNetworkBytesSent(net::URLRequest* request, | 380 void ChromeNetworkDelegate::OnNetworkBytesSent(net::URLRequest* request, | 
| 361 int64_t bytes_sent) { | 381 int64_t bytes_sent) { | 
| 362 #if !defined(OS_ANDROID) | 382 #if !defined(OS_ANDROID) | 
| 363 // Note: Currently, OnNetworkBytesSent is only implemented for HTTP jobs, | 383 // Note: Currently, OnNetworkBytesSent is only implemented for HTTP jobs, | 
| 364 // not FTP or other types, so those kinds of bytes will not be reported here. | 384 // not FTP or other types, so those kinds of bytes will not be reported here. | 
| 365 task_manager::TaskManagerInterface::OnRawBytesSent(*request, bytes_sent); | 385 | 
| 386 // Only net::URLRequestJob instances created by the ResourceDispatcherHost | |
| 387 // have an associated ResourceRequestInfo and a render frame associated. | |
| 388 // All other jobs will have -1 returned for the render process child and | |
| 389 // routing ids - the jobs may still match a resource based on their origin id, | |
| 390 // otherwise BytesRead() will attribute the activity to the Browser resource. | |
| 391 const content::ResourceRequestInfo* info = | |
| 392 content::ResourceRequestInfo::ForRequest(request); | |
| 393 int child_id = -1; | |
| 394 int route_id = -1; | |
| 395 | |
| 396 if (info) | |
| 397 info->GetAssociatedRenderFrame(&child_id, &route_id); | |
| 398 | |
| 399 // Get the origin PID of the request's originator. This will only be set for | |
| 400 // plugins - for renderer or browser initiated requests it will be zero. | |
| 401 int origin_pid = info ? info->GetOriginPID() : 0; | |
| 402 task_manager::BytesTransferredKey key = {origin_pid, child_id, route_id}; | |
| 403 int bytes_received = 0; | |
| 404 task_manager::TaskManagerInterface::OnRawBytesTransferred(key, bytes_received, | |
| 
 
ncarter (slow)
2017/06/29 23:40:00
Let's adjust this layering slightly. It shouldn't
 
cburn
2017/06/30 18:04:38
Done. That is a much better solution.
 
 | |
| 405 bytes_sent); | |
| 366 #endif // !defined(OS_ANDROID) | 406 #endif // !defined(OS_ANDROID) | 
| 367 | 407 | 
| 368 ReportDataUsageStats(request, bytes_sent, 0 /* rx_bytes */); | 408 ReportDataUsageStats(request, bytes_sent, 0 /* rx_bytes */); | 
| 369 } | 409 } | 
| 370 | 410 | 
| 371 void ChromeNetworkDelegate::OnCompleted(net::URLRequest* request, | 411 void ChromeNetworkDelegate::OnCompleted(net::URLRequest* request, | 
| 372 bool started, | 412 bool started, | 
| 373 int net_error) { | 413 int net_error) { | 
| 374 DCHECK_NE(net::ERR_IO_PENDING, net_error); | 414 DCHECK_NE(net::ERR_IO_PENDING, net_error); | 
| 375 | 415 | 
| (...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 607 if (!data_use_aggregator_) | 647 if (!data_use_aggregator_) | 
| 608 return; | 648 return; | 
| 609 | 649 | 
| 610 if (is_data_usage_off_the_record_) { | 650 if (is_data_usage_off_the_record_) { | 
| 611 data_use_aggregator_->ReportOffTheRecordDataUse(tx_bytes, rx_bytes); | 651 data_use_aggregator_->ReportOffTheRecordDataUse(tx_bytes, rx_bytes); | 
| 612 return; | 652 return; | 
| 613 } | 653 } | 
| 614 | 654 | 
| 615 data_use_aggregator_->ReportDataUse(request, tx_bytes, rx_bytes); | 655 data_use_aggregator_->ReportDataUse(request, tx_bytes, rx_bytes); | 
| 616 } | 656 } | 
| OLD | NEW |