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/task_manager/task_manager.h" | 5 #include "chrome/browser/task_manager/task_manager.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/i18n/number_formatting.h" | 8 #include "base/i18n/number_formatting.h" |
9 #include "base/i18n/rtl.h" | 9 #include "base/i18n/rtl.h" |
10 #include "base/prefs/pref_registry_simple.h" | 10 #include "base/prefs/pref_registry_simple.h" |
(...skipping 1059 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1070 // action the first time. | 1070 // action the first time. |
1071 update_requests_++; | 1071 update_requests_++; |
1072 if (update_requests_ > 1) | 1072 if (update_requests_ > 1) |
1073 return; | 1073 return; |
1074 DCHECK_EQ(1, update_requests_); | 1074 DCHECK_EQ(1, update_requests_); |
1075 DCHECK_NE(TASK_PENDING, update_state_); | 1075 DCHECK_NE(TASK_PENDING, update_state_); |
1076 | 1076 |
1077 // If update_state_ is STOPPING, it means a task is still pending. Setting | 1077 // If update_state_ is STOPPING, it means a task is still pending. Setting |
1078 // it to TASK_PENDING ensures the tasks keep being posted (by Refresh()). | 1078 // it to TASK_PENDING ensures the tasks keep being posted (by Refresh()). |
1079 if (update_state_ == IDLE) { | 1079 if (update_state_ == IDLE) { |
1080 MessageLoop::current()->PostTask( | 1080 base::MessageLoop::current()->PostTask( |
1081 FROM_HERE, | 1081 FROM_HERE, |
1082 base::Bind(&TaskManagerModel::RefreshCallback, this)); | 1082 base::Bind(&TaskManagerModel::RefreshCallback, this)); |
1083 } | 1083 } |
1084 update_state_ = TASK_PENDING; | 1084 update_state_ = TASK_PENDING; |
1085 | 1085 |
1086 // Notify resource providers that we are updating. | 1086 // Notify resource providers that we are updating. |
1087 StartListening(); | 1087 StartListening(); |
1088 | 1088 |
1089 if (!resources_.empty()) { | 1089 if (!resources_.empty()) { |
1090 FOR_EACH_OBSERVER(TaskManagerModelObserver, observer_list_, | 1090 FOR_EACH_OBSERVER(TaskManagerModelObserver, observer_list_, |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1226 if (info) | 1226 if (info) |
1227 info->GetAssociatedRenderView(&render_process_host_child_id, &routing_id); | 1227 info->GetAssociatedRenderView(&render_process_host_child_id, &routing_id); |
1228 | 1228 |
1229 // Get the origin PID of the request's originator. This will only be set for | 1229 // Get the origin PID of the request's originator. This will only be set for |
1230 // plugins - for renderer or browser initiated requests it will be zero. | 1230 // plugins - for renderer or browser initiated requests it will be zero. |
1231 int origin_pid = 0; | 1231 int origin_pid = 0; |
1232 if (info) | 1232 if (info) |
1233 origin_pid = info->GetOriginPID(); | 1233 origin_pid = info->GetOriginPID(); |
1234 | 1234 |
1235 if (bytes_read_buffer_.empty()) { | 1235 if (bytes_read_buffer_.empty()) { |
1236 MessageLoop::current()->PostDelayedTask( | 1236 base::MessageLoop::current()->PostDelayedTask( |
1237 FROM_HERE, | 1237 FROM_HERE, |
1238 base::Bind(&TaskManagerModel::NotifyMultipleBytesRead, this), | 1238 base::Bind(&TaskManagerModel::NotifyMultipleBytesRead, this), |
1239 base::TimeDelta::FromSeconds(1)); | 1239 base::TimeDelta::FromSeconds(1)); |
1240 } | 1240 } |
1241 | 1241 |
1242 bytes_read_buffer_.push_back( | 1242 bytes_read_buffer_.push_back( |
1243 BytesReadParam(origin_pid, render_process_host_child_id, | 1243 BytesReadParam(origin_pid, render_process_host_child_id, |
1244 routing_id, byte_count)); | 1244 routing_id, byte_count)); |
1245 } | 1245 } |
1246 | 1246 |
1247 TaskManagerModel::~TaskManagerModel() { | 1247 TaskManagerModel::~TaskManagerModel() { |
1248 } | 1248 } |
1249 | 1249 |
1250 void TaskManagerModel::RefreshCallback() { | 1250 void TaskManagerModel::RefreshCallback() { |
1251 DCHECK_NE(IDLE, update_state_); | 1251 DCHECK_NE(IDLE, update_state_); |
1252 | 1252 |
1253 if (update_state_ == STOPPING) { | 1253 if (update_state_ == STOPPING) { |
1254 // We have been asked to stop. | 1254 // We have been asked to stop. |
1255 update_state_ = IDLE; | 1255 update_state_ = IDLE; |
1256 return; | 1256 return; |
1257 } | 1257 } |
1258 | 1258 |
1259 Refresh(); | 1259 Refresh(); |
1260 | 1260 |
1261 // Schedule the next update. | 1261 // Schedule the next update. |
1262 MessageLoop::current()->PostDelayedTask( | 1262 base::MessageLoop::current()->PostDelayedTask( |
1263 FROM_HERE, | 1263 FROM_HERE, |
1264 base::Bind(&TaskManagerModel::RefreshCallback, this), | 1264 base::Bind(&TaskManagerModel::RefreshCallback, this), |
1265 base::TimeDelta::FromMilliseconds(kUpdateTimeMs)); | 1265 base::TimeDelta::FromMilliseconds(kUpdateTimeMs)); |
1266 } | 1266 } |
1267 | 1267 |
1268 void TaskManagerModel::Refresh() { | 1268 void TaskManagerModel::Refresh() { |
1269 goat_salt_ = base::RandUint64(); | 1269 goat_salt_ = base::RandUint64(); |
1270 | 1270 |
1271 per_resource_cache_.clear(); | 1271 per_resource_cache_.clear(); |
1272 per_process_cache_.clear(); | 1272 per_process_cache_.clear(); |
(...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1577 } | 1577 } |
1578 return count; | 1578 return count; |
1579 } | 1579 } |
1580 | 1580 |
1581 TaskManager::TaskManager() | 1581 TaskManager::TaskManager() |
1582 : model_(new TaskManagerModel(this)) { | 1582 : model_(new TaskManagerModel(this)) { |
1583 } | 1583 } |
1584 | 1584 |
1585 TaskManager::~TaskManager() { | 1585 TaskManager::~TaskManager() { |
1586 } | 1586 } |
OLD | NEW |