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

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: Fix up layout test 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..5a2174aec5736c20cbbe720f521611b08fc5f69f 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_pendingCSPMetaTokenIndex(HTMLDocumentParser::TokenizedChunk::noPendingToken)
, 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_pendingCSPMetaTokenIndex = m_pendingTokens->size() - 1;
+ }
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->pendingCSPMetaTokenIndex = m_pendingCSPMetaTokenIndex;
m_startingScript = false;
+ m_pendingCSPMetaTokenIndex = HTMLDocumentParser::TokenizedChunk::noPendingToken;
bool isEmpty = m_tokenizedChunkQueue->enqueue(std::move(chunk));

Powered by Google App Engine
This is Rietveld 408576698