Chromium Code Reviews| Index: chrome/browser/task_manager/sampling/task_manager_impl.cc |
| diff --git a/chrome/browser/task_manager/sampling/task_manager_impl.cc b/chrome/browser/task_manager/sampling/task_manager_impl.cc |
| index 9cae9908ef87860914bc22bc088d21052aab0ee8..963e177665cc898c6061e1b152b8093d53acb62a 100644 |
| --- a/chrome/browser/task_manager/sampling/task_manager_impl.cc |
| +++ b/chrome/browser/task_manager/sampling/task_manager_impl.cc |
| @@ -455,22 +455,24 @@ void TaskManagerImpl::TaskUnresponsive(Task* task) { |
| } |
| // static |
| -void TaskManagerImpl::OnMultipleBytesTransferredUI( |
| - std::vector<BytesTransferredParam>* params) { |
| +void TaskManagerImpl::OnMultipleBytesTransferredUI(BytesTransferredMap params) { |
| DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
|
ncarter (slow)
2017/06/30 20:08:28
Inside the for loop below, prefer "const auto&" to
cburn
2017/07/05 16:30:05
Done.
|
| - DCHECK(params); |
| - |
| - for (BytesTransferredParam& param : *params) { |
| - if (!GetInstance()->UpdateTasksWithBytesTransferred(param)) { |
| + for (auto it : params) { |
|
ncarter (slow)
2017/06/30 20:08:28
The name |it|, by convention, suggests that this i
cburn
2017/07/05 16:30:05
I went with entry. I may try to go through and cha
|
| + if (!GetInstance()->UpdateTasksWithBytesTransferred(it.first, it.second)) { |
|
ncarter (slow)
2017/06/30 20:08:28
The loop body might get more readable if you creat
cburn
2017/07/05 16:30:05
Done. I am all for making loops more readable.
|
| // We can't match a task to the notification. That might mean the |
| // tab that started a download was closed, or the request may have had |
| // no originating task associated with it in the first place. |
| // We attribute orphaned/unaccounted activity to the Browser process. |
| - DCHECK(param.origin_pid || (param.child_id != -1)); |
| - |
| - param.origin_pid = 0; |
| - param.child_id = param.route_id = -1; |
| - GetInstance()->UpdateTasksWithBytesTransferred(param); |
| + DCHECK(it.first.origin_pid || (it.first.child_id != -1)); |
| + // Since the key is meant to be immutable we create a fake key for the |
| + // purpose of attributing the orphaned/unaccounted activity to the Browser |
| + // process. |
| + int dummy_origin_pid = 0; |
| + int dummy_child_id = -1; |
| + int dummy_route_id = -1; |
| + BytesTransferredKey dummy_key = {dummy_origin_pid, dummy_child_id, |
| + dummy_route_id}; |
| + GetInstance()->UpdateTasksWithBytesTransferred(dummy_key, it.second); |
| } |
| } |
| } |
| @@ -507,7 +509,8 @@ void TaskManagerImpl::StartUpdating() { |
| for (const auto& provider : task_providers_) |
| provider->SetObserver(this); |
| - io_thread_helper_manager_.reset(new IoThreadHelperManager); |
| + io_thread_helper_manager_.reset(new IoThreadHelperManager( |
| + base::BindRepeating(&TaskManagerImpl::OnMultipleBytesTransferredUI))); |
| } |
| void TaskManagerImpl::StopUpdating() { |
| @@ -539,11 +542,11 @@ Task* TaskManagerImpl::GetTaskByPidOrRoute(int origin_pid, |
| } |
| bool TaskManagerImpl::UpdateTasksWithBytesTransferred( |
| + const BytesTransferredKey& key, |
| const BytesTransferredParam& param) { |
| DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| - Task* task = |
| - GetTaskByPidOrRoute(param.origin_pid, param.child_id, param.route_id); |
| + Task* task = GetTaskByPidOrRoute(key.origin_pid, key.child_id, key.route_id); |
| if (task) { |
| task->OnNetworkBytesRead(param.byte_read_count); |
| task->OnNetworkBytesSent(param.byte_sent_count); |