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 976 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
987 FOR_EACH_OBSERVER(TaskManagerModelObserver, observer_list_, | 987 FOR_EACH_OBSERVER(TaskManagerModelObserver, observer_list_, |
988 OnItemsAdded(new_entry_index, 1)); | 988 OnItemsAdded(new_entry_index, 1)); |
989 } | 989 } |
990 | 990 |
991 void TaskManagerModel::RemoveResource(Resource* resource) { | 991 void TaskManagerModel::RemoveResource(Resource* resource) { |
992 base::ProcessHandle process = resource->GetProcess(); | 992 base::ProcessHandle process = resource->GetProcess(); |
993 | 993 |
994 // Find the associated group. | 994 // Find the associated group. |
995 GroupMap::iterator group_iter = group_map_.find(process); | 995 GroupMap::iterator group_iter = group_map_.find(process); |
996 DCHECK(group_iter != group_map_.end()); | 996 DCHECK(group_iter != group_map_.end()); |
| 997 if (group_iter == group_map_.end()) |
| 998 return; |
997 ResourceList& group_entries = group_iter->second; | 999 ResourceList& group_entries = group_iter->second; |
998 | 1000 |
999 // Remove the entry from the group map. | 1001 // Remove the entry from the group map. |
1000 ResourceList::iterator iter = std::find(group_entries.begin(), | 1002 ResourceList::iterator iter = std::find(group_entries.begin(), |
1001 group_entries.end(), | 1003 group_entries.end(), |
1002 resource); | 1004 resource); |
1003 DCHECK(iter != group_entries.end()); | 1005 DCHECK(iter != group_entries.end()); |
1004 group_entries.erase(iter); | 1006 if (iter != group_entries.end()) |
| 1007 group_entries.erase(iter); |
1005 | 1008 |
1006 // If there are no more entries for that process, do the clean-up. | 1009 // If there are no more entries for that process, do the clean-up. |
1007 if (group_entries.empty()) { | 1010 if (group_entries.empty()) { |
1008 group_map_.erase(group_iter); | 1011 group_map_.erase(group_iter); |
1009 | 1012 |
1010 // Nobody is using this process, we don't need the process metrics anymore. | 1013 // Nobody is using this process, we don't need the process metrics anymore. |
1011 MetricsMap::iterator pm_iter = metrics_map_.find(process); | 1014 MetricsMap::iterator pm_iter = metrics_map_.find(process); |
1012 DCHECK(pm_iter != metrics_map_.end()); | 1015 DCHECK(pm_iter != metrics_map_.end()); |
1013 if (pm_iter != metrics_map_.end()) { | 1016 if (pm_iter != metrics_map_.end()) { |
1014 delete pm_iter->second; | 1017 delete pm_iter->second; |
1015 metrics_map_.erase(process); | 1018 metrics_map_.erase(process); |
1016 } | 1019 } |
1017 } | 1020 } |
1018 | 1021 |
1019 // Prepare to remove the entry from the model list. | 1022 // Remove the entry from the model list. |
1020 iter = std::find(resources_.begin(), resources_.end(), resource); | 1023 iter = std::find(resources_.begin(), resources_.end(), resource); |
1021 DCHECK(iter != resources_.end()); | 1024 DCHECK(iter != resources_.end()); |
1022 int index = static_cast<int>(iter - resources_.begin()); | 1025 if (iter != resources_.end()) { |
1023 | 1026 int index = static_cast<int>(iter - resources_.begin()); |
1024 // Notify the observers that the contents will change. | 1027 // Notify the observers that the contents will change. |
1025 FOR_EACH_OBSERVER(TaskManagerModelObserver, observer_list_, | 1028 FOR_EACH_OBSERVER(TaskManagerModelObserver, observer_list_, |
1026 OnItemsToBeRemoved(index, 1)); | 1029 OnItemsToBeRemoved(index, 1)); |
1027 | 1030 // Now actually remove the entry from the model list. |
1028 // Now actually remove the entry from the model list. | 1031 resources_.erase(iter); |
1029 resources_.erase(iter); | 1032 // Notify the table that the contents have changed. |
| 1033 FOR_EACH_OBSERVER(TaskManagerModelObserver, observer_list_, |
| 1034 OnItemsRemoved(index, 1)); |
| 1035 } |
1030 | 1036 |
1031 // Remove the entry from the network maps. | 1037 // Remove the entry from the network maps. |
1032 ResourceValueMap::iterator net_iter = | 1038 ResourceValueMap::iterator net_iter = |
1033 current_byte_count_map_.find(resource); | 1039 current_byte_count_map_.find(resource); |
1034 if (net_iter != current_byte_count_map_.end()) | 1040 if (net_iter != current_byte_count_map_.end()) |
1035 current_byte_count_map_.erase(net_iter); | 1041 current_byte_count_map_.erase(net_iter); |
1036 | |
1037 // Notify the table that the contents have changed. | |
1038 FOR_EACH_OBSERVER(TaskManagerModelObserver, observer_list_, | |
1039 OnItemsRemoved(index, 1)); | |
1040 } | 1042 } |
1041 | 1043 |
1042 void TaskManagerModel::StartUpdating() { | 1044 void TaskManagerModel::StartUpdating() { |
1043 // Multiple StartUpdating requests may come in, and we only need to take | 1045 // Multiple StartUpdating requests may come in, and we only need to take |
1044 // action the first time. | 1046 // action the first time. |
1045 update_requests_++; | 1047 update_requests_++; |
1046 if (update_requests_ > 1) | 1048 if (update_requests_ > 1) |
1047 return; | 1049 return; |
1048 DCHECK_EQ(1, update_requests_); | 1050 DCHECK_EQ(1, update_requests_); |
1049 DCHECK_NE(TASK_PENDING, update_state_); | 1051 DCHECK_NE(TASK_PENDING, update_state_); |
(...skipping 503 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1553 params.host_desktop_type = desktop_type; | 1555 params.host_desktop_type = desktop_type; |
1554 chrome::Navigate(¶ms); | 1556 chrome::Navigate(¶ms); |
1555 } | 1557 } |
1556 | 1558 |
1557 TaskManager::TaskManager() | 1559 TaskManager::TaskManager() |
1558 : model_(new TaskManagerModel(this)) { | 1560 : model_(new TaskManagerModel(this)) { |
1559 } | 1561 } |
1560 | 1562 |
1561 TaskManager::~TaskManager() { | 1563 TaskManager::~TaskManager() { |
1562 } | 1564 } |
OLD | NEW |