Index: Source/core/loader/LinkLoader.cpp |
diff --git a/Source/core/loader/LinkLoader.cpp b/Source/core/loader/LinkLoader.cpp |
index d881324fe70b25463a01434edb9eb0675bbc718b..2567794051a958b5d0a81bf1959c545d7655a589 100644 |
--- a/Source/core/loader/LinkLoader.cpp |
+++ b/Source/core/loader/LinkLoader.cpp |
@@ -37,6 +37,7 @@ |
#include "core/fetch/FetchRequest.h" |
#include "core/fetch/ResourceFetcher.h" |
#include "core/frame/Settings.h" |
+#include "core/html/CrossOriginAttribute.h" |
#include "core/html/LinkRelAttribute.h" |
#include "core/inspector/ConsoleMessage.h" |
#include "core/loader/LinkHeader.h" |
@@ -128,14 +129,19 @@ static void dnsPrefetchIfNeeded(const LinkRelAttribute& relAttribute, const KURL |
} |
} |
-static void preconnectIfNeeded(const LinkRelAttribute& relAttribute, const KURL& href, Document& document) |
+static void preconnectIfNeeded(const LinkRelAttribute& relAttribute, const KURL& href, Document& document, const CrossOriginAttributeValue crossOrigin) |
{ |
if (relAttribute.isPreconnect() && href.isValid()) { |
ASSERT(RuntimeEnabledFeatures::linkPreconnectEnabled()); |
Settings* settings = document.settings(); |
- if (settings && settings->logDnsPrefetchAndPreconnect()) |
+ if (settings && settings->logDnsPrefetchAndPreconnect()) { |
document.addConsoleMessage(ConsoleMessage::create(OtherMessageSource, DebugMessageLevel, String("Preconnect triggered for " + href.host()))); |
- preconnect(href); |
+ if (crossOrigin != CrossOriginAttributeNotSet) { |
+ document.addConsoleMessage(ConsoleMessage::create(OtherMessageSource, DebugMessageLevel, |
+ String("Preconnect CORS setting is ") + String((crossOrigin == CrossOriginAttributeAnonymous) ? "anonymous" : "use-credentials"))); |
+ } |
+ } |
+ preconnect(href, crossOrigin); |
} |
} |
@@ -185,7 +191,7 @@ bool LinkLoader::loadLinkFromHeader(const String& headerValue, Document* documen |
dnsPrefetchIfNeeded(relAttribute, url, *document); |
if (RuntimeEnabledFeatures::linkPreconnectEnabled()) |
- preconnectIfNeeded(relAttribute, url, *document); |
+ preconnectIfNeeded(relAttribute, url, *document, header.crossOrigin()); |
// FIXME: Add more supported headers as needed. |
} |
@@ -194,10 +200,11 @@ bool LinkLoader::loadLinkFromHeader(const String& headerValue, Document* documen |
bool LinkLoader::loadLink(const LinkRelAttribute& relAttribute, const AtomicString& crossOriginMode, const String& type, const String& as, const KURL& href, Document& document) |
{ |
+ // TODO(yoav): Convert all uses of the CrossOriginAttribute to CrossOriginAttributeValue. crbug.com/486689 |
// FIXME(crbug.com/463266): We're ignoring type here. Maybe we shouldn't. |
dnsPrefetchIfNeeded(relAttribute, href, document); |
- preconnectIfNeeded(relAttribute, href, document); |
+ preconnectIfNeeded(relAttribute, href, document, crossOriginAttributeValue(crossOriginMode)); |
preloadIfNeeded(relAttribute, href, document, as); |