| 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/prerender/prerender_manager.h" | 5 #include "chrome/browser/prerender/prerender_manager.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <functional> | 10 #include <functional> |
| (...skipping 1021 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1032 repeating_timer_.Stop(); | 1032 repeating_timer_.Stop(); |
| 1033 } | 1033 } |
| 1034 | 1034 |
| 1035 void PrerenderManager::PeriodicCleanup() { | 1035 void PrerenderManager::PeriodicCleanup() { |
| 1036 DCHECK(CalledOnValidThread()); | 1036 DCHECK(CalledOnValidThread()); |
| 1037 | 1037 |
| 1038 base::ElapsedTimer resource_timer; | 1038 base::ElapsedTimer resource_timer; |
| 1039 | 1039 |
| 1040 // Grab a copy of the current PrerenderContents pointers, so that we | 1040 // Grab a copy of the current PrerenderContents pointers, so that we |
| 1041 // will not interfere with potential deletions of the list. | 1041 // will not interfere with potential deletions of the list. |
| 1042 std::vector<PrerenderContents*> | 1042 std::vector<PrerenderContents*> prerender_contents; |
| 1043 prerender_contents(active_prerenders_.size()); | 1043 prerender_contents.reserve(active_prerenders_.size()); |
| 1044 std::transform(active_prerenders_.begin(), active_prerenders_.end(), | 1044 for (auto* prerender : active_prerenders_) |
| 1045 prerender_contents.begin(), | 1045 prerender_contents.push_back(prerender->contents()); |
| 1046 std::mem_fun(&PrerenderData::contents)); | |
| 1047 | 1046 |
| 1048 // And now check for prerenders using too much memory. | 1047 // And now check for prerenders using too much memory. |
| 1049 std::for_each(prerender_contents.begin(), prerender_contents.end(), | 1048 for (auto* contents : prerender_contents) |
| 1050 std::mem_fun( | 1049 contents->DestroyWhenUsingTooManyResources(); |
| 1051 &PrerenderContents::DestroyWhenUsingTooManyResources)); | |
| 1052 | 1050 |
| 1053 // Measure how long the resource checks took. http://crbug.com/305419. | 1051 // Measure how long the resource checks took. http://crbug.com/305419. |
| 1054 UMA_HISTOGRAM_TIMES("Prerender.PeriodicCleanupResourceCheckTime", | 1052 UMA_HISTOGRAM_TIMES("Prerender.PeriodicCleanupResourceCheckTime", |
| 1055 resource_timer.Elapsed()); | 1053 resource_timer.Elapsed()); |
| 1056 | 1054 |
| 1057 base::ElapsedTimer cleanup_timer; | 1055 base::ElapsedTimer cleanup_timer; |
| 1058 | 1056 |
| 1059 // Perform deferred cleanup work. | 1057 // Perform deferred cleanup work. |
| 1060 DeleteOldWebContents(); | 1058 DeleteOldWebContents(); |
| 1061 DeleteOldEntries(); | 1059 DeleteOldEntries(); |
| (...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1311 } | 1309 } |
| 1312 | 1310 |
| 1313 void PrerenderManager::RenderProcessHostDestroyed( | 1311 void PrerenderManager::RenderProcessHostDestroyed( |
| 1314 content::RenderProcessHost* host) { | 1312 content::RenderProcessHost* host) { |
| 1315 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 1313 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 1316 size_t erased = prerender_process_hosts_.erase(host); | 1314 size_t erased = prerender_process_hosts_.erase(host); |
| 1317 DCHECK_EQ(1u, erased); | 1315 DCHECK_EQ(1u, erased); |
| 1318 } | 1316 } |
| 1319 | 1317 |
| 1320 } // namespace prerender | 1318 } // namespace prerender |
| OLD | NEW |