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

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: more cleanup 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..6572a221b3d89fd9448423b3ed0e3f187e6eecfb 100644
--- a/Source/core/html/parser/HTMLPreloadScanner.cpp
+++ b/Source/core/html/parser/HTMLPreloadScanner.cpp
@@ -173,7 +173,7 @@ public:
}
}
- PassOwnPtr<PreloadRequest> createPreloadRequest(const KURL& predictedBaseURL, const SegmentedString& source, const ClientHintsPreferences& clientHintsPreferences, const PictureData& pictureData)
+ PassOwnPtr<PreloadRequest> createPreloadRequest(const KURL& predictedBaseURL, const SegmentedString& source, const ClientHintsPreferences& clientHintsPreferences, const PictureData& pictureData, const ReferrerPolicy& referrerPolicy)
{
PreloadRequest::RequestType requestType = PreloadRequest::RequestTypePreload;
if (shouldPreconnect())
@@ -194,7 +194,7 @@ public:
resourceWidth.isSet = true;
}
- OwnPtr<PreloadRequest> request = PreloadRequest::create(initiatorFor(m_tagImpl), position, m_urlToLoad, predictedBaseURL, resourceType(), resourceWidth, clientHintsPreferences, requestType);
+ OwnPtr<PreloadRequest> request = PreloadRequest::create(initiatorFor(m_tagImpl), position, m_urlToLoad, predictedBaseURL, resourceType(), referrerPolicy, resourceWidth, clientHintsPreferences, requestType);
if (isCORSEnabled())
request->setCrossOriginEnabled(allowStoredCredentials());
request->setCharset(charset());
@@ -473,7 +473,7 @@ static void handleMetaViewport(const String& attributeValue, CachedDocumentParam
cachedMediaValues->setViewportWidth(constraints.layoutSize.width());
}
-template<typename Token>
+template <typename Token>
void TokenPreloadScanner::scanCommon(const Token& token, const SegmentedString& source, PreloadRequestStream& requests)
{
if (!m_documentParameters->doHtmlPreloadScanning)
@@ -554,6 +554,16 @@ 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) {
+ const String contentAttributeValue(contentAttribute->value);
+ if (contentAttributeValue.isEmpty() || contentAttributeValue.isNull() || !SecurityPolicy::referrerPolicyFromString(contentAttributeValue, &m_documentParameters->referrerPolicy)) {
+ m_documentParameters->referrerPolicy = ReferrerPolicyDefault;
+ }
+ m_cssScanner.setReferrerPolicy(m_documentParameters->referrerPolicy);
Yoav Weiss 2015/07/15 08:14:47 Could you split that part into a helper function?
estark 2015/07/15 21:58:56 Done.
+ }
+ }
}
if (match(tagImpl, pictureTag)) {
@@ -566,7 +576,7 @@ void TokenPreloadScanner::scanCommon(const Token& token, const SegmentedString&
scanner.processAttributes(token.attributes());
if (m_inPicture)
scanner.handlePictureSourceURL(m_pictureData);
- OwnPtr<PreloadRequest> request = scanner.createPreloadRequest(m_predictedBaseElementURL, source, m_clientHintsPreferences, m_pictureData);
+ OwnPtr<PreloadRequest> request = scanner.createPreloadRequest(m_predictedBaseElementURL, source, m_clientHintsPreferences, m_pictureData, m_documentParameters->referrerPolicy);
if (request)
requests.append(request.release());
return;
@@ -637,6 +647,7 @@ CachedDocumentParameters::CachedDocumentParameters(Document* document, PassRefPt
defaultViewportMinWidth = document->viewportDefaultMinWidth();
viewportMetaZeroValuesQuirk = document->settings() && document->settings()->viewportMetaZeroValuesQuirk();
viewportMetaEnabled = document->settings() && document->settings()->viewportMetaEnabled();
+ referrerPolicy = ReferrerPolicyDefault;
}
}

Powered by Google App Engine
This is Rietveld 408576698