Chromium Code Reviews| Index: Source/core/html/parser/HTMLTreeBuilder.cpp |
| diff --git a/Source/core/html/parser/HTMLTreeBuilder.cpp b/Source/core/html/parser/HTMLTreeBuilder.cpp |
| index 0553f7384f9054e234ed2df991d0f728c1e81317..23c24555ac1dcadb2b193642869db69164a244df 100644 |
| --- a/Source/core/html/parser/HTMLTreeBuilder.cpp |
| +++ b/Source/core/html/parser/HTMLTreeBuilder.cpp |
| @@ -340,15 +340,14 @@ void HTMLTreeBuilder::detach() |
| HTMLTreeBuilder::FragmentParsingContext::FragmentParsingContext() |
| : m_fragment(0) |
| - , m_contextElement(0) |
|
eseidel
2013/11/14 15:39:41
Oh, I love it.
|
| { |
| } |
| HTMLTreeBuilder::FragmentParsingContext::FragmentParsingContext(DocumentFragment* fragment, Element* contextElement) |
| : m_fragment(fragment) |
| - , m_contextElement(contextElement) |
| { |
| ASSERT(!fragment->hasChildNodes()); |
| + m_contextElementStackItem = HTMLStackItem::create(contextElement, HTMLStackItem::ItemForContextElement); |
| } |
| HTMLTreeBuilder::FragmentParsingContext::~FragmentParsingContext() |
| @@ -378,10 +377,10 @@ void HTMLTreeBuilder::constructTree(AtomicHTMLToken* token) |
| if (m_parser->tokenizer()) { |
| bool inForeignContent = false; |
| if (!m_tree.isEmpty()) { |
| - RefPtr<HTMLStackItem> adjustedCurrentNode = adjustedCurrentStackItem(); |
| + HTMLStackItem* adjustedCurrentNode = adjustedCurrentStackItem(); |
| inForeignContent = !adjustedCurrentNode->isInHTMLNamespace() |
| - && !HTMLElementStack::isHTMLIntegrationPoint(adjustedCurrentNode.get()) |
| - && !HTMLElementStack::isMathMLTextIntegrationPoint(adjustedCurrentNode.get()); |
| + && !HTMLElementStack::isHTMLIntegrationPoint(adjustedCurrentNode) |
| + && !HTMLElementStack::isMathMLTextIntegrationPoint(adjustedCurrentNode); |
| } |
| m_parser->tokenizer()->setForceNullCharacterReplacement(m_insertionMode == TextMode || inForeignContent); |
| @@ -1003,11 +1002,11 @@ bool HTMLTreeBuilder::processColgroupEndTagForInColumnGroup() |
| } |
| // http://www.whatwg.org/specs/web-apps/current-work/#adjusted-current-node |
| -PassRefPtr<HTMLStackItem> HTMLTreeBuilder::adjustedCurrentStackItem() const |
| +HTMLStackItem* HTMLTreeBuilder::adjustedCurrentStackItem() const |
| { |
| ASSERT(!m_tree.isEmpty()); |
| if (isParsingFragment() && m_tree.openElements()->hasOnlyOneElement()) |
| - return HTMLStackItem::create(m_fragmentContext.contextElement(), HTMLStackItem::ItemForContextElement); |
| + return m_fragmentContext.contextElementStackItem().get(); |
| return m_tree.currentStackItem(); |
| } |
| @@ -1624,7 +1623,7 @@ void HTMLTreeBuilder::resetInsertionModeAppropriately() |
| if (item->node() == m_tree.openElements()->rootNode()) { |
| last = true; |
| if (isParsingFragment()) |
| - item = HTMLStackItem::create(m_fragmentContext.contextElement(), HTMLStackItem::ItemForContextElement); |
| + item = m_fragmentContext.contextElementStackItem(); |
| } |
| if (item->hasTagName(templateTag)) |
| return setInsertionMode(m_templateInsertionModes.last()); |
| @@ -2692,11 +2691,11 @@ bool HTMLTreeBuilder::shouldProcessTokenInForeignContent(AtomicHTMLToken* token) |
| { |
| if (m_tree.isEmpty()) |
| return false; |
| - RefPtr<HTMLStackItem> adjustedCurrentNode = adjustedCurrentStackItem(); |
| + HTMLStackItem* adjustedCurrentNode = adjustedCurrentStackItem(); |
| if (adjustedCurrentNode->isInHTMLNamespace()) |
| return false; |
| - if (HTMLElementStack::isMathMLTextIntegrationPoint(adjustedCurrentNode.get())) { |
| + if (HTMLElementStack::isMathMLTextIntegrationPoint(adjustedCurrentNode)) { |
| if (token->type() == HTMLToken::StartTag |
| && token->name() != MathMLNames::mglyphTag |
| && token->name() != MathMLNames::malignmarkTag) |
| @@ -2708,7 +2707,7 @@ bool HTMLTreeBuilder::shouldProcessTokenInForeignContent(AtomicHTMLToken* token) |
| && token->type() == HTMLToken::StartTag |
| && token->name() == SVGNames::svgTag) |
| return false; |
| - if (HTMLElementStack::isHTMLIntegrationPoint(adjustedCurrentNode.get())) { |
| + if (HTMLElementStack::isHTMLIntegrationPoint(adjustedCurrentNode)) { |
| if (token->type() == HTMLToken::StartTag) |
| return false; |
| if (token->type() == HTMLToken::Character) |
| @@ -2730,7 +2729,7 @@ void HTMLTreeBuilder::processTokenInForeignContent(AtomicHTMLToken* token) |
| } |
| m_tree.flush(); |
| - RefPtr<HTMLStackItem> adjustedCurrentNode = adjustedCurrentStackItem(); |
| + HTMLStackItem* adjustedCurrentNode = adjustedCurrentStackItem(); |
| switch (token->type()) { |
| case HTMLToken::Uninitialized: |