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

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

Issue 2041013004: HTMLDocumentParser: Dedupe member inits by moving them into in-class init (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: use delegating ctor Created 4 years, 5 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
« no previous file with comments | « third_party/WebKit/Source/core/html/parser/HTMLDocumentParser.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 9c88682636e0ce6dd76d5c06fce08b40ab2a726c..757865f8d030cddb5b2dace698d91c364295a3f4 100644
--- a/third_party/WebKit/Source/core/html/parser/HTMLDocumentParser.cpp
+++ b/third_party/WebKit/Source/core/html/parser/HTMLDocumentParser.cpp
@@ -89,14 +89,29 @@ static HTMLTokenizer::State tokenizerStateForContextElement(Element* contextElem
}
HTMLDocumentParser::HTMLDocumentParser(HTMLDocument& document, ParserSynchronizationPolicy syncPolicy)
- : ScriptableDocumentParser(document)
+ : HTMLDocumentParser(document, AllowScriptingContent, syncPolicy)
+{
+ m_treeBuilder = HTMLTreeBuilder::create(this, &document, AllowScriptingContent, m_options);
Yoav Weiss 2016/07/05 08:20:14 Doesn't this mean that we're creating m_treeBuilde
kouhei (in TOK) 2016/07/06 00:49:54 Yes. This does mean that m_treeBuilder Member smar
+}
+
+HTMLDocumentParser::HTMLDocumentParser(DocumentFragment* fragment, Element* contextElement, ParserContentPolicy parserContentPolicy)
Yoav Weiss 2016/07/05 08:20:14 Not critical, but It would've been easier to revie
kouhei (in TOK) 2016/07/06 00:49:54 I think we should have delegated ctor def either a
+ : HTMLDocumentParser(fragment->document(), parserContentPolicy, ForceSynchronousParsing)
+{
+ m_treeBuilder = HTMLTreeBuilder::create(this, fragment, contextElement, parserContentPolicy, m_options);
+
+ bool reportErrors = false; // For now document fragment parsing never reports errors.
+ m_tokenizer->setState(tokenizerStateForContextElement(contextElement, reportErrors, m_options));
+ m_xssAuditor.initForFragment();
+}
+
+HTMLDocumentParser::HTMLDocumentParser(Document& document, ParserContentPolicy contentPolicy, ParserSynchronizationPolicy syncPolicy)
+ : ScriptableDocumentParser(document, contentPolicy)
, m_options(&document)
, 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_scriptRunner(scriptingContentIsAllowed(contentPolicy) ? HTMLScriptRunner::create(&document, this) : nullptr)
tzik 2016/07/05 07:59:09 # As we chatted offline. On old code, m_scriptRunn
, m_loadingTaskRunner(wrapUnique(document.loadingTaskRunner()->clone()))
- , m_parserScheduler(HTMLParserScheduler::create(this, m_loadingTaskRunner.get()))
+ , m_parserScheduler(syncPolicy == AllowAsynchronousParsing ? HTMLParserScheduler::create(this, m_loadingTaskRunner.get()) : nullptr)
, m_xssAuditorDelegate(&document)
, m_weakFactory(this)
, m_preloader(HTMLResourcePreloader::create(document))
@@ -114,29 +129,6 @@ HTMLDocumentParser::HTMLDocumentParser(HTMLDocument& document, ParserSynchroniza
ASSERT(shouldUseThreading() || (m_token && m_tokenizer));
}
-// FIXME: Member variables should be grouped into self-initializing structs to
-// minimize code duplication between these constructors.
-HTMLDocumentParser::HTMLDocumentParser(DocumentFragment* fragment, Element* contextElement, ParserContentPolicy parserContentPolicy)
- : ScriptableDocumentParser(fragment->document(), parserContentPolicy)
- , m_options(&fragment->document())
- , m_token(wrapUnique(new HTMLToken))
- , m_tokenizer(HTMLTokenizer::create(m_options))
- , m_treeBuilder(HTMLTreeBuilder::create(this, fragment, contextElement, this->getParserContentPolicy(), m_options))
- , m_loadingTaskRunner(wrapUnique(fragment->document().loadingTaskRunner()->clone()))
- , m_xssAuditorDelegate(&fragment->document())
- , m_weakFactory(this)
- , m_shouldUseThreading(false)
- , m_endWasDelayed(false)
- , m_haveBackgroundParser(false)
- , m_tasksWereSuspended(false)
- , m_pumpSessionNestingLevel(0)
- , m_pumpSpeculationsSessionNestingLevel(0)
-{
- bool reportErrors = false; // For now document fragment parsing never reports errors.
- m_tokenizer->setState(tokenizerStateForContextElement(contextElement, reportErrors, m_options));
- m_xssAuditor.initForFragment();
-}
-
HTMLDocumentParser::~HTMLDocumentParser()
{
// In Oilpan, HTMLDocumentParser can die together with Document, and
« no previous file with comments | « third_party/WebKit/Source/core/html/parser/HTMLDocumentParser.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698