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

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

Issue 1220443004: Revert of Revert of Fix CH Width header when preloadScanner and <picture> are involved (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 6 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 | « Source/core/html/parser/HTMLPreloadScanner.h ('k') | Source/core/html/parser/HTMLPreloadScannerTest.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/html/parser/HTMLPreloadScanner.cpp
diff --git a/Source/core/html/parser/HTMLPreloadScanner.cpp b/Source/core/html/parser/HTMLPreloadScanner.cpp
index 3a5d44e7d604b66577b3802da56728dd43da157e..7e9abb7a698625c9e55ed0168c9d570a41c028c2 100644
--- a/Source/core/html/parser/HTMLPreloadScanner.cpp
+++ b/Source/core/html/parser/HTMLPreloadScanner.cpp
@@ -164,15 +164,19 @@
processAttribute(htmlTokenAttribute.name, htmlTokenAttribute.value);
}
- void handlePictureSourceURL(String& sourceURL)
- {
- if (match(m_tagImpl, sourceTag) && m_matchedMediaAttribute && sourceURL.isEmpty())
- sourceURL = m_srcsetImageCandidate.toString();
- else if (match(m_tagImpl, imgTag) && !sourceURL.isEmpty())
- setUrlToLoad(sourceURL, AllowURLReplacement);
- }
-
- PassOwnPtr<PreloadRequest> createPreloadRequest(const KURL& predictedBaseURL, const SegmentedString& source, const ClientHintsPreferences& clientHintsPreferences)
+ void handlePictureSourceURL(PictureData& pictureData)
+ {
+ if (match(m_tagImpl, sourceTag) && m_matchedMediaAttribute && pictureData.sourceURL.isEmpty()) {
+ pictureData.sourceURL = m_srcsetImageCandidate.toString();
+ pictureData.sourceSizeSet = m_sourceSizeSet;
+ pictureData.sourceSize = m_sourceSize;
+ pictureData.picked = true;
+ } else if (match(m_tagImpl, imgTag) && !pictureData.sourceURL.isEmpty()) {
+ setUrlToLoad(pictureData.sourceURL, AllowURLReplacement);
+ }
+ }
+
+ PassOwnPtr<PreloadRequest> createPreloadRequest(const KURL& predictedBaseURL, const SegmentedString& source, const ClientHintsPreferences& clientHintsPreferences, const PictureData& pictureData)
{
PreloadRequest::RequestType requestType = PreloadRequest::RequestTypePreload;
if (shouldPreconnect())
@@ -182,8 +186,14 @@
TextPosition position = TextPosition(source.currentLine(), source.currentColumn());
FetchRequest::ResourceWidth resourceWidth;
- if (m_sourceSizeSet) {
- resourceWidth.width = m_sourceSize;
+ float sourceSize = m_sourceSize;
+ bool sourceSizeSet = m_sourceSizeSet;
+ if (pictureData.picked) {
+ sourceSizeSet = pictureData.sourceSizeSet;
+ sourceSize = pictureData.sourceSize;
+ }
+ if (sourceSizeSet) {
+ resourceWidth.width = sourceSize;
resourceWidth.isSet = true;
} else {
resourceWidth.isSet = m_widthValueSet;
@@ -560,15 +570,15 @@
if (match(tagImpl, pictureTag)) {
m_inPicture = true;
- m_pictureSourceURL = String();
+ m_pictureData = PictureData();
return;
}
StartTagScanner scanner(tagImpl, m_documentParameters->mediaValues);
scanner.processAttributes(token.attributes());
if (m_inPicture)
- scanner.handlePictureSourceURL(m_pictureSourceURL);
- OwnPtr<PreloadRequest> request = scanner.createPreloadRequest(m_predictedBaseElementURL, source, m_clientHintsPreferences);
+ scanner.handlePictureSourceURL(m_pictureData);
+ OwnPtr<PreloadRequest> request = scanner.createPreloadRequest(m_predictedBaseElementURL, source, m_clientHintsPreferences, m_pictureData);
if (request)
requests.append(request.release());
return;
« no previous file with comments | « Source/core/html/parser/HTMLPreloadScanner.h ('k') | Source/core/html/parser/HTMLPreloadScannerTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698