Chromium Code Reviews| Index: third_party/WebKit/Source/core/fetch/MemoryCache.cpp |
| diff --git a/third_party/WebKit/Source/core/fetch/MemoryCache.cpp b/third_party/WebKit/Source/core/fetch/MemoryCache.cpp |
| index cc8f4aa88283184ec11c38ae5054fc5643075ebc..b84a99f14b6f42f222d26efdf60e20da042f0d62 100644 |
| --- a/third_party/WebKit/Source/core/fetch/MemoryCache.cpp |
| +++ b/third_party/WebKit/Source/core/fetch/MemoryCache.cpp |
| @@ -627,19 +627,29 @@ MemoryCache::Statistics MemoryCache::getStatistics() { |
| return stats; |
| } |
| -void MemoryCache::evictResources() { |
| - while (true) { |
| - ResourceMapIndex::iterator resourceMapIter = m_resourceMaps.begin(); |
| - if (resourceMapIter == m_resourceMaps.end()) |
| - break; |
| +void MemoryCache::evictResources(EvictResourcePolicy policy) { |
| + for (auto resourceMapIter = m_resourceMaps.begin(); |
| + resourceMapIter != m_resourceMaps.end();) { |
| ResourceMap* resources = resourceMapIter->value.get(); |
| - while (true) { |
| - ResourceMap::iterator resourceIter = resources->begin(); |
| - if (resourceIter == resources->end()) |
| - break; |
| - evict(resourceIter->value.get()); |
| + for (auto resourceIter = resources->begin(); |
| + resourceIter != resources->end();) { |
| + DCHECK(resourceIter.get()); |
| + DCHECK(resourceIter->value.get()); |
| + DCHECK(resourceIter->value->resource()); |
| + if (policy == EvictAllResources || !resourceIter->value->resource() || |
|
Charlie Harrison
2016/10/03 21:48:21
Optional nit: I think !(resourceIter->value->resou
|
| + !resourceIter->value->resource()->isUnusedPreload()) { |
| + evict(resourceIter->value.get()); |
| + resourceIter = resources->begin(); |
|
Charlie Harrison
2016/10/03 21:48:21
Hm... If we have N unused preloads, and then M reg
|
| + } else { |
| + ++resourceIter; |
| + } |
| + } |
| + if (!resources->size()) { |
| + m_resourceMaps.remove(resourceMapIter); |
| + resourceMapIter = m_resourceMaps.begin(); |
| + } else { |
| + ++resourceMapIter; |
| } |
| - m_resourceMaps.remove(resourceMapIter); |
| } |
| } |