Index: third_party/WebKit/Source/core/html/parser/HTMLDocumentParser.cpp |
diff --git a/third_party/WebKit/Source/core/html/parser/HTMLDocumentParser.cpp b/third_party/WebKit/Source/core/html/parser/HTMLDocumentParser.cpp |
index 69f8d510dc4e3d0fa584237ed3c124a2acd1ed92..aa007910512d3a0bd953112c939a71c091ab4275 100644 |
--- a/third_party/WebKit/Source/core/html/parser/HTMLDocumentParser.cpp |
+++ b/third_party/WebKit/Source/core/html/parser/HTMLDocumentParser.cpp |
@@ -55,7 +55,9 @@ |
#include "public/platform/WebLoadingBehaviorFlag.h" |
#include "public/platform/WebScheduler.h" |
#include "public/platform/WebThread.h" |
+#include "wtf/PtrUtil.h" |
#include "wtf/TemporaryChange.h" |
+#include <memory> |
namespace blink { |
@@ -89,11 +91,11 @@ static HTMLTokenizer::State tokenizerStateForContextElement(Element* contextElem |
HTMLDocumentParser::HTMLDocumentParser(HTMLDocument& document, ParserSynchronizationPolicy syncPolicy) |
: ScriptableDocumentParser(document) |
, m_options(&document) |
- , m_token(syncPolicy == ForceSynchronousParsing ? adoptPtr(new HTMLToken) : nullptr) |
+ , m_token(syncPolicy == ForceSynchronousParsing ? wrapUnique(new HTMLToken) : nullptr) |
, m_tokenizer(syncPolicy == ForceSynchronousParsing ? HTMLTokenizer::create(m_options) : nullptr) |
, m_scriptRunner(HTMLScriptRunner::create(&document, this)) |
, m_treeBuilder(HTMLTreeBuilder::create(this, &document, getParserContentPolicy(), m_options)) |
- , m_loadingTaskRunner(adoptPtr(document.loadingTaskRunner()->clone())) |
+ , m_loadingTaskRunner(wrapUnique(document.loadingTaskRunner()->clone())) |
, m_parserScheduler(HTMLParserScheduler::create(this, m_loadingTaskRunner.get())) |
, m_xssAuditorDelegate(&document) |
, m_weakFactory(this) |
@@ -117,10 +119,10 @@ HTMLDocumentParser::HTMLDocumentParser(HTMLDocument& document, ParserSynchroniza |
HTMLDocumentParser::HTMLDocumentParser(DocumentFragment* fragment, Element* contextElement, ParserContentPolicy parserContentPolicy) |
: ScriptableDocumentParser(fragment->document(), parserContentPolicy) |
, m_options(&fragment->document()) |
- , m_token(adoptPtr(new HTMLToken)) |
+ , m_token(wrapUnique(new HTMLToken)) |
, m_tokenizer(HTMLTokenizer::create(m_options)) |
, m_treeBuilder(HTMLTreeBuilder::create(this, fragment, contextElement, this->getParserContentPolicy(), m_options)) |
- , m_loadingTaskRunner(adoptPtr(fragment->document().loadingTaskRunner()->clone())) |
+ , m_loadingTaskRunner(wrapUnique(fragment->document().loadingTaskRunner()->clone())) |
, m_xssAuditorDelegate(&fragment->document()) |
, m_weakFactory(this) |
, m_shouldUseThreading(false) |
@@ -290,7 +292,7 @@ void HTMLDocumentParser::notifyPendingParsedChunks() |
TRACE_EVENT0("blink", "HTMLDocumentParser::notifyPendingParsedChunks"); |
ASSERT(m_parsedChunkQueue); |
- Vector<OwnPtr<ParsedChunk>> pendingChunks; |
+ Vector<std::unique_ptr<ParsedChunk>> pendingChunks; |
m_parsedChunkQueue->takeAll(pendingChunks); |
if (!isParsing()) |
@@ -341,7 +343,7 @@ void HTMLDocumentParser::didReceiveEncodingDataFromBackgroundParser(const Docume |
document()->setEncodingData(data); |
} |
-void HTMLDocumentParser::validateSpeculations(PassOwnPtr<ParsedChunk> chunk) |
+void HTMLDocumentParser::validateSpeculations(std::unique_ptr<ParsedChunk> chunk) |
{ |
ASSERT(chunk); |
if (isWaitingForScripts()) { |
@@ -355,8 +357,8 @@ void HTMLDocumentParser::validateSpeculations(PassOwnPtr<ParsedChunk> chunk) |
} |
ASSERT(!m_lastChunkBeforeScript); |
- OwnPtr<HTMLTokenizer> tokenizer = std::move(m_tokenizer); |
- OwnPtr<HTMLToken> token = std::move(m_token); |
+ std::unique_ptr<HTMLTokenizer> tokenizer = std::move(m_tokenizer); |
+ std::unique_ptr<HTMLToken> token = std::move(m_token); |
if (!tokenizer) { |
// There must not have been any changes to the HTMLTokenizer state on |
@@ -380,12 +382,12 @@ void HTMLDocumentParser::validateSpeculations(PassOwnPtr<ParsedChunk> chunk) |
discardSpeculationsAndResumeFrom(std::move(chunk), std::move(token), std::move(tokenizer)); |
} |
-void HTMLDocumentParser::discardSpeculationsAndResumeFrom(PassOwnPtr<ParsedChunk> lastChunkBeforeScript, PassOwnPtr<HTMLToken> token, PassOwnPtr<HTMLTokenizer> tokenizer) |
+void HTMLDocumentParser::discardSpeculationsAndResumeFrom(std::unique_ptr<ParsedChunk> lastChunkBeforeScript, std::unique_ptr<HTMLToken> token, std::unique_ptr<HTMLTokenizer> tokenizer) |
{ |
m_weakFactory.revokeAll(); |
m_speculations.clear(); |
- OwnPtr<BackgroundHTMLParser::Checkpoint> checkpoint = adoptPtr(new BackgroundHTMLParser::Checkpoint); |
+ std::unique_ptr<BackgroundHTMLParser::Checkpoint> checkpoint = wrapUnique(new BackgroundHTMLParser::Checkpoint); |
checkpoint->parser = m_weakFactory.createWeakPtr(); |
checkpoint->token = std::move(token); |
checkpoint->tokenizer = std::move(tokenizer); |
@@ -399,7 +401,7 @@ void HTMLDocumentParser::discardSpeculationsAndResumeFrom(PassOwnPtr<ParsedChunk |
HTMLParserThread::shared()->postTask(threadSafeBind(&BackgroundHTMLParser::resumeFrom, m_backgroundParser, passed(std::move(checkpoint)))); |
} |
-size_t HTMLDocumentParser::processParsedChunkFromBackgroundParser(PassOwnPtr<ParsedChunk> popChunk) |
+size_t HTMLDocumentParser::processParsedChunkFromBackgroundParser(std::unique_ptr<ParsedChunk> popChunk) |
{ |
TRACE_EVENT_WITH_FLOW0("blink,loading", "HTMLDocumentParser::processParsedChunkFromBackgroundParser", popChunk.get(), TRACE_EVENT_FLAG_FLOW_IN); |
TemporaryChange<bool> hasLineNumber(m_isParsingAtLineNumber, true); |
@@ -414,8 +416,8 @@ size_t HTMLDocumentParser::processParsedChunkFromBackgroundParser(PassOwnPtr<Par |
ASSERT(!m_token); |
ASSERT(!m_lastChunkBeforeScript); |
- OwnPtr<ParsedChunk> chunk(std::move(popChunk)); |
- OwnPtr<CompactHTMLTokenStream> tokens = std::move(chunk->tokens); |
+ std::unique_ptr<ParsedChunk> chunk(std::move(popChunk)); |
+ std::unique_ptr<CompactHTMLTokenStream> tokens = std::move(chunk->tokens); |
size_t elementTokenCount = 0; |
HTMLParserThread::shared()->postTask(threadSafeBind(&BackgroundHTMLParser::startedChunkWithCheckpoint, m_backgroundParser, chunk->inputCheckpoint)); |
@@ -584,7 +586,7 @@ void HTMLDocumentParser::pumpTokenizer() |
// We do not XSS filter innerHTML, which means we (intentionally) fail |
// http/tests/security/xssAuditor/dom-write-innerHTML.html |
- if (OwnPtr<XSSInfo> xssInfo = m_xssAuditor.filterToken(FilterTokenRequest(token(), m_sourceTracker, m_tokenizer->shouldAllowCDATA()))) |
+ if (std::unique_ptr<XSSInfo> xssInfo = m_xssAuditor.filterToken(FilterTokenRequest(token(), m_sourceTracker, m_tokenizer->shouldAllowCDATA()))) |
m_xssAuditorDelegate.didBlockScript(*xssInfo); |
} |
@@ -673,7 +675,7 @@ void HTMLDocumentParser::insert(const SegmentedString& source) |
if (!m_tokenizer) { |
ASSERT(!inPumpSession()); |
ASSERT(m_haveBackgroundParser || wasCreatedByScript()); |
- m_token = adoptPtr(new HTMLToken); |
+ m_token = wrapUnique(new HTMLToken); |
m_tokenizer = HTMLTokenizer::create(m_options); |
} |
@@ -709,10 +711,10 @@ void HTMLDocumentParser::startBackgroundParser() |
RefPtr<WeakReference<BackgroundHTMLParser>> reference = WeakReference<BackgroundHTMLParser>::createUnbound(); |
m_backgroundParser = WeakPtr<BackgroundHTMLParser>(reference); |
- OwnPtr<BackgroundHTMLParser::Configuration> config = adoptPtr(new BackgroundHTMLParser::Configuration); |
+ std::unique_ptr<BackgroundHTMLParser::Configuration> config = wrapUnique(new BackgroundHTMLParser::Configuration); |
config->options = m_options; |
config->parser = m_weakFactory.createWeakPtr(); |
- config->xssAuditor = adoptPtr(new XSSAuditor); |
+ config->xssAuditor = wrapUnique(new XSSAuditor); |
config->xssAuditor->init(document(), &m_xssAuditorDelegate); |
config->decoder = takeDecoder(); |
@@ -732,7 +734,7 @@ void HTMLDocumentParser::startBackgroundParser() |
document()->url(), |
passed(CachedDocumentParameters::create(document())), |
MediaValuesCached::MediaValuesCachedData(*document()), |
- passed(adoptPtr(m_loadingTaskRunner->clone())))); |
+ passed(wrapUnique(m_loadingTaskRunner->clone())))); |
} |
void HTMLDocumentParser::stopBackgroundParser() |
@@ -858,7 +860,7 @@ void HTMLDocumentParser::finish() |
// We're finishing before receiving any data. Rather than booting up |
// the background parser just to spin it down, we finish parsing |
// synchronously. |
- m_token = adoptPtr(new HTMLToken); |
+ m_token = wrapUnique(new HTMLToken); |
m_tokenizer = HTMLTokenizer::create(m_options); |
} |
@@ -1010,7 +1012,7 @@ void HTMLDocumentParser::appendBytes(const char* data, size_t length) |
if (!m_haveBackgroundParser) |
startBackgroundParser(); |
- OwnPtr<Vector<char>> buffer = adoptPtr(new Vector<char>(length)); |
+ std::unique_ptr<Vector<char>> buffer = wrapUnique(new Vector<char>(length)); |
memcpy(buffer->data(), data, length); |
TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("blink.debug"), "HTMLDocumentParser::appendBytes", "size", (unsigned)length); |
@@ -1032,7 +1034,7 @@ void HTMLDocumentParser::flush() |
// appendBytes. Fallback to synchronous parsing in that case. |
if (!m_haveBackgroundParser) { |
m_shouldUseThreading = false; |
- m_token = adoptPtr(new HTMLToken); |
+ m_token = wrapUnique(new HTMLToken); |
m_tokenizer = HTMLTokenizer::create(m_options); |
DecodedDataDocumentParser::flush(); |
return; |
@@ -1044,7 +1046,7 @@ void HTMLDocumentParser::flush() |
} |
} |
-void HTMLDocumentParser::setDecoder(PassOwnPtr<TextResourceDecoder> decoder) |
+void HTMLDocumentParser::setDecoder(std::unique_ptr<TextResourceDecoder> decoder) |
{ |
ASSERT(decoder); |
DecodedDataDocumentParser::setDecoder(std::move(decoder)); |
@@ -1066,7 +1068,7 @@ void HTMLDocumentParser::documentElementAvailable() |
m_preloader->takeAndPreload(m_queuedPreloads); |
} |
-PassOwnPtr<HTMLPreloadScanner> HTMLDocumentParser::createPreloadScanner() |
+std::unique_ptr<HTMLPreloadScanner> HTMLDocumentParser::createPreloadScanner() |
{ |
return HTMLPreloadScanner::create( |
m_options, |
@@ -1093,7 +1095,7 @@ void HTMLDocumentParser::evaluateAndPreloadScriptForDocumentWrite(const String& |
double duration = monotonicallyIncreasingTimeMS() - startTime; |
int currentPreloadCount = document()->loader()->fetcher()->countPreloads(); |
- OwnPtr<HTMLPreloadScanner> scanner = createPreloadScanner(); |
+ std::unique_ptr<HTMLPreloadScanner> scanner = createPreloadScanner(); |
scanner->appendToEnd(SegmentedString(writtenSource)); |
scanner->scanAndPreload(m_preloader.get(), document()->baseElementURL(), nullptr); |
int numPreloads = document()->loader()->fetcher()->countPreloads() - currentPreloadCount; |