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

Unified Diff: third_party/WebKit/Source/core/loader/LinkLoader.cpp

Issue 2602233002: Prefetch Link header support. (Closed)
Patch Set: Test based of perfObserver Created 3 years, 12 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 | « third_party/WebKit/Source/core/loader/LinkLoader.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/core/loader/LinkLoader.cpp
diff --git a/third_party/WebKit/Source/core/loader/LinkLoader.cpp b/third_party/WebKit/Source/core/loader/LinkLoader.cpp
index 5abb54d4f6fe7e33a76c0cf0a8e534bb4304abcd..049d4851c03aed20bdc07de7a4b7998b458ac81c 100644
--- a/third_party/WebKit/Source/core/loader/LinkLoader.cpp
+++ b/third_party/WebKit/Source/core/loader/LinkLoader.cpp
@@ -342,7 +342,7 @@ static Resource* preloadIfNeeded(const LinkRelAttribute& relAttribute,
return document.loader()->startPreload(resourceType, linkRequest);
}
-void LinkLoader::prefetchIfNeeded(Document& document,
+static Resource* prefetchIfNeeded(Document& document,
const KURL& href,
const LinkRelAttribute& relAttribute,
CrossOriginAttributeValue crossOrigin,
@@ -361,9 +361,10 @@ void LinkLoader::prefetchIfNeeded(Document& document,
linkRequest.setCrossOriginAccessControl(document.getSecurityOrigin(),
crossOrigin);
}
- setResource(LinkFetchResource::fetch(Resource::LinkPrefetch, linkRequest,
- document.fetcher()));
+ return LinkFetchResource::fetch(Resource::LinkPrefetch, linkRequest,
+ document.fetcher());
}
+ return nullptr;
}
void LinkLoader::loadLinksFromHeader(
@@ -406,11 +407,14 @@ void LinkLoader::loadLinksFromHeader(
? &(viewportDescriptionWrapper->description)
: nullptr;
+ CrossOriginAttributeValue crossOrigin =
+ crossOriginAttributeValue(header.crossOrigin());
preloadIfNeeded(relAttribute, url, *document, header.as(),
- header.mimeType(), header.media(),
- crossOriginAttributeValue(header.crossOrigin()),
+ header.mimeType(), header.media(), crossOrigin,
LinkCalledFromHeader, errorOccurred, viewportDescription,
ReferrerPolicyDefault);
+ prefetchIfNeeded(*document, url, relAttribute, crossOrigin,
+ ReferrerPolicyDefault);
}
if (relAttribute.isServiceWorker()) {
UseCounter::count(*document, UseCounter::LinkHeaderServiceWorker);
@@ -447,7 +451,10 @@ bool LinkLoader::loadLink(const LinkRelAttribute& relAttribute,
if (href.isEmpty() || !href.isValid())
released();
- prefetchIfNeeded(document, href, relAttribute, crossOrigin, referrerPolicy);
+ Resource* resource = prefetchIfNeeded(document, href, relAttribute,
+ crossOrigin, referrerPolicy);
+ if (resource)
+ setResource(resource);
if (const unsigned prerenderRelTypes =
prerenderRelTypesFromRelAttribute(relAttribute, document)) {
« no previous file with comments | « third_party/WebKit/Source/core/loader/LinkLoader.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698