Chromium Code Reviews| 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; |
| } |
| } |