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

Side by Side 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, 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2008 Apple Inc. All Rights Reserved. 2 * Copyright (C) 2008 Apple Inc. All Rights Reserved.
3 * Copyright (C) 2009 Torch Mobile, Inc. http://www.torchmobile.com/ 3 * Copyright (C) 2009 Torch Mobile, Inc. http://www.torchmobile.com/
4 * Copyright (C) 2010 Google Inc. All Rights Reserved. 4 * Copyright (C) 2010 Google Inc. All Rights Reserved.
5 * 5 *
6 * Redistribution and use in source and binary forms, with or without 6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions 7 * modification, are permitted provided that the following conditions
8 * are met: 8 * are met:
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
157 } 157 }
158 158
159 void processAttributes(const Vector<CompactHTMLToken::Attribute>& attributes ) 159 void processAttributes(const Vector<CompactHTMLToken::Attribute>& attributes )
160 { 160 {
161 if (!m_tagImpl) 161 if (!m_tagImpl)
162 return; 162 return;
163 for (const CompactHTMLToken::Attribute& htmlTokenAttribute : attributes) 163 for (const CompactHTMLToken::Attribute& htmlTokenAttribute : attributes)
164 processAttribute(htmlTokenAttribute.name, htmlTokenAttribute.value); 164 processAttribute(htmlTokenAttribute.name, htmlTokenAttribute.value);
165 } 165 }
166 166
167 void handlePictureSourceURL(String& sourceURL) 167 void handlePictureSourceURL(PictureData& pictureData)
168 { 168 {
169 if (match(m_tagImpl, sourceTag) && m_matchedMediaAttribute && sourceURL. isEmpty()) 169 if (match(m_tagImpl, sourceTag) && m_matchedMediaAttribute && pictureDat a.sourceURL.isEmpty()) {
170 sourceURL = m_srcsetImageCandidate.toString(); 170 pictureData.sourceURL = m_srcsetImageCandidate.toString();
171 else if (match(m_tagImpl, imgTag) && !sourceURL.isEmpty()) 171 pictureData.sourceSizeSet = m_sourceSizeSet;
172 setUrlToLoad(sourceURL, AllowURLReplacement); 172 pictureData.sourceSize = m_sourceSize;
173 pictureData.picked = true;
174 } else if (match(m_tagImpl, imgTag) && !pictureData.sourceURL.isEmpty()) {
175 setUrlToLoad(pictureData.sourceURL, AllowURLReplacement);
176 }
173 } 177 }
174 178
175 PassOwnPtr<PreloadRequest> createPreloadRequest(const KURL& predictedBaseURL , const SegmentedString& source, const ClientHintsPreferences& clientHintsPrefer ences) 179 PassOwnPtr<PreloadRequest> createPreloadRequest(const KURL& predictedBaseURL , const SegmentedString& source, const ClientHintsPreferences& clientHintsPrefer ences, const PictureData& pictureData)
176 { 180 {
177 PreloadRequest::RequestType requestType = PreloadRequest::RequestTypePre load; 181 PreloadRequest::RequestType requestType = PreloadRequest::RequestTypePre load;
178 if (shouldPreconnect()) 182 if (shouldPreconnect())
179 requestType = PreloadRequest::RequestTypePreconnect; 183 requestType = PreloadRequest::RequestTypePreconnect;
180 else if (!shouldPreload() || !m_matchedMediaAttribute) 184 else if (!shouldPreload() || !m_matchedMediaAttribute)
181 return nullptr; 185 return nullptr;
182 186
183 TextPosition position = TextPosition(source.currentLine(), source.curren tColumn()); 187 TextPosition position = TextPosition(source.currentLine(), source.curren tColumn());
184 FetchRequest::ResourceWidth resourceWidth; 188 FetchRequest::ResourceWidth resourceWidth;
185 if (m_sourceSizeSet) { 189 float sourceSize = m_sourceSize;
186 resourceWidth.width = m_sourceSize; 190 bool sourceSizeSet = m_sourceSizeSet;
191 if (pictureData.picked) {
192 sourceSizeSet = pictureData.sourceSizeSet;
193 sourceSize = pictureData.sourceSize;
194 }
195 if (sourceSizeSet) {
196 resourceWidth.width = sourceSize;
187 resourceWidth.isSet = true; 197 resourceWidth.isSet = true;
188 } else { 198 } else {
189 resourceWidth.isSet = m_widthValueSet; 199 resourceWidth.isSet = m_widthValueSet;
190 resourceWidth.width = m_widthValue; 200 resourceWidth.width = m_widthValue;
191 } 201 }
192 202
193 OwnPtr<PreloadRequest> request = PreloadRequest::create(initiatorFor(m_t agImpl), position, m_urlToLoad, predictedBaseURL, resourceType(), resourceWidth, clientHintsPreferences, requestType); 203 OwnPtr<PreloadRequest> request = PreloadRequest::create(initiatorFor(m_t agImpl), position, m_urlToLoad, predictedBaseURL, resourceType(), resourceWidth, clientHintsPreferences, requestType);
194 if (isCORSEnabled()) 204 if (isCORSEnabled())
195 request->setCrossOriginEnabled(allowStoredCredentials()); 205 request->setCrossOriginEnabled(allowStoredCredentials());
196 request->setCharset(charset()); 206 request->setCharset(charset());
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after
553 if (nameAttribute && equalIgnoringCase(String(nameAttribute->value), "viewport")) { 563 if (nameAttribute && equalIgnoringCase(String(nameAttribute->value), "viewport")) {
554 const typename Token::Attribute* contentAttribute = token.getAtt ributeItem(contentAttr); 564 const typename Token::Attribute* contentAttribute = token.getAtt ributeItem(contentAttr);
555 if (contentAttribute) 565 if (contentAttribute)
556 handleMetaViewport(String(contentAttribute->value), m_docume ntParameters.get()); 566 handleMetaViewport(String(contentAttribute->value), m_docume ntParameters.get());
557 return; 567 return;
558 } 568 }
559 } 569 }
560 570
561 if (match(tagImpl, pictureTag)) { 571 if (match(tagImpl, pictureTag)) {
562 m_inPicture = true; 572 m_inPicture = true;
563 m_pictureSourceURL = String(); 573 m_pictureData = PictureData();
564 return; 574 return;
565 } 575 }
566 576
567 StartTagScanner scanner(tagImpl, m_documentParameters->mediaValues); 577 StartTagScanner scanner(tagImpl, m_documentParameters->mediaValues);
568 scanner.processAttributes(token.attributes()); 578 scanner.processAttributes(token.attributes());
569 if (m_inPicture) 579 if (m_inPicture)
570 scanner.handlePictureSourceURL(m_pictureSourceURL); 580 scanner.handlePictureSourceURL(m_pictureData);
571 OwnPtr<PreloadRequest> request = scanner.createPreloadRequest(m_predicte dBaseElementURL, source, m_clientHintsPreferences); 581 OwnPtr<PreloadRequest> request = scanner.createPreloadRequest(m_predicte dBaseElementURL, source, m_clientHintsPreferences, m_pictureData);
572 if (request) 582 if (request)
573 requests.append(request.release()); 583 requests.append(request.release());
574 return; 584 return;
575 } 585 }
576 default: { 586 default: {
577 return; 587 return;
578 } 588 }
579 } 589 }
580 } 590 }
581 591
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
635 mediaValues = givenMediaValues; 645 mediaValues = givenMediaValues;
636 else 646 else
637 mediaValues = MediaValuesCached::create(*document); 647 mediaValues = MediaValuesCached::create(*document);
638 ASSERT(mediaValues->isSafeToSendToAnotherThread()); 648 ASSERT(mediaValues->isSafeToSendToAnotherThread());
639 defaultViewportMinWidth = document->viewportDefaultMinWidth(); 649 defaultViewportMinWidth = document->viewportDefaultMinWidth();
640 viewportMetaZeroValuesQuirk = document->settings() && document->settings()-> viewportMetaZeroValuesQuirk(); 650 viewportMetaZeroValuesQuirk = document->settings() && document->settings()-> viewportMetaZeroValuesQuirk();
641 viewportMetaEnabled = document->settings() && document->settings()->viewport MetaEnabled(); 651 viewportMetaEnabled = document->settings() && document->settings()->viewport MetaEnabled();
642 } 652 }
643 653
644 } 654 }
OLDNEW
« 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