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

Unified Diff: Source/core/fetch/ResourceFetcher.cpp

Issue 1304063016: Refactor the API for setting dynamic resource load priorities (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 3 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
« no previous file with comments | « Source/core/fetch/ResourceFetcher.h ('k') | Source/core/fetch/ResourceLoadPriorityOptimizer.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/fetch/ResourceFetcher.cpp
diff --git a/Source/core/fetch/ResourceFetcher.cpp b/Source/core/fetch/ResourceFetcher.cpp
index a62cb6a937df12a7209905da2f0158061672c426..b3354475f23a8746bf99595fe35079098456be6d 100644
--- a/Source/core/fetch/ResourceFetcher.cpp
+++ b/Source/core/fetch/ResourceFetcher.cpp
@@ -86,7 +86,7 @@ static ResourceLoadPriority typeToPriority(Resource::Type type)
return ResourceLoadPriorityUnresolved;
}
-ResourceLoadPriority ResourceFetcher::loadPriority(Resource::Type type, const FetchRequest& request)
+ResourceLoadPriority ResourceFetcher::loadPriority(Resource::Type type, const FetchRequest& request, ResourcePriority::VisibilityStatus visibility)
{
// TODO(yoav): Change it here so that priority can be changed even after it was resolved.
if (request.priority() != ResourceLoadPriorityUnresolved)
@@ -96,7 +96,7 @@ ResourceLoadPriority ResourceFetcher::loadPriority(Resource::Type type, const Fe
if (request.options().synchronousPolicy == RequestSynchronously)
return ResourceLoadPriorityHighest;
- return context().modifyPriorityForExperiments(typeToPriority(type), type, request);
+ return context().modifyPriorityForExperiments(typeToPriority(type), type, request, visibility);
}
static void populateResourceTiming(ResourceTimingInfo* info, Resource* resource, bool clearLoadTimings)
@@ -372,7 +372,7 @@ ResourcePtr<Resource> ResourceFetcher::requestResource(FetchRequest& request, co
resource->setIdentifier(createUniqueIdentifier());
if (!request.forPreload() || policy != Use) {
- ResourceLoadPriority priority = loadPriority(factory.type(), request);
+ ResourceLoadPriority priority = loadPriority(factory.type(), request, ResourcePriority::NotVisible);
// When issuing another request for a resource that is already in-flight make
// sure to not demote the priority of the in-flight request. If the new request
// isn't at the same priority as the in-flight request, only allow promotions.
@@ -856,12 +856,6 @@ void ResourceFetcher::didFinishLoading(Resource* resource, double finishTime, in
context().dispatchDidFinishLoading(resource->identifier(), finishTime, encodedDataLength);
}
-void ResourceFetcher::didChangeLoadingPriority(const Resource* resource, ResourceLoadPriority loadPriority, int intraPriorityValue)
-{
- TRACE_EVENT_ASYNC_STEP_INTO1("blink.net", "Resource", resource, "ChangePriority", "priority", loadPriority);
- context().dispatchDidChangeResourcePriority(resource->identifier(), loadPriority, intraPriorityValue);
-}
-
void ResourceFetcher::didFailLoading(const Resource* resource, const ResourceError& error)
{
TRACE_EVENT_ASYNC_END0("blink.net", "Resource", resource);
@@ -999,6 +993,29 @@ bool ResourceFetcher::canAccessRedirect(Resource* resource, ResourceRequest& new
return true;
}
+void ResourceFetcher::updateAllImageResourcePriorities()
+{
+ if (!m_loaders)
+ return;
+
+ TRACE_EVENT0("blink", "ResourceLoadPriorityOptimizer::updateAllImageResourcePriorities");
+ for (const auto& loader : m_loaders->hashSet()) {
+ Resource* resource = loader->cachedResource();
+ if (!resource->isImage())
+ continue;
+
+ ResourcePriority resourcePriority = resource->priorityFromClients();
+ ResourceLoadPriority resourceLoadPriority = loadPriority(Resource::Image, FetchRequest(resource->resourceRequest(), FetchInitiatorInfo()), resourcePriority.visibility);
+ if (resourceLoadPriority == resource->resourceRequest().priority())
+ continue;
+
+ resource->mutableResourceRequest().setPriority(resourceLoadPriority, resourcePriority.intraPriorityValue);
+ resource->didChangePriority(resourceLoadPriority, resourcePriority.intraPriorityValue);
+ TRACE_EVENT_ASYNC_STEP_INTO1("blink.net", "Resource", resource, "ChangePriority", "priority", resourceLoadPriority);
+ context().dispatchDidChangeResourcePriority(resource->identifier(), resourceLoadPriority, resourcePriority.intraPriorityValue);
+ }
+}
+
#if PRELOAD_DEBUG
void ResourceFetcher::printPreloadStats()
{
« no previous file with comments | « Source/core/fetch/ResourceFetcher.h ('k') | Source/core/fetch/ResourceLoadPriorityOptimizer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698