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

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

Issue 2126043003: Refactor HTMLTreeBuilder/HTMLConstructionSite ctor (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase / add comment 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/HTMLTreeBuilder.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/HTMLTreeBuilder.cpp
diff --git a/third_party/WebKit/Source/core/html/parser/HTMLTreeBuilder.cpp b/third_party/WebKit/Source/core/html/parser/HTMLTreeBuilder.cpp
index 8ef2234ecf6d917f8a31b2bed8ecb40f5fdb5aff..2765eef4180384be8cf960de6147d67a810dec05 100644
--- a/third_party/WebKit/Source/core/html/parser/HTMLTreeBuilder.cpp
+++ b/third_party/WebKit/Source/core/html/parser/HTMLTreeBuilder.cpp
@@ -267,7 +267,7 @@ private:
unsigned m_end;
};
-HTMLTreeBuilder::HTMLTreeBuilder(HTMLDocumentParser* parser, HTMLDocument* document, ParserContentPolicy parserContentPolicy, const HTMLParserOptions& options)
+HTMLTreeBuilder::HTMLTreeBuilder(HTMLDocumentParser* parser, Document& document, ParserContentPolicy parserContentPolicy, const HTMLParserOptions& options)
: m_framesetOk(true)
#if ENABLE(ASSERT)
, m_isAttached(true)
@@ -282,24 +282,13 @@ HTMLTreeBuilder::HTMLTreeBuilder(HTMLDocumentParser* parser, HTMLDocument* docum
{
}
-// FIXME: Member variables should be grouped into self-initializing structs to
-// minimize code duplication between these constructors.
HTMLTreeBuilder::HTMLTreeBuilder(HTMLDocumentParser* parser, DocumentFragment* fragment, Element* contextElement, ParserContentPolicy parserContentPolicy, const HTMLParserOptions& options)
- : m_framesetOk(true)
-#if ENABLE(ASSERT)
- , m_isAttached(true)
-#endif
- , m_fragmentContext(fragment, contextElement)
- , m_tree(fragment, parserContentPolicy)
- , m_insertionMode(InitialMode)
- , m_originalInsertionMode(InitialMode)
- , m_shouldSkipLeadingNewline(false)
- , m_parser(parser)
- , m_scriptToProcessStartPosition(uninitializedPositionValue1())
- , m_options(options)
+ : HTMLTreeBuilder(parser, fragment->document(), parserContentPolicy, options)
{
ASSERT(isMainThread());
ASSERT(contextElement);
+ m_tree.initFragmentParsing(fragment);
+ m_fragmentContext.init(fragment, contextElement);
// Steps 4.2-4.6 of the HTML5 Fragment Case parsing algorithm:
// http://www.whatwg.org/specs/web-apps/current-work/multipage/the-end.html#fragment-case
@@ -318,6 +307,20 @@ HTMLTreeBuilder::~HTMLTreeBuilder()
{
}
+void HTMLTreeBuilder::FragmentParsingContext::init(DocumentFragment* fragment, Element* contextElement)
+{
+ DCHECK(fragment);
+ DCHECK(!fragment->hasChildren());
+ m_fragment = fragment;
+ m_contextElementStackItem = HTMLStackItem::create(contextElement, HTMLStackItem::ItemForContextElement);
+}
+
+DEFINE_TRACE(HTMLTreeBuilder::FragmentParsingContext)
+{
+ visitor->trace(m_fragment);
+ visitor->trace(m_contextElementStackItem);
+}
+
DEFINE_TRACE(HTMLTreeBuilder)
{
visitor->trace(m_fragmentContext);
@@ -338,28 +341,6 @@ void HTMLTreeBuilder::detach()
m_tree.detach();
}
-HTMLTreeBuilder::FragmentParsingContext::FragmentParsingContext()
- : m_fragment(nullptr)
-{
-}
-
-HTMLTreeBuilder::FragmentParsingContext::FragmentParsingContext(DocumentFragment* fragment, Element* contextElement)
- : m_fragment(fragment)
-{
- ASSERT(!fragment->hasChildren());
- m_contextElementStackItem = HTMLStackItem::create(contextElement, HTMLStackItem::ItemForContextElement);
-}
-
-HTMLTreeBuilder::FragmentParsingContext::~FragmentParsingContext()
-{
-}
-
-DEFINE_TRACE(HTMLTreeBuilder::FragmentParsingContext)
-{
- visitor->trace(m_fragment);
- visitor->trace(m_contextElementStackItem);
-}
-
Element* HTMLTreeBuilder::takeScriptToProcess(TextPosition& scriptStartPosition)
{
ASSERT(m_scriptToProcess);
@@ -2135,7 +2116,7 @@ void HTMLTreeBuilder::processEndTag(AtomicHTMLToken* token)
case InFramesetMode:
ASSERT(getInsertionMode() == InFramesetMode);
if (token->name() == framesetTag) {
- bool ignoreFramesetForFragmentParsing = m_tree.currentIsRootNode();
+ bool ignoreFramesetForFragmentParsing = m_tree.currentIsRootNode();
ignoreFramesetForFragmentParsing = ignoreFramesetForFragmentParsing || m_tree.openElements()->hasTemplateInHTMLScope();
if (ignoreFramesetForFragmentParsing) {
ASSERT(isParsingFragmentOrTemplateContents());
« no previous file with comments | « third_party/WebKit/Source/core/html/parser/HTMLTreeBuilder.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698