| Index: Source/core/fetch/ResourceFetcher.cpp
|
| diff --git a/Source/core/fetch/ResourceFetcher.cpp b/Source/core/fetch/ResourceFetcher.cpp
|
| index c4e60ef6cb0287542634fca608518185c3e21a0c..a62cb6a937df12a7209905da2f0158061672c426 100644
|
| --- a/Source/core/fetch/ResourceFetcher.cpp
|
| +++ b/Source/core/fetch/ResourceFetcher.cpp
|
| @@ -57,78 +57,48 @@ using blink::WebURLRequest;
|
|
|
| namespace blink {
|
|
|
| -ResourceLoadPriority ResourceFetcher::loadPriority(Resource::Type type, const FetchRequest& request)
|
| +static ResourceLoadPriority typeToPriority(Resource::Type type)
|
| {
|
| - // TODO(yoav): Change it here so that priority can be changed even after it was resolved.
|
| - if (request.priority() != ResourceLoadPriorityUnresolved)
|
| - return request.priority();
|
| -
|
| - // An image fetch is used to distinguish between "early" and "late" scripts in a document
|
| - if (type == Resource::Image)
|
| - m_imageFetched = true;
|
| -
|
| - // Runtime experiment that change how we prioritize resources.
|
| - // The toggles do not depend on each other and can be flipped individually
|
| - // though the cumulative result will depend on the interaction between them.
|
| - // Background doc: https://docs.google.com/document/d/1bCDuq9H1ih9iNjgzyAL0gpwNFiEP4TZS-YLRp_RuMlc/edit?usp=sharing
|
| - bool deferLateScripts = context().fetchDeferLateScripts();
|
| - bool increaseFontPriority = context().fetchIncreaseFontPriority();
|
| - bool increaseAsyncScriptPriority = context().fetchIncreaseAsyncScriptPriority();
|
| - // Increases the priorities for CSS, Scripts, Fonts and Images all by one level
|
| - // and parser-blocking scripts and visible images by 2.
|
| - // This is used in conjunction with logic on the Chrome side to raise the threshold
|
| - // of "layout-blocking" resources and provide a boost to resources that are needed
|
| - // as soon as possible for something currently on the screen.
|
| - bool increasePriorities = context().fetchIncreasePriorities();
|
| -
|
| switch (type) {
|
| case Resource::MainResource:
|
| - return context().isLowPriorityIframe() ? ResourceLoadPriorityVeryLow : ResourceLoadPriorityVeryHigh;
|
| + return ResourceLoadPriorityVeryHigh;
|
| + case Resource::XSLStyleSheet:
|
| + ASSERT(RuntimeEnabledFeatures::xsltEnabled());
|
| case Resource::CSSStyleSheet:
|
| - return increasePriorities ? ResourceLoadPriorityVeryHigh : ResourceLoadPriorityHigh;
|
| + return ResourceLoadPriorityHigh;
|
| case Resource::Raw:
|
| - return request.options().synchronousPolicy == RequestSynchronously ? ResourceLoadPriorityVeryHigh : ResourceLoadPriorityMedium;
|
| case Resource::Script:
|
| - // Async/Defer scripts.
|
| - if (FetchRequest::LazyLoad == request.defer())
|
| - return increaseAsyncScriptPriority ? ResourceLoadPriorityMedium : ResourceLoadPriorityLow;
|
| - // Reduce the priority of late-body scripts.
|
| - if (deferLateScripts && request.forPreload() && m_imageFetched)
|
| - return increasePriorities ? ResourceLoadPriorityMedium : ResourceLoadPriorityLow;
|
| - // Parser-blocking scripts.
|
| - if (!request.forPreload())
|
| - return increasePriorities ? ResourceLoadPriorityVeryHigh : ResourceLoadPriorityMedium;
|
| - // Non-async/defer scripts discovered by the preload scanner (only early scripts if deferLateScripts is active).
|
| - return increasePriorities ? ResourceLoadPriorityHigh : ResourceLoadPriorityMedium;
|
| case Resource::Font:
|
| - if (increaseFontPriority)
|
| - return increasePriorities ? ResourceLoadPriorityVeryHigh : ResourceLoadPriorityHigh;
|
| - return increasePriorities ? ResourceLoadPriorityHigh : ResourceLoadPriorityMedium;
|
| case Resource::ImportResource:
|
| return ResourceLoadPriorityMedium;
|
| - case Resource::Image:
|
| - // Default images to VeryLow, and promote when they become visible.
|
| - return increasePriorities ? ResourceLoadPriorityLow : ResourceLoadPriorityVeryLow;
|
| + case Resource::LinkSubresource:
|
| + case Resource::TextTrack:
|
| case Resource::Media:
|
| - return ResourceLoadPriorityLow;
|
| - case Resource::XSLStyleSheet:
|
| - ASSERT(RuntimeEnabledFeatures::xsltEnabled());
|
| - return ResourceLoadPriorityHigh;
|
| case Resource::SVGDocument:
|
| return ResourceLoadPriorityLow;
|
| + case Resource::Image:
|
| case Resource::LinkPrefetch:
|
| case Resource::LinkPreload:
|
| return ResourceLoadPriorityVeryLow;
|
| - case Resource::LinkSubresource:
|
| - return ResourceLoadPriorityLow;
|
| - case Resource::TextTrack:
|
| - return ResourceLoadPriorityLow;
|
| }
|
|
|
| ASSERT_NOT_REACHED();
|
| return ResourceLoadPriorityUnresolved;
|
| }
|
|
|
| +ResourceLoadPriority ResourceFetcher::loadPriority(Resource::Type type, const FetchRequest& request)
|
| +{
|
| + // TODO(yoav): Change it here so that priority can be changed even after it was resolved.
|
| + if (request.priority() != ResourceLoadPriorityUnresolved)
|
| + return request.priority();
|
| +
|
| + // Synchronous requests should always be max priority, lest they hang the renderer.
|
| + if (request.options().synchronousPolicy == RequestSynchronously)
|
| + return ResourceLoadPriorityHighest;
|
| +
|
| + return context().modifyPriorityForExperiments(typeToPriority(type), type, request);
|
| +}
|
| +
|
| static void populateResourceTiming(ResourceTimingInfo* info, Resource* resource, bool clearLoadTimings)
|
| {
|
| info->setInitialRequest(resource->resourceRequest());
|
| @@ -189,7 +159,6 @@ ResourceFetcher::ResourceFetcher(FetchContext* context)
|
| , m_autoLoadImages(true)
|
| , m_imagesEnabled(true)
|
| , m_allowStaleResources(false)
|
| - , m_imageFetched(false)
|
| {
|
| #if ENABLE(OILPAN)
|
| ThreadState::current()->registerPreFinalizer(this);
|
|
|