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

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

Issue 2050123002: Remove OwnPtr from Blink. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: First attempt to land. Created 4 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 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 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 #include "core/html/HTMLMetaElement.h" 43 #include "core/html/HTMLMetaElement.h"
44 #include "core/html/LinkRelAttribute.h" 44 #include "core/html/LinkRelAttribute.h"
45 #include "core/html/parser/HTMLParserIdioms.h" 45 #include "core/html/parser/HTMLParserIdioms.h"
46 #include "core/html/parser/HTMLSrcsetParser.h" 46 #include "core/html/parser/HTMLSrcsetParser.h"
47 #include "core/html/parser/HTMLTokenizer.h" 47 #include "core/html/parser/HTMLTokenizer.h"
48 #include "core/loader/LinkLoader.h" 48 #include "core/loader/LinkLoader.h"
49 #include "platform/ContentType.h" 49 #include "platform/ContentType.h"
50 #include "platform/Histogram.h" 50 #include "platform/Histogram.h"
51 #include "platform/MIMETypeRegistry.h" 51 #include "platform/MIMETypeRegistry.h"
52 #include "platform/TraceEvent.h" 52 #include "platform/TraceEvent.h"
53 #include <memory>
53 54
54 namespace blink { 55 namespace blink {
55 56
56 namespace { 57 namespace {
57 58
58 // When adding values to this enum, update histograms.xml as well. 59 // When adding values to this enum, update histograms.xml as well.
59 enum DocumentWriteGatedEvaluation { 60 enum DocumentWriteGatedEvaluation {
60 GatedEvaluationScriptTooLong, 61 GatedEvaluationScriptTooLong,
61 GatedEvaluationNoLikelyScript, 62 GatedEvaluationNoLikelyScript,
62 GatedEvaluationLooping, 63 GatedEvaluationLooping,
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
199 // ref to a string we're going to send will fail isSafeToSendToAnoth erThread(). 200 // ref to a string we're going to send will fail isSafeToSendToAnoth erThread().
200 pictureData.sourceURL = m_srcsetImageCandidate.toString().isolatedCo py(); 201 pictureData.sourceURL = m_srcsetImageCandidate.toString().isolatedCo py();
201 pictureData.sourceSizeSet = m_sourceSizeSet; 202 pictureData.sourceSizeSet = m_sourceSizeSet;
202 pictureData.sourceSize = m_sourceSize; 203 pictureData.sourceSize = m_sourceSize;
203 pictureData.picked = true; 204 pictureData.picked = true;
204 } else if (match(m_tagImpl, imgTag) && !pictureData.sourceURL.isEmpty()) { 205 } else if (match(m_tagImpl, imgTag) && !pictureData.sourceURL.isEmpty()) {
205 setUrlToLoad(pictureData.sourceURL, AllowURLReplacement); 206 setUrlToLoad(pictureData.sourceURL, AllowURLReplacement);
206 } 207 }
207 } 208 }
208 209
209 PassOwnPtr<PreloadRequest> createPreloadRequest(const KURL& predictedBaseURL , const SegmentedString& source, const ClientHintsPreferences& clientHintsPrefer ences, const PictureData& pictureData, const ReferrerPolicy documentReferrerPoli cy) 210 std::unique_ptr<PreloadRequest> createPreloadRequest(const KURL& predictedBa seURL, const SegmentedString& source, const ClientHintsPreferences& clientHintsP references, const PictureData& pictureData, const ReferrerPolicy documentReferre rPolicy)
210 { 211 {
211 PreloadRequest::RequestType requestType = PreloadRequest::RequestTypePre load; 212 PreloadRequest::RequestType requestType = PreloadRequest::RequestTypePre load;
212 if (shouldPreconnect()) { 213 if (shouldPreconnect()) {
213 requestType = PreloadRequest::RequestTypePreconnect; 214 requestType = PreloadRequest::RequestTypePreconnect;
214 } else { 215 } else {
215 if (isLinkRelPreload()) { 216 if (isLinkRelPreload()) {
216 requestType = PreloadRequest::RequestTypeLinkRelPreload; 217 requestType = PreloadRequest::RequestTypeLinkRelPreload;
217 } 218 }
218 if (!shouldPreload()) { 219 if (!shouldPreload()) {
219 return nullptr; 220 return nullptr;
(...skipping 13 matching lines...) Expand all
233 resourceWidth.width = sourceSize; 234 resourceWidth.width = sourceSize;
234 resourceWidth.isSet = true; 235 resourceWidth.isSet = true;
235 } 236 }
236 237
237 Resource::Type type; 238 Resource::Type type;
238 if (!resourceType(type)) 239 if (!resourceType(type))
239 return nullptr; 240 return nullptr;
240 241
241 // The element's 'referrerpolicy' attribute (if present) takes precedenc e over the document's referrer policy. 242 // The element's 'referrerpolicy' attribute (if present) takes precedenc e over the document's referrer policy.
242 ReferrerPolicy referrerPolicy = (m_referrerPolicy != ReferrerPolicyDefau lt) ? m_referrerPolicy : documentReferrerPolicy; 243 ReferrerPolicy referrerPolicy = (m_referrerPolicy != ReferrerPolicyDefau lt) ? m_referrerPolicy : documentReferrerPolicy;
243 OwnPtr<PreloadRequest> request = PreloadRequest::create(initiatorFor(m_t agImpl), position, m_urlToLoad, predictedBaseURL, type, referrerPolicy, resource Width, clientHintsPreferences, requestType); 244 std::unique_ptr<PreloadRequest> request = PreloadRequest::create(initiat orFor(m_tagImpl), position, m_urlToLoad, predictedBaseURL, type, referrerPolicy, resourceWidth, clientHintsPreferences, requestType);
244 request->setCrossOrigin(m_crossOrigin); 245 request->setCrossOrigin(m_crossOrigin);
245 request->setCharset(charset()); 246 request->setCharset(charset());
246 request->setDefer(m_defer); 247 request->setDefer(m_defer);
247 request->setIntegrityMetadata(m_integrityMetadata); 248 request->setIntegrityMetadata(m_integrityMetadata);
248 return request; 249 return request;
249 } 250 }
250 251
251 private: 252 private:
252 template<typename NameType> 253 template<typename NameType>
253 void processScriptAttribute(const NameType& attributeName, const String& att ributeValue) 254 void processScriptAttribute(const NameType& attributeName, const String& att ributeValue)
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
473 float m_sourceSize; 474 float m_sourceSize;
474 bool m_sourceSizeSet; 475 bool m_sourceSizeSet;
475 FetchRequest::DeferOption m_defer; 476 FetchRequest::DeferOption m_defer;
476 CrossOriginAttributeValue m_crossOrigin; 477 CrossOriginAttributeValue m_crossOrigin;
477 Member<MediaValuesCached> m_mediaValues; 478 Member<MediaValuesCached> m_mediaValues;
478 bool m_referrerPolicySet; 479 bool m_referrerPolicySet;
479 ReferrerPolicy m_referrerPolicy; 480 ReferrerPolicy m_referrerPolicy;
480 IntegrityMetadataSet m_integrityMetadata; 481 IntegrityMetadataSet m_integrityMetadata;
481 }; 482 };
482 483
483 TokenPreloadScanner::TokenPreloadScanner(const KURL& documentURL, PassOwnPtr<Cac hedDocumentParameters> documentParameters, const MediaValuesCached::MediaValuesC achedData& mediaValuesCachedData) 484 TokenPreloadScanner::TokenPreloadScanner(const KURL& documentURL, std::unique_pt r<CachedDocumentParameters> documentParameters, const MediaValuesCached::MediaVa luesCachedData& mediaValuesCachedData)
484 : m_documentURL(documentURL) 485 : m_documentURL(documentURL)
485 , m_inStyle(false) 486 , m_inStyle(false)
486 , m_inPicture(false) 487 , m_inPicture(false)
487 , m_inScript(false) 488 , m_inScript(false)
488 , m_isAppCacheEnabled(false) 489 , m_isAppCacheEnabled(false)
489 , m_isCSPEnabled(false) 490 , m_isCSPEnabled(false)
490 , m_templateCount(0) 491 , m_templateCount(0)
491 , m_documentParameters(std::move(documentParameters)) 492 , m_documentParameters(std::move(documentParameters))
492 , m_mediaValues(MediaValuesCached::create(mediaValuesCachedData)) 493 , m_mediaValues(MediaValuesCached::create(mediaValuesCachedData))
493 , m_didRewind(false) 494 , m_didRewind(false)
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after
737 if (match(tagImpl, pictureTag)) { 738 if (match(tagImpl, pictureTag)) {
738 m_inPicture = true; 739 m_inPicture = true;
739 m_pictureData = PictureData(); 740 m_pictureData = PictureData();
740 return; 741 return;
741 } 742 }
742 743
743 StartTagScanner scanner(tagImpl, m_mediaValues); 744 StartTagScanner scanner(tagImpl, m_mediaValues);
744 scanner.processAttributes(token.attributes()); 745 scanner.processAttributes(token.attributes());
745 if (m_inPicture) 746 if (m_inPicture)
746 scanner.handlePictureSourceURL(m_pictureData); 747 scanner.handlePictureSourceURL(m_pictureData);
747 OwnPtr<PreloadRequest> request = scanner.createPreloadRequest(m_predicte dBaseElementURL, source, m_clientHintsPreferences, m_pictureData, m_documentPara meters->referrerPolicy); 748 std::unique_ptr<PreloadRequest> request = scanner.createPreloadRequest(m _predictedBaseElementURL, source, m_clientHintsPreferences, m_pictureData, m_doc umentParameters->referrerPolicy);
748 if (request) 749 if (request)
749 requests.append(std::move(request)); 750 requests.append(std::move(request));
750 return; 751 return;
751 } 752 }
752 default: { 753 default: {
753 return; 754 return;
754 } 755 }
755 } 756 }
756 } 757 }
757 758
758 template<typename Token> 759 template<typename Token>
759 void TokenPreloadScanner::updatePredictedBaseURL(const Token& token) 760 void TokenPreloadScanner::updatePredictedBaseURL(const Token& token)
760 { 761 {
761 ASSERT(m_predictedBaseElementURL.isEmpty()); 762 ASSERT(m_predictedBaseElementURL.isEmpty());
762 if (const typename Token::Attribute* hrefAttribute = token.getAttributeItem( hrefAttr)) { 763 if (const typename Token::Attribute* hrefAttribute = token.getAttributeItem( hrefAttr)) {
763 KURL url(m_documentURL, stripLeadingAndTrailingHTMLSpaces(hrefAttribute- >value8BitIfNecessary())); 764 KURL url(m_documentURL, stripLeadingAndTrailingHTMLSpaces(hrefAttribute- >value8BitIfNecessary()));
764 m_predictedBaseElementURL = url.isValid() ? url.copy() : KURL(); 765 m_predictedBaseElementURL = url.isValid() ? url.copy() : KURL();
765 } 766 }
766 } 767 }
767 768
768 HTMLPreloadScanner::HTMLPreloadScanner(const HTMLParserOptions& options, const K URL& documentURL, PassOwnPtr<CachedDocumentParameters> documentParameters, const MediaValuesCached::MediaValuesCachedData& mediaValuesCachedData) 769 HTMLPreloadScanner::HTMLPreloadScanner(const HTMLParserOptions& options, const K URL& documentURL, std::unique_ptr<CachedDocumentParameters> documentParameters, const MediaValuesCached::MediaValuesCachedData& mediaValuesCachedData)
769 : m_scanner(documentURL, std::move(documentParameters), mediaValuesCachedDat a) 770 : m_scanner(documentURL, std::move(documentParameters), mediaValuesCachedDat a)
770 , m_tokenizer(HTMLTokenizer::create(options)) 771 , m_tokenizer(HTMLTokenizer::create(options))
771 { 772 {
772 } 773 }
773 774
774 HTMLPreloadScanner::~HTMLPreloadScanner() 775 HTMLPreloadScanner::~HTMLPreloadScanner()
775 { 776 {
776 } 777 }
777 778
778 void HTMLPreloadScanner::appendToEnd(const SegmentedString& source) 779 void HTMLPreloadScanner::appendToEnd(const SegmentedString& source)
(...skipping 29 matching lines...) Expand all
808 ASSERT(document); 809 ASSERT(document);
809 doHtmlPreloadScanning = !document->settings() || document->settings()->doHtm lPreloadScanning(); 810 doHtmlPreloadScanning = !document->settings() || document->settings()->doHtm lPreloadScanning();
810 doDocumentWritePreloadScanning = doHtmlPreloadScanning && document->frame() && document->frame()->isMainFrame(); 811 doDocumentWritePreloadScanning = doHtmlPreloadScanning && document->frame() && document->frame()->isMainFrame();
811 defaultViewportMinWidth = document->viewportDefaultMinWidth(); 812 defaultViewportMinWidth = document->viewportDefaultMinWidth();
812 viewportMetaZeroValuesQuirk = document->settings() && document->settings()-> viewportMetaZeroValuesQuirk(); 813 viewportMetaZeroValuesQuirk = document->settings() && document->settings()-> viewportMetaZeroValuesQuirk();
813 viewportMetaEnabled = document->settings() && document->settings()->viewport MetaEnabled(); 814 viewportMetaEnabled = document->settings() && document->settings()->viewport MetaEnabled();
814 referrerPolicy = document->getReferrerPolicy(); 815 referrerPolicy = document->getReferrerPolicy();
815 } 816 }
816 817
817 } // namespace blink 818 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698