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 5a2174aec5736c20cbbe720f521611b08fc5f69f..d98266fc8e55b1bd06930a8c2cb148d2a37a8d26 100644 |
--- a/third_party/WebKit/Source/core/html/parser/BackgroundHTMLParser.cpp |
+++ b/third_party/WebKit/Source/core/html/parser/BackgroundHTMLParser.cpp |
@@ -35,6 +35,7 @@ |
#include "public/platform/Platform.h" |
#include "public/platform/WebTaskRunner.h" |
#include "wtf/CurrentTime.h" |
+#include "wtf/Functional.h" |
#include "wtf/PtrUtil.h" |
#include "wtf/text/TextPosition.h" |
#include <memory> |
@@ -84,12 +85,18 @@ static void checkThatXSSInfosAreSafeToSendToAnotherThread(const XSSInfoStream& i |
#endif |
-void BackgroundHTMLParser::start(PassRefPtr<WeakReference<BackgroundHTMLParser>> reference, std::unique_ptr<Configuration> config, const KURL& documentURL, std::unique_ptr<CachedDocumentParameters> cachedDocumentParameters, const MediaValuesCached::MediaValuesCachedData& mediaValuesCachedData, std::unique_ptr<WebTaskRunner> loadingTaskRunner) |
+WeakPtr<BackgroundHTMLParser> BackgroundHTMLParser::create(std::unique_ptr<Configuration> config, std::unique_ptr<WebTaskRunner> loadingTaskRunner) |
{ |
- new BackgroundHTMLParser(reference, std::move(config), documentURL, std::move(cachedDocumentParameters), mediaValuesCachedData, std::move(loadingTaskRunner)); |
- // Caller must free by calling stop(). |
+ auto* backgroundParser = new BackgroundHTMLParser(std::move(config), std::move(loadingTaskRunner)); |
+ return backgroundParser->m_weakFactory.createWeakPtr(); |
} |
+void BackgroundHTMLParser::init(const KURL& documentURL, std::unique_ptr<CachedDocumentParameters> cachedDocumentParameters, const MediaValuesCached::MediaValuesCachedData& mediaValuesCachedData) |
+{ |
+ m_preloadScanner.reset(new TokenPreloadScanner(documentURL, std::move(cachedDocumentParameters), mediaValuesCachedData)); |
+} |
+ |
+ |
BackgroundHTMLParser::Configuration::Configuration() |
: outstandingTokenLimit(defaultOutstandingTokenLimit) |
, pendingTokenLimit(defaultPendingTokenLimit) |
@@ -97,8 +104,8 @@ BackgroundHTMLParser::Configuration::Configuration() |
{ |
} |
-BackgroundHTMLParser::BackgroundHTMLParser(PassRefPtr<WeakReference<BackgroundHTMLParser>> reference, std::unique_ptr<Configuration> config, const KURL& documentURL, std::unique_ptr<CachedDocumentParameters> cachedDocumentParameters, const MediaValuesCached::MediaValuesCachedData& mediaValuesCachedData, std::unique_ptr<WebTaskRunner> loadingTaskRunner) |
- : m_weakFactory(reference, this) |
+BackgroundHTMLParser::BackgroundHTMLParser(std::unique_ptr<Configuration> config, std::unique_ptr<WebTaskRunner> loadingTaskRunner) |
+ : m_weakFactory(this) |
, m_token(wrapUnique(new HTMLToken)) |
, m_tokenizer(HTMLTokenizer::create(config->options)) |
, m_treeBuilderSimulator(config->options) |
@@ -108,7 +115,6 @@ BackgroundHTMLParser::BackgroundHTMLParser(PassRefPtr<WeakReference<BackgroundHT |
, m_pendingTokens(wrapUnique(new CompactHTMLTokenStream)) |
, m_pendingTokenLimit(config->pendingTokenLimit) |
, m_xssAuditor(std::move(config->xssAuditor)) |
- , m_preloadScanner(wrapUnique(new TokenPreloadScanner(documentURL, std::move(cachedDocumentParameters), mediaValuesCachedData))) |
, m_decoder(std::move(config->decoder)) |
, m_loadingTaskRunner(std::move(loadingTaskRunner)) |
, m_tokenizedChunkQueue(config->tokenizedChunkQueue.release()) |