| 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 a5eae6c5bf861db7dc1fd4028a4489e01506f60b..5a63a7bf656ef5b2c78f5c7b7c9475d2b9b78615 100644
|
| --- a/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp
|
| +++ b/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp
|
| @@ -262,7 +262,8 @@ ResourceFetcher::ResourceFetcher(FetchContext* newContext)
|
| m_autoLoadImages(true),
|
| m_imagesEnabled(true),
|
| m_allowStaleResources(false),
|
| - m_imageFetched(false) {}
|
| + m_imageFetched(false),
|
| + m_onloadDeferredResourcesLoaded(false) {}
|
|
|
| ResourceFetcher::~ResourceFetcher() {}
|
|
|
| @@ -285,6 +286,13 @@ bool ResourceFetcher::resourceNeedsLoad(Resource* resource,
|
| return false;
|
| if (resource->isImage() && shouldDeferImageLoad(resource->url()))
|
| return false;
|
| + if (resource->getType() == Resource::LinkPrefetch &&
|
| + !m_onloadDeferredResourcesLoaded) {
|
| + if (!m_onloadDeferredResources)
|
| + m_onloadDeferredResources = new HeapVector<Member<Resource>>;
|
| + m_onloadDeferredResources->push_back(resource);
|
| + return false;
|
| + }
|
| return policy != Use || resource->stillNeedsLoad();
|
| }
|
|
|
| @@ -1049,6 +1057,17 @@ void ResourceFetcher::reloadImagesIfNotDeferred() {
|
| }
|
| }
|
|
|
| +void ResourceFetcher::loadOnloadDeferredResources() {
|
| + if (!m_onloadDeferredResources)
|
| + return;
|
| + for (auto& resource : *m_onloadDeferredResources) {
|
| + if (resource->stillNeedsLoad())
|
| + startLoad(resource);
|
| + }
|
| + m_onloadDeferredResources->clear();
|
| + m_onloadDeferredResourcesLoaded = true;
|
| +}
|
| +
|
| void ResourceFetcher::clearContext() {
|
| clearPreloads(ResourceFetcher::ClearAllPreloads);
|
| m_context.clear();
|
| @@ -1549,6 +1568,7 @@ DEFINE_TRACE(ResourceFetcher) {
|
| visitor->trace(m_nonBlockingLoaders);
|
| visitor->trace(m_documentResources);
|
| visitor->trace(m_preloads);
|
| + visitor->trace(m_onloadDeferredResources);
|
| visitor->trace(m_resourceTimingInfoMap);
|
| }
|
|
|
|
|