| OLD | NEW |
| 1 /* | 1 /* |
| 2 Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de) | 2 Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de) |
| 3 Copyright (C) 2001 Dirk Mueller (mueller@kde.org) | 3 Copyright (C) 2001 Dirk Mueller (mueller@kde.org) |
| 4 Copyright (C) 2002 Waldo Bastian (bastian@kde.org) | 4 Copyright (C) 2002 Waldo Bastian (bastian@kde.org) |
| 5 Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. | 5 Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. |
| 6 | 6 |
| 7 This library is free software; you can redistribute it and/or | 7 This library is free software; you can redistribute it and/or |
| 8 modify it under the terms of the GNU Library General Public | 8 modify it under the terms of the GNU Library General Public |
| 9 License as published by the Free Software Foundation; either | 9 License as published by the Free Software Foundation; either |
| 10 version 2 of the License, or (at your option) any later version. | 10 version 2 of the License, or (at your option) any later version. |
| (...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 225 | 225 |
| 226 HeapVector<Member<Resource>> MemoryCache::resourcesForURL( | 226 HeapVector<Member<Resource>> MemoryCache::resourcesForURL( |
| 227 const KURL& resourceURL) const { | 227 const KURL& resourceURL) const { |
| 228 DCHECK(WTF::isMainThread()); | 228 DCHECK(WTF::isMainThread()); |
| 229 KURL url = removeFragmentIdentifierIfNeeded(resourceURL); | 229 KURL url = removeFragmentIdentifierIfNeeded(resourceURL); |
| 230 HeapVector<Member<Resource>> results; | 230 HeapVector<Member<Resource>> results; |
| 231 for (const auto& resourceMapIter : m_resourceMaps) { | 231 for (const auto& resourceMapIter : m_resourceMaps) { |
| 232 if (MemoryCacheEntry* entry = resourceMapIter.value->get(url)) { | 232 if (MemoryCacheEntry* entry = resourceMapIter.value->get(url)) { |
| 233 Resource* resource = entry->resource(); | 233 Resource* resource = entry->resource(); |
| 234 DCHECK(resource); | 234 DCHECK(resource); |
| 235 results.append(resource); | 235 results.push_back(resource); |
| 236 } | 236 } |
| 237 } | 237 } |
| 238 return results; | 238 return results; |
| 239 } | 239 } |
| 240 | 240 |
| 241 void MemoryCache::pruneResources(PruneStrategy strategy) { | 241 void MemoryCache::pruneResources(PruneStrategy strategy) { |
| 242 DCHECK(!m_prunePending); | 242 DCHECK(!m_prunePending); |
| 243 const size_t sizeLimit = (strategy == MaximalPrune) ? 0 : capacity(); | 243 const size_t sizeLimit = (strategy == MaximalPrune) ? 0 : capacity(); |
| 244 if (m_size <= sizeLimit) | 244 if (m_size <= sizeLimit) |
| 245 return; | 245 return; |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 335 resourceIter != resources->end(); resourceIter = resources->begin()) { | 335 resourceIter != resources->end(); resourceIter = resources->begin()) { |
| 336 DCHECK(resourceIter.get()); | 336 DCHECK(resourceIter.get()); |
| 337 DCHECK(resourceIter->value.get()); | 337 DCHECK(resourceIter->value.get()); |
| 338 DCHECK(resourceIter->value->resource()); | 338 DCHECK(resourceIter->value->resource()); |
| 339 Resource* resource = resourceIter->value->resource(); | 339 Resource* resource = resourceIter->value->resource(); |
| 340 DCHECK(resource); | 340 DCHECK(resource); |
| 341 if (policy != EvictAllResources && resource->isUnusedPreload()) { | 341 if (policy != EvictAllResources && resource->isUnusedPreload()) { |
| 342 // Store unused preloads aside, so they could be added back later. | 342 // Store unused preloads aside, so they could be added back later. |
| 343 // That is in order to avoid the performance impact of iterating over | 343 // That is in order to avoid the performance impact of iterating over |
| 344 // the same resource multiple times. | 344 // the same resource multiple times. |
| 345 unusedPreloads.append(resourceIter->value.get()); | 345 unusedPreloads.push_back(resourceIter->value.get()); |
| 346 } | 346 } |
| 347 removeInternal(resources, resourceIter); | 347 removeInternal(resources, resourceIter); |
| 348 } | 348 } |
| 349 for (const auto& unusedPreload : unusedPreloads) { | 349 for (const auto& unusedPreload : unusedPreloads) { |
| 350 addInternal(resources, unusedPreload); | 350 addInternal(resources, unusedPreload); |
| 351 } | 351 } |
| 352 // We may iterate multiple times over resourceMaps with unused preloads. | 352 // We may iterate multiple times over resourceMaps with unused preloads. |
| 353 // That's extremely unlikely to have any real-life performance impact. | 353 // That's extremely unlikely to have any real-life performance impact. |
| 354 if (!resources->size()) { | 354 if (!resources->size()) { |
| 355 m_resourceMaps.remove(resourceMapIter); | 355 m_resourceMaps.remove(resourceMapIter); |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 458 } | 458 } |
| 459 } | 459 } |
| 460 return true; | 460 return true; |
| 461 } | 461 } |
| 462 | 462 |
| 463 void MemoryCache::onMemoryPressure(WebMemoryPressureLevel level) { | 463 void MemoryCache::onMemoryPressure(WebMemoryPressureLevel level) { |
| 464 pruneAll(); | 464 pruneAll(); |
| 465 } | 465 } |
| 466 | 466 |
| 467 } // namespace blink | 467 } // namespace blink |
| OLD | NEW |