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

Unified Diff: third_party/WebKit/Source/core/html/parser/CSSPreloadScanner.cpp

Issue 1493253002: CSSPreloadScanner should handle <base> adjusted URLs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: ensure init pointers at c-tor Created 5 years 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
Index: third_party/WebKit/Source/core/html/parser/CSSPreloadScanner.cpp
diff --git a/third_party/WebKit/Source/core/html/parser/CSSPreloadScanner.cpp b/third_party/WebKit/Source/core/html/parser/CSSPreloadScanner.cpp
index d7fad12fa695d98da79499de7832e7176e07d912..fcbde6e34bdbf362c45fe49d40882c09f759c044 100644
--- a/third_party/WebKit/Source/core/html/parser/CSSPreloadScanner.cpp
+++ b/third_party/WebKit/Source/core/html/parser/CSSPreloadScanner.cpp
@@ -35,9 +35,6 @@
namespace blink {
CSSPreloadScanner::CSSPreloadScanner()
- : m_state(Initial)
- , m_requests(0)
- , m_referrerPolicy(ReferrerPolicyDefault)
{
}
@@ -53,28 +50,32 @@ void CSSPreloadScanner::reset()
}
template<typename Char>
-void CSSPreloadScanner::scanCommon(const Char* begin, const Char* end, const SegmentedString& source, PreloadRequestStream& requests)
+void CSSPreloadScanner::scanCommon(const Char* begin, const Char* end, const SegmentedString& source, PreloadRequestStream& requests, const KURL& predictedBaseElementURL)
{
m_requests = &requests;
+ m_predictedBaseElementURL = &predictedBaseElementURL;
+
for (const Char* it = begin; it != end && m_state != DoneParsingImportRules; ++it)
tokenize(*it, source);
- m_requests = 0;
+
+ m_requests = nullptr;
+ m_predictedBaseElementURL = nullptr;
}
-void CSSPreloadScanner::scan(const HTMLToken::DataVector& data, const SegmentedString& source, PreloadRequestStream& requests)
+void CSSPreloadScanner::scan(const HTMLToken::DataVector& data, const SegmentedString& source, PreloadRequestStream& requests, const KURL& predictedBaseElementURL)
{
- scanCommon(data.data(), data.data() + data.size(), source, requests);
+ scanCommon(data.data(), data.data() + data.size(), source, requests, predictedBaseElementURL);
}
-void CSSPreloadScanner::scan(const String& tagName, const SegmentedString& source, PreloadRequestStream& requests)
+void CSSPreloadScanner::scan(const String& tagName, const SegmentedString& source, PreloadRequestStream& requests, const KURL& predictedBaseElementURL)
{
if (tagName.is8Bit()) {
const LChar* begin = tagName.characters8();
- scanCommon(begin, begin + tagName.length(), source, requests);
+ scanCommon(begin, begin + tagName.length(), source, requests, predictedBaseElementURL);
return;
}
const UChar* begin = tagName.characters16();
- scanCommon(begin, begin + tagName.length(), source, requests);
+ scanCommon(begin, begin + tagName.length(), source, requests, predictedBaseElementURL);
}
void CSSPreloadScanner::setReferrerPolicy(const ReferrerPolicy policy)
@@ -219,9 +220,8 @@ void CSSPreloadScanner::emitRule(const SegmentedString& source)
if (equalIgnoringCase(m_rule, "import")) {
String url = parseCSSStringOrURL(m_ruleValue.toString());
if (!url.isEmpty()) {
- KURL baseElementURL; // FIXME: This should be passed in from the HTMLPreloadScaner via scan()!
TextPosition position = TextPosition(source.currentLine(), source.currentColumn());
- OwnPtr<PreloadRequest> request = PreloadRequest::create(FetchInitiatorTypeNames::css, position, url, baseElementURL, Resource::CSSStyleSheet, m_referrerPolicy);
+ OwnPtr<PreloadRequest> request = PreloadRequest::create(FetchInitiatorTypeNames::css, position, url, *m_predictedBaseElementURL, Resource::CSSStyleSheet, m_referrerPolicy);
// FIXME: Should this be including the charset in the preload request?
m_requests->append(request.release());
}

Powered by Google App Engine
This is Rietveld 408576698