| 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..01f501a0bf3a03a90ffd65d24d748fed56d34f5c 100644
|
| --- a/Source/core/html/parser/HTMLTreeBuilder.cpp
|
| +++ b/Source/core/html/parser/HTMLTreeBuilder.cpp
|
| @@ -376,13 +376,10 @@ void HTMLTreeBuilder::constructTree(AtomicHTMLToken* token)
|
| processToken(token);
|
|
|
| if (m_parser->tokenizer()) {
|
| - bool inForeignContent = false;
|
| - if (!m_tree.isEmpty()) {
|
| - RefPtr<HTMLStackItem> adjustedCurrentNode = adjustedCurrentStackItem();
|
| - inForeignContent = !adjustedCurrentNode->isInHTMLNamespace()
|
| - && !HTMLElementStack::isHTMLIntegrationPoint(adjustedCurrentNode.get())
|
| - && !HTMLElementStack::isMathMLTextIntegrationPoint(adjustedCurrentNode.get());
|
| - }
|
| + bool inForeignContent = !m_tree.isEmpty()
|
| + && !m_tree.currentStackItem()->isInHTMLNamespace()
|
| + && !HTMLElementStack::isHTMLIntegrationPoint(m_tree.currentStackItem())
|
| + && !HTMLElementStack::isMathMLTextIntegrationPoint(m_tree.currentStackItem());
|
|
|
| m_parser->tokenizer()->setForceNullCharacterReplacement(m_insertionMode == TextMode || inForeignContent);
|
| m_parser->tokenizer()->setShouldAllowCDATA(inForeignContent);
|
| @@ -1002,16 +999,6 @@ bool HTMLTreeBuilder::processColgroupEndTagForInColumnGroup()
|
| return true;
|
| }
|
|
|
| -// http://www.whatwg.org/specs/web-apps/current-work/#adjusted-current-node
|
| -PassRefPtr<HTMLStackItem> HTMLTreeBuilder::adjustedCurrentStackItem() const
|
| -{
|
| - ASSERT(!m_tree.isEmpty());
|
| - if (isParsingFragment() && m_tree.openElements()->hasOnlyOneElement())
|
| - return HTMLStackItem::create(m_fragmentContext.contextElement(), HTMLStackItem::ItemForContextElement);
|
| -
|
| - return m_tree.currentStackItem();
|
| -}
|
| -
|
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html#close-the-cell
|
| void HTMLTreeBuilder::closeTheCell()
|
| {
|
| @@ -2692,11 +2679,10 @@ bool HTMLTreeBuilder::shouldProcessTokenInForeignContent(AtomicHTMLToken* token)
|
| {
|
| if (m_tree.isEmpty())
|
| return false;
|
| - RefPtr<HTMLStackItem> adjustedCurrentNode = adjustedCurrentStackItem();
|
| -
|
| - if (adjustedCurrentNode->isInHTMLNamespace())
|
| + HTMLStackItem* item = m_tree.currentStackItem();
|
| + if (item->isInHTMLNamespace())
|
| return false;
|
| - if (HTMLElementStack::isMathMLTextIntegrationPoint(adjustedCurrentNode.get())) {
|
| + if (HTMLElementStack::isMathMLTextIntegrationPoint(item)) {
|
| if (token->type() == HTMLToken::StartTag
|
| && token->name() != MathMLNames::mglyphTag
|
| && token->name() != MathMLNames::malignmarkTag)
|
| @@ -2704,11 +2690,11 @@ bool HTMLTreeBuilder::shouldProcessTokenInForeignContent(AtomicHTMLToken* token)
|
| if (token->type() == HTMLToken::Character)
|
| return false;
|
| }
|
| - if (adjustedCurrentNode->hasTagName(MathMLNames::annotation_xmlTag)
|
| + if (item->hasTagName(MathMLNames::annotation_xmlTag)
|
| && token->type() == HTMLToken::StartTag
|
| && token->name() == SVGNames::svgTag)
|
| return false;
|
| - if (HTMLElementStack::isHTMLIntegrationPoint(adjustedCurrentNode.get())) {
|
| + if (HTMLElementStack::isHTMLIntegrationPoint(item)) {
|
| if (token->type() == HTMLToken::StartTag)
|
| return false;
|
| if (token->type() == HTMLToken::Character)
|
| @@ -2730,7 +2716,6 @@ void HTMLTreeBuilder::processTokenInForeignContent(AtomicHTMLToken* token)
|
| }
|
|
|
| m_tree.flush();
|
| - RefPtr<HTMLStackItem> adjustedCurrentNode = adjustedCurrentStackItem();
|
|
|
| switch (token->type()) {
|
| case HTMLToken::Uninitialized:
|
| @@ -2785,7 +2770,7 @@ void HTMLTreeBuilder::processTokenInForeignContent(AtomicHTMLToken* token)
|
| processStartTag(token);
|
| return;
|
| }
|
| - const AtomicString& currentNamespace = adjustedCurrentNode->namespaceURI();
|
| + const AtomicString& currentNamespace = m_tree.currentStackItem()->namespaceURI();
|
| if (currentNamespace == MathMLNames::mathmlNamespaceURI)
|
| adjustMathMLAttributes(token);
|
| if (currentNamespace == SVGNames::svgNamespaceURI) {
|
| @@ -2797,7 +2782,7 @@ void HTMLTreeBuilder::processTokenInForeignContent(AtomicHTMLToken* token)
|
| break;
|
| }
|
| case HTMLToken::EndTag: {
|
| - if (adjustedCurrentNode->namespaceURI() == SVGNames::svgNamespaceURI)
|
| + if (m_tree.currentStackItem()->namespaceURI() == SVGNames::svgNamespaceURI)
|
| adjustSVGTagNameCase(token);
|
|
|
| if (token->name() == SVGNames::scriptTag && m_tree.currentStackItem()->hasTagName(SVGNames::scriptTag)) {
|
|
|