Index: third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp |
diff --git a/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp b/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp |
index 1d35e159ac55f11d369f885c2958d02f23da2541..359fff5ad0c77bd62f8f215e568f3b418883ec0a 100644 |
--- a/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp |
+++ b/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp |
@@ -513,6 +513,11 @@ ResourceFetcher::PrepareRequestResult ResourceFetcher::prepareRequest( |
return Continue; |
} |
+void ResourceFetcher::addToDocumentResources(Resource* resource) { |
+ m_documentResources.set( |
+ MemoryCache::removeFragmentIdentifierIfNeeded(resource->url()), resource); |
+} |
+ |
Resource* ResourceFetcher::requestResource( |
FetchRequest& request, |
const ResourceFactory& factory, |
@@ -612,8 +617,7 @@ Resource* ResourceFetcher::requestResource( |
identifier, resource, request, |
policy == Use ? ResourceLoadingFromCache : ResourceLoadingFromNetwork, |
isStaticData); |
- m_documentResources.set( |
- MemoryCache::removeFragmentIdentifierIfNeeded(request.url()), resource); |
+ addToDocumentResources(resource); |
// Returns with an existing resource if the resource does not need to start |
// loading immediately. If revalidation policy was determined as |Revalidate|, |
@@ -1332,8 +1336,12 @@ void ResourceFetcher::updateAllImageResourcePriorities() { |
} |
void ResourceFetcher::reloadLoFiImages() { |
- for (const auto& documentResource : m_documentResources) { |
- Resource* resource = documentResource.value.get(); |
+ // We copy entries of |m_documentResources| first because |
+ // reloadIfLoFiOrPlaceholderImage() can modify |m_documentResources|. |
+ HeapVector<Member<Resource>> documentResources; |
+ copyValuesToVector(m_documentResources, documentResources); |
+ for (const auto& documentResource : documentResources) { |
+ Resource* resource = documentResource.get(); |
if (resource) |
resource->reloadIfLoFiOrPlaceholderImage(this, Resource::kReloadAlways); |
} |