Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1355)

Unified Diff: third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp

Issue 2527353002: Phase II Step 3: Reload LoFi/placeholder images via new ImageResource
Patch Set: Reflect comments and rebase Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
}

Powered by Google App Engine
This is Rietveld 408576698