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

Side by Side Diff: third_party/WebKit/Source/core/html/parser/HTMLPreloadScanner.cpp

Issue 2130773002: Revert of Don't preload scripts with invalid type/language attributes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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 16 matching lines...) Expand all
27 27
28 #include "core/html/parser/HTMLPreloadScanner.h" 28 #include "core/html/parser/HTMLPreloadScanner.h"
29 29
30 #include "core/HTMLNames.h" 30 #include "core/HTMLNames.h"
31 #include "core/InputTypeNames.h" 31 #include "core/InputTypeNames.h"
32 #include "core/css/MediaList.h" 32 #include "core/css/MediaList.h"
33 #include "core/css/MediaQueryEvaluator.h" 33 #include "core/css/MediaQueryEvaluator.h"
34 #include "core/css/MediaValuesCached.h" 34 #include "core/css/MediaValuesCached.h"
35 #include "core/css/parser/SizesAttributeParser.h" 35 #include "core/css/parser/SizesAttributeParser.h"
36 #include "core/dom/Document.h" 36 #include "core/dom/Document.h"
37 #include "core/dom/ScriptLoader.h"
38 #include "core/fetch/IntegrityMetadata.h" 37 #include "core/fetch/IntegrityMetadata.h"
39 #include "core/frame/LocalFrame.h" 38 #include "core/frame/LocalFrame.h"
40 #include "core/frame/Settings.h" 39 #include "core/frame/Settings.h"
41 #include "core/frame/SubresourceIntegrity.h" 40 #include "core/frame/SubresourceIntegrity.h"
42 #include "core/html/CrossOriginAttribute.h" 41 #include "core/html/CrossOriginAttribute.h"
43 #include "core/html/HTMLImageElement.h" 42 #include "core/html/HTMLImageElement.h"
44 #include "core/html/HTMLMetaElement.h" 43 #include "core/html/HTMLMetaElement.h"
45 #include "core/html/LinkRelAttribute.h" 44 #include "core/html/LinkRelAttribute.h"
46 #include "core/html/parser/HTMLParserIdioms.h" 45 #include "core/html/parser/HTMLParserIdioms.h"
47 #include "core/html/parser/HTMLSrcsetParser.h" 46 #include "core/html/parser/HTMLSrcsetParser.h"
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 requestType = PreloadRequest::RequestTypePreconnect; 214 requestType = PreloadRequest::RequestTypePreconnect;
216 } else { 215 } else {
217 if (isLinkRelPreload()) { 216 if (isLinkRelPreload()) {
218 requestType = PreloadRequest::RequestTypeLinkRelPreload; 217 requestType = PreloadRequest::RequestTypeLinkRelPreload;
219 } 218 }
220 if (!shouldPreload()) { 219 if (!shouldPreload()) {
221 return nullptr; 220 return nullptr;
222 } 221 }
223 } 222 }
224 223
224
225 TextPosition position = TextPosition(source.currentLine(), source.curren tColumn()); 225 TextPosition position = TextPosition(source.currentLine(), source.curren tColumn());
226 FetchRequest::ResourceWidth resourceWidth; 226 FetchRequest::ResourceWidth resourceWidth;
227 float sourceSize = m_sourceSize; 227 float sourceSize = m_sourceSize;
228 bool sourceSizeSet = m_sourceSizeSet; 228 bool sourceSizeSet = m_sourceSizeSet;
229 if (pictureData.picked) { 229 if (pictureData.picked) {
230 sourceSizeSet = pictureData.sourceSizeSet; 230 sourceSizeSet = pictureData.sourceSizeSet;
231 sourceSize = pictureData.sourceSize; 231 sourceSize = pictureData.sourceSize;
232 } 232 }
233 if (sourceSizeSet) { 233 if (sourceSizeSet) {
234 resourceWidth.width = sourceSize; 234 resourceWidth.width = sourceSize;
(...skipping 30 matching lines...) Expand all
265 // Note that only scripts need to have the integrity metadata set on 265 // Note that only scripts need to have the integrity metadata set on
266 // preloads. This is because script resources fetches, and only script 266 // preloads. This is because script resources fetches, and only script
267 // resource fetches, need to re-request resources if a cached version 267 // resource fetches, need to re-request resources if a cached version
268 // has different metadata (including empty) from the metadata on the 268 // has different metadata (including empty) from the metadata on the
269 // request. See the comment before the call to 269 // request. See the comment before the call to
270 // mustRefetchDueToIntegrityMismatch() in 270 // mustRefetchDueToIntegrityMismatch() in
271 // Source/core/fetch/ResourceFetcher.cpp for a more complete 271 // Source/core/fetch/ResourceFetcher.cpp for a more complete
272 // explanation. 272 // explanation.
273 else if (match(attributeName, integrityAttr)) 273 else if (match(attributeName, integrityAttr))
274 SubresourceIntegrity::parseIntegrityAttribute(attributeValue, m_inte grityMetadata); 274 SubresourceIntegrity::parseIntegrityAttribute(attributeValue, m_inte grityMetadata);
275 else if (match(attributeName, typeAttr))
276 m_typeAttributeValue = attributeValue;
277 else if (match(attributeName, languageAttr))
278 m_languageAttributeValue = attributeValue;
279 } 275 }
280 276
281 template<typename NameType> 277 template<typename NameType>
282 void processImgAttribute(const NameType& attributeName, const String& attrib uteValue) 278 void processImgAttribute(const NameType& attributeName, const String& attrib uteValue)
283 { 279 {
284 if (match(attributeName, srcAttr) && m_imgSrcUrl.isNull()) { 280 if (match(attributeName, srcAttr) && m_imgSrcUrl.isNull()) {
285 m_imgSrcUrl = attributeValue; 281 m_imgSrcUrl = attributeValue;
286 setUrlToLoad(bestFitSourceForImageAttributes(m_mediaValues->devicePi xelRatio(), m_sourceSize, attributeValue, m_srcsetImageCandidate), AllowURLRepla cement); 282 setUrlToLoad(bestFitSourceForImageAttributes(m_mediaValues->devicePi xelRatio(), m_sourceSize, attributeValue, m_srcsetImageCandidate), AllowURLRepla cement);
287 } else if (match(attributeName, crossoriginAttr)) { 283 } else if (match(attributeName, crossoriginAttr)) {
288 setCrossOrigin(attributeValue); 284 setCrossOrigin(attributeValue);
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
437 bool shouldPreload() const 433 bool shouldPreload() const
438 { 434 {
439 if (m_urlToLoad.isEmpty()) 435 if (m_urlToLoad.isEmpty())
440 return false; 436 return false;
441 if (!m_matched) 437 if (!m_matched)
442 return false; 438 return false;
443 if (match(m_tagImpl, linkTag) && !m_linkIsStyleSheet && !m_linkIsImport && !m_linkIsPreload) 439 if (match(m_tagImpl, linkTag) && !m_linkIsStyleSheet && !m_linkIsImport && !m_linkIsPreload)
444 return false; 440 return false;
445 if (match(m_tagImpl, inputTag) && !m_inputIsImage) 441 if (match(m_tagImpl, inputTag) && !m_inputIsImage)
446 return false; 442 return false;
447 if (match(m_tagImpl, scriptTag) && !ScriptLoader::isValidScriptTypeAndLa nguage(m_typeAttributeValue, m_languageAttributeValue, ScriptLoader::AllowLegacy TypeInTypeAttribute))
448 return false;
449 return true; 443 return true;
450 } 444 }
451 445
452 void setCrossOrigin(const String& corsSetting) 446 void setCrossOrigin(const String& corsSetting)
453 { 447 {
454 m_crossOrigin = crossOriginAttributeValue(corsSetting); 448 m_crossOrigin = crossOriginAttributeValue(corsSetting);
455 } 449 }
456 450
457 void setDefer(FetchRequest::DeferOption defer) 451 void setDefer(FetchRequest::DeferOption defer)
458 { 452 {
(...skipping 11 matching lines...) Expand all
470 String m_charset; 464 String m_charset;
471 bool m_linkIsStyleSheet; 465 bool m_linkIsStyleSheet;
472 bool m_linkIsPreconnect; 466 bool m_linkIsPreconnect;
473 bool m_linkIsPreload; 467 bool m_linkIsPreload;
474 bool m_linkIsImport; 468 bool m_linkIsImport;
475 bool m_matched; 469 bool m_matched;
476 bool m_inputIsImage; 470 bool m_inputIsImage;
477 String m_imgSrcUrl; 471 String m_imgSrcUrl;
478 String m_srcsetAttributeValue; 472 String m_srcsetAttributeValue;
479 String m_asAttributeValue; 473 String m_asAttributeValue;
480 String m_typeAttributeValue;
481 String m_languageAttributeValue;
482 float m_sourceSize; 474 float m_sourceSize;
483 bool m_sourceSizeSet; 475 bool m_sourceSizeSet;
484 FetchRequest::DeferOption m_defer; 476 FetchRequest::DeferOption m_defer;
485 CrossOriginAttributeValue m_crossOrigin; 477 CrossOriginAttributeValue m_crossOrigin;
486 Member<MediaValuesCached> m_mediaValues; 478 Member<MediaValuesCached> m_mediaValues;
487 bool m_referrerPolicySet; 479 bool m_referrerPolicySet;
488 ReferrerPolicy m_referrerPolicy; 480 ReferrerPolicy m_referrerPolicy;
489 IntegrityMetadataSet m_integrityMetadata; 481 IntegrityMetadataSet m_integrityMetadata;
490 }; 482 };
491 483
(...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after
817 ASSERT(document); 809 ASSERT(document);
818 doHtmlPreloadScanning = !document->settings() || document->settings()->doHtm lPreloadScanning(); 810 doHtmlPreloadScanning = !document->settings() || document->settings()->doHtm lPreloadScanning();
819 doDocumentWritePreloadScanning = doHtmlPreloadScanning && document->frame() && document->frame()->isMainFrame(); 811 doDocumentWritePreloadScanning = doHtmlPreloadScanning && document->frame() && document->frame()->isMainFrame();
820 defaultViewportMinWidth = document->viewportDefaultMinWidth(); 812 defaultViewportMinWidth = document->viewportDefaultMinWidth();
821 viewportMetaZeroValuesQuirk = document->settings() && document->settings()-> viewportMetaZeroValuesQuirk(); 813 viewportMetaZeroValuesQuirk = document->settings() && document->settings()-> viewportMetaZeroValuesQuirk();
822 viewportMetaEnabled = document->settings() && document->settings()->viewport MetaEnabled(); 814 viewportMetaEnabled = document->settings() && document->settings()->viewport MetaEnabled();
823 referrerPolicy = document->getReferrerPolicy(); 815 referrerPolicy = document->getReferrerPolicy();
824 } 816 }
825 817
826 } // namespace blink 818 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698