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

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

Issue 2242223003: Preload tokens even if a <meta> csp tag is found (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: less refactoring Created 4 years, 4 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
Index: third_party/WebKit/Source/core/html/parser/BackgroundHTMLParser.cpp
diff --git a/third_party/WebKit/Source/core/html/parser/BackgroundHTMLParser.cpp b/third_party/WebKit/Source/core/html/parser/BackgroundHTMLParser.cpp
index 932f73768bb1219148257557de27cc615ab216e8..b22fb387477cbd8764886cd2d25a0d26460e7751 100644
--- a/third_party/WebKit/Source/core/html/parser/BackgroundHTMLParser.cpp
+++ b/third_party/WebKit/Source/core/html/parser/BackgroundHTMLParser.cpp
@@ -112,6 +112,7 @@ BackgroundHTMLParser::BackgroundHTMLParser(PassRefPtr<WeakReference<BackgroundHT
, m_decoder(std::move(config->decoder))
, m_loadingTaskRunner(std::move(loadingTaskRunner))
, m_tokenizedChunkQueue(config->tokenizedChunkQueue.release())
+ , m_pendingCSPMetaTag(nullptr)
, m_startingScript(false)
, m_lastBytesReceivedTime(0.0)
, m_shouldCoalesceChunks(config->shouldCoalesceChunks)
@@ -252,7 +253,8 @@ void BackgroundHTMLParser::pumpTokenizer()
CompactHTMLToken token(m_token.get(), position);
bool shouldEvaluateForDocumentWrite = false;
- m_preloadScanner->scan(token, m_input.current(), m_pendingPreloads, &m_viewportDescription, &shouldEvaluateForDocumentWrite);
+ bool isCSPMetaTag = false;
+ m_preloadScanner->scan(token, m_input.current(), m_pendingPreloads, &m_viewportDescription, &isCSPMetaTag, &shouldEvaluateForDocumentWrite);
simulatedToken = m_treeBuilderSimulator.simulate(token, m_tokenizer.get());
@@ -264,6 +266,9 @@ void BackgroundHTMLParser::pumpTokenizer()
}
m_pendingTokens->append(token);
+ if (isCSPMetaTag) {
+ m_pendingCSPMetaTag = &m_pendingTokens->last();
+ }
if (shouldEvaluateForDocumentWrite) {
m_likelyDocumentWriteScriptIndices.append(m_pendingTokens->size() - 1);
}
@@ -324,7 +329,9 @@ bool BackgroundHTMLParser::queueChunkForMainThread()
chunk->tokens = std::move(m_pendingTokens);
chunk->startingScript = m_startingScript;
chunk->likelyDocumentWriteScriptIndices.swap(m_likelyDocumentWriteScriptIndices);
+ chunk->pendingCSPMetaTag = m_pendingCSPMetaTag;
m_startingScript = false;
+ m_pendingCSPMetaTag = nullptr;
bool isEmpty = m_tokenizedChunkQueue->enqueue(std::move(chunk));

Powered by Google App Engine
This is Rietveld 408576698