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 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
193 | 193 |
194 TaskManagerModel::PerResourceValues::PerResourceValues() | 194 TaskManagerModel::PerResourceValues::PerResourceValues() |
195 : is_title_valid(false), | 195 : is_title_valid(false), |
196 is_profile_name_valid(false), | 196 is_profile_name_valid(false), |
197 network_usage(0), | 197 network_usage(0), |
198 is_process_id_valid(false), | 198 is_process_id_valid(false), |
199 process_id(0), | 199 process_id(0), |
200 is_goats_teleported_valid(false), | 200 is_goats_teleported_valid(false), |
201 goats_teleported(0), | 201 goats_teleported(0), |
202 is_webcore_stats_valid(false), | 202 is_webcore_stats_valid(false), |
203 is_fps_valid(false), | |
204 fps(0), | |
205 is_sqlite_memory_bytes_valid(false), | 203 is_sqlite_memory_bytes_valid(false), |
206 sqlite_memory_bytes(0), | 204 sqlite_memory_bytes(0), |
207 is_v8_memory_valid(false), | 205 is_v8_memory_valid(false), |
208 v8_memory_allocated(0), | 206 v8_memory_allocated(0), |
209 v8_memory_used(0) {} | 207 v8_memory_used(0) {} |
210 | 208 |
211 TaskManagerModel::PerResourceValues::~PerResourceValues() {} | 209 TaskManagerModel::PerResourceValues::~PerResourceValues() {} |
212 | 210 |
213 TaskManagerModel::PerProcessValues::PerProcessValues() | 211 TaskManagerModel::PerProcessValues::PerProcessValues() |
214 : is_cpu_usage_valid(false), | 212 : is_cpu_usage_valid(false), |
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
369 | 367 |
370 case IDS_TASK_MANAGER_WEBCORE_IMAGE_CACHE_COLUMN: | 368 case IDS_TASK_MANAGER_WEBCORE_IMAGE_CACHE_COLUMN: |
371 return GetResourceWebCoreImageCacheSize(index); | 369 return GetResourceWebCoreImageCacheSize(index); |
372 | 370 |
373 case IDS_TASK_MANAGER_WEBCORE_SCRIPTS_CACHE_COLUMN: | 371 case IDS_TASK_MANAGER_WEBCORE_SCRIPTS_CACHE_COLUMN: |
374 return GetResourceWebCoreScriptsCacheSize(index); | 372 return GetResourceWebCoreScriptsCacheSize(index); |
375 | 373 |
376 case IDS_TASK_MANAGER_WEBCORE_CSS_CACHE_COLUMN: | 374 case IDS_TASK_MANAGER_WEBCORE_CSS_CACHE_COLUMN: |
377 return GetResourceWebCoreCSSCacheSize(index); | 375 return GetResourceWebCoreCSSCacheSize(index); |
378 | 376 |
379 case IDS_TASK_MANAGER_FPS_COLUMN: | |
380 return GetResourceFPS(index); | |
381 | |
382 case IDS_TASK_MANAGER_VIDEO_MEMORY_COLUMN: | 377 case IDS_TASK_MANAGER_VIDEO_MEMORY_COLUMN: |
383 return GetResourceVideoMemory(index); | 378 return GetResourceVideoMemory(index); |
384 | 379 |
385 case IDS_TASK_MANAGER_SQLITE_MEMORY_USED_COLUMN: | 380 case IDS_TASK_MANAGER_SQLITE_MEMORY_USED_COLUMN: |
386 return GetResourceSqliteMemoryUsed(index); | 381 return GetResourceSqliteMemoryUsed(index); |
387 | 382 |
388 case IDS_TASK_MANAGER_JAVASCRIPT_MEMORY_ALLOCATED_COLUMN: | 383 case IDS_TASK_MANAGER_JAVASCRIPT_MEMORY_ALLOCATED_COLUMN: |
389 return GetResourceV8MemoryAllocatedSize(index); | 384 return GetResourceV8MemoryAllocatedSize(index); |
390 | 385 |
391 case IDS_TASK_MANAGER_NACL_DEBUG_STUB_PORT_COLUMN: | 386 case IDS_TASK_MANAGER_NACL_DEBUG_STUB_PORT_COLUMN: |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
514 size_t video_memory; | 509 size_t video_memory; |
515 bool has_duplicates; | 510 bool has_duplicates; |
516 if (!GetVideoMemory(index, &video_memory, &has_duplicates) || !video_memory) | 511 if (!GetVideoMemory(index, &video_memory, &has_duplicates) || !video_memory) |
517 return base::ASCIIToUTF16("N/A"); | 512 return base::ASCIIToUTF16("N/A"); |
518 if (has_duplicates) { | 513 if (has_duplicates) { |
519 return GetMemCellText(video_memory) + base::ASCIIToUTF16("*"); | 514 return GetMemCellText(video_memory) + base::ASCIIToUTF16("*"); |
520 } | 515 } |
521 return GetMemCellText(video_memory); | 516 return GetMemCellText(video_memory); |
522 } | 517 } |
523 | 518 |
524 base::string16 TaskManagerModel::GetResourceFPS( | |
525 int index) const { | |
526 float fps = 0; | |
527 if (!GetFPS(index, &fps)) | |
528 return l10n_util::GetStringUTF16(IDS_TASK_MANAGER_NA_CELL_TEXT); | |
529 return base::UTF8ToUTF16(base::StringPrintf("%.0f", fps)); | |
530 } | |
531 | |
532 base::string16 TaskManagerModel::GetResourceSqliteMemoryUsed(int index) const { | 519 base::string16 TaskManagerModel::GetResourceSqliteMemoryUsed(int index) const { |
533 size_t bytes = 0; | 520 size_t bytes = 0; |
534 if (!GetSqliteMemoryUsedBytes(index, &bytes)) | 521 if (!GetSqliteMemoryUsedBytes(index, &bytes)) |
535 return l10n_util::GetStringUTF16(IDS_TASK_MANAGER_NA_CELL_TEXT); | 522 return l10n_util::GetStringUTF16(IDS_TASK_MANAGER_NA_CELL_TEXT); |
536 return GetMemCellText(bytes); | 523 return GetMemCellText(bytes); |
537 } | 524 } |
538 | 525 |
539 base::string16 TaskManagerModel::GetResourceIdleWakeupsPerSecond(int index) | 526 base::string16 TaskManagerModel::GetResourceIdleWakeupsPerSecond(int index) |
540 const { | 527 const { |
541 return base::FormatNumber(GetIdleWakeupsPerSecond(GetResource(index))); | 528 return base::FormatNumber(GetIdleWakeupsPerSecond(GetResource(index))); |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
672 return false; | 659 return false; |
673 values.is_video_memory_valid = true; | 660 values.is_video_memory_valid = true; |
674 values.video_memory = i->second.video_memory; | 661 values.video_memory = i->second.video_memory; |
675 values.video_memory_has_duplicates = i->second.has_duplicates; | 662 values.video_memory_has_duplicates = i->second.has_duplicates; |
676 } | 663 } |
677 *video_memory = values.video_memory; | 664 *video_memory = values.video_memory; |
678 *has_duplicates = values.video_memory_has_duplicates; | 665 *has_duplicates = values.video_memory_has_duplicates; |
679 return true; | 666 return true; |
680 } | 667 } |
681 | 668 |
682 bool TaskManagerModel::GetFPS(int index, float* result) const { | |
683 *result = 0; | |
684 PerResourceValues& values(GetPerResourceValues(index)); | |
685 if (!values.is_fps_valid) { | |
686 if (!GetResource(index)->ReportsFPS()) | |
687 return false; | |
688 values.is_fps_valid = true; | |
689 values.fps = GetResource(index)->GetFPS(); | |
690 } | |
691 *result = values.fps; | |
692 return true; | |
693 } | |
694 | |
695 bool TaskManagerModel::GetSqliteMemoryUsedBytes( | 669 bool TaskManagerModel::GetSqliteMemoryUsedBytes( |
696 int index, | 670 int index, |
697 size_t* result) const { | 671 size_t* result) const { |
698 *result = 0; | 672 *result = 0; |
699 PerResourceValues& values(GetPerResourceValues(index)); | 673 PerResourceValues& values(GetPerResourceValues(index)); |
700 if (!values.is_sqlite_memory_bytes_valid) { | 674 if (!values.is_sqlite_memory_bytes_valid) { |
701 if (!GetResource(index)->ReportsSqliteMemoryUsed()) | 675 if (!GetResource(index)->ReportsSqliteMemoryUsed()) |
702 return false; | 676 return false; |
703 values.is_sqlite_memory_bytes_valid = true; | 677 values.is_sqlite_memory_bytes_valid = true; |
704 values.sqlite_memory_bytes = GetResource(index)->SqliteMemoryUsedBytes(); | 678 values.sqlite_memory_bytes = GetResource(index)->SqliteMemoryUsedBytes(); |
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
923 return ValueCompare(stats1.cssStyleSheets.size, | 897 return ValueCompare(stats1.cssStyleSheets.size, |
924 stats2.cssStyleSheets.size); | 898 stats2.cssStyleSheets.size); |
925 default: | 899 default: |
926 NOTREACHED(); | 900 NOTREACHED(); |
927 return 0; | 901 return 0; |
928 } | 902 } |
929 } | 903 } |
930 return OrderUnavailableValue(row1_stats_valid, row2_stats_valid); | 904 return OrderUnavailableValue(row1_stats_valid, row2_stats_valid); |
931 } | 905 } |
932 | 906 |
933 case IDS_TASK_MANAGER_FPS_COLUMN: | |
934 return ValueCompareMember( | |
935 this, &TaskManagerModel::GetFPS, row1, row2); | |
936 | |
937 case IDS_TASK_MANAGER_VIDEO_MEMORY_COLUMN: { | 907 case IDS_TASK_MANAGER_VIDEO_MEMORY_COLUMN: { |
938 size_t value1; | 908 size_t value1; |
939 size_t value2; | 909 size_t value2; |
940 bool has_duplicates; | 910 bool has_duplicates; |
941 bool value1_valid = GetVideoMemory(row1, &value1, &has_duplicates); | 911 bool value1_valid = GetVideoMemory(row1, &value1, &has_duplicates); |
942 bool value2_valid = GetVideoMemory(row2, &value2, &has_duplicates); | 912 bool value2_valid = GetVideoMemory(row2, &value2, &has_duplicates); |
943 return value1_valid && value2_valid ? ValueCompare(value1, value2) : | 913 return value1_valid && value2_valid ? ValueCompare(value1, value2) : |
944 OrderUnavailableValue(value1_valid, value2_valid); | 914 OrderUnavailableValue(value1_valid, value2_valid); |
945 } | 915 } |
946 | 916 |
(...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1254 base::ProcessId renderer_id, | 1224 base::ProcessId renderer_id, |
1255 const blink::WebCache::ResourceTypeStats& stats) { | 1225 const blink::WebCache::ResourceTypeStats& stats) { |
1256 for (ResourceList::iterator it = resources_.begin(); | 1226 for (ResourceList::iterator it = resources_.begin(); |
1257 it != resources_.end(); ++it) { | 1227 it != resources_.end(); ++it) { |
1258 if (base::GetProcId((*it)->GetProcess()) == renderer_id) { | 1228 if (base::GetProcId((*it)->GetProcess()) == renderer_id) { |
1259 (*it)->NotifyResourceTypeStats(stats); | 1229 (*it)->NotifyResourceTypeStats(stats); |
1260 } | 1230 } |
1261 } | 1231 } |
1262 } | 1232 } |
1263 | 1233 |
1264 void TaskManagerModel::NotifyFPS(base::ProcessId renderer_id, | |
1265 int routing_id, | |
1266 float fps) { | |
1267 for (ResourceList::iterator it = resources_.begin(); | |
1268 it != resources_.end(); ++it) { | |
1269 if (base::GetProcId((*it)->GetProcess()) == renderer_id && | |
1270 (*it)->GetRoutingID() == routing_id) { | |
1271 (*it)->NotifyFPS(fps); | |
1272 } | |
1273 } | |
1274 } | |
1275 | |
1276 void TaskManagerModel::NotifyVideoMemoryUsageStats( | 1234 void TaskManagerModel::NotifyVideoMemoryUsageStats( |
1277 const content::GPUVideoMemoryUsageStats& video_memory_usage_stats) { | 1235 const content::GPUVideoMemoryUsageStats& video_memory_usage_stats) { |
1278 DCHECK(pending_video_memory_usage_stats_update_); | 1236 DCHECK(pending_video_memory_usage_stats_update_); |
1279 video_memory_usage_stats_ = video_memory_usage_stats; | 1237 video_memory_usage_stats_ = video_memory_usage_stats; |
1280 pending_video_memory_usage_stats_update_ = false; | 1238 pending_video_memory_usage_stats_update_ = false; |
1281 } | 1239 } |
1282 | 1240 |
1283 void TaskManagerModel::NotifyV8HeapStats(base::ProcessId renderer_id, | 1241 void TaskManagerModel::NotifyV8HeapStats(base::ProcessId renderer_id, |
1284 size_t v8_memory_allocated, | 1242 size_t v8_memory_allocated, |
1285 size_t v8_memory_used) { | 1243 size_t v8_memory_used) { |
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1594 params.host_desktop_type = desktop_type; | 1552 params.host_desktop_type = desktop_type; |
1595 chrome::Navigate(¶ms); | 1553 chrome::Navigate(¶ms); |
1596 } | 1554 } |
1597 | 1555 |
1598 TaskManager::TaskManager() | 1556 TaskManager::TaskManager() |
1599 : model_(new TaskManagerModel(this)) { | 1557 : model_(new TaskManagerModel(this)) { |
1600 } | 1558 } |
1601 | 1559 |
1602 TaskManager::~TaskManager() { | 1560 TaskManager::~TaskManager() { |
1603 } | 1561 } |
OLD | NEW |