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

Unified Diff: Source/core/html/parser/HTMLPreloadScanner.cpp

Issue 1235563004: Apply meta tag referrer policy for preloaded requests (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: fix conflicting policies test Created 5 years, 5 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
Index: Source/core/html/parser/HTMLPreloadScanner.cpp
diff --git a/Source/core/html/parser/HTMLPreloadScanner.cpp b/Source/core/html/parser/HTMLPreloadScanner.cpp
index 44395718c6253b2dd08370460cb8b2d26e62e11a..34b0bdc34e1afbd13a80030ffb5efc5ccc85c79a 100644
--- a/Source/core/html/parser/HTMLPreloadScanner.cpp
+++ b/Source/core/html/parser/HTMLPreloadScanner.cpp
@@ -450,14 +450,14 @@ void TokenPreloadScanner::rewindTo(TokenPreloadScannerCheckpoint checkpointIndex
m_checkpoints.clear();
}
-void TokenPreloadScanner::scan(const HTMLToken& token, const SegmentedString& source, PreloadRequestStream& requests)
+void TokenPreloadScanner::scan(const HTMLToken& token, const SegmentedString& source, PreloadRequestStream& requests, String* preloadedReferrerPolicy)
{
- scanCommon(token, source, requests);
+ scanCommon(token, source, requests, preloadedReferrerPolicy);
}
-void TokenPreloadScanner::scan(const CompactHTMLToken& token, const SegmentedString& source, PreloadRequestStream& requests)
+void TokenPreloadScanner::scan(const CompactHTMLToken& token, const SegmentedString& source, PreloadRequestStream& requests, String* preloadedReferrerPolicy)
{
- scanCommon(token, source, requests);
+ scanCommon(token, source, requests, preloadedReferrerPolicy);
}
static void handleMetaViewport(const String& attributeValue, CachedDocumentParameters* documentParameters)
@@ -473,8 +473,8 @@ static void handleMetaViewport(const String& attributeValue, CachedDocumentParam
cachedMediaValues->setViewportWidth(constraints.layoutSize.width());
}
-template<typename Token>
-void TokenPreloadScanner::scanCommon(const Token& token, const SegmentedString& source, PreloadRequestStream& requests)
+template <typename Token>
+void TokenPreloadScanner::scanCommon(const Token& token, const SegmentedString& source, PreloadRequestStream& requests, String* preloadedReferrerPolicy)
{
if (!m_documentParameters->doHtmlPreloadScanning)
return;
@@ -554,6 +554,11 @@ void TokenPreloadScanner::scanCommon(const Token& token, const SegmentedString&
handleMetaViewport(String(contentAttribute->value), m_documentParameters.get());
return;
}
+ if (nameAttribute && equalIgnoringCase(String(nameAttribute->value), "referrer")) {
+ const typename Token::Attribute* contentAttribute = token.getAttributeItem(contentAttr);
+ if (contentAttribute)
+ *preloadedReferrerPolicy = String(contentAttribute->value).isolatedCopy();
+ }
}
if (match(tagImpl, pictureTag)) {
@@ -613,14 +618,18 @@ void HTMLPreloadScanner::scan(ResourcePreloader* preloader, const KURL& starting
m_scanner.setPredictedBaseElementURL(startingBaseElementURL);
PreloadRequestStream requests;
+ String preloadedReferrerPolicy;
while (m_tokenizer->nextToken(m_source, m_token)) {
if (m_token.type() == HTMLToken::StartTag)
m_tokenizer->updateStateFor(attemptStaticStringCreation(m_token.name(), Likely8Bit));
- m_scanner.scan(m_token, m_source, requests);
+ m_scanner.scan(m_token, m_source, requests, &preloadedReferrerPolicy);
m_token.clear();
}
+ if (!preloadedReferrerPolicy.isEmpty())
+ preloader->preloadReferrerPolicy(preloadedReferrerPolicy);
+
preloader->takeAndPreload(requests);
}

Powered by Google App Engine
This is Rietveld 408576698