Bug 1269490 - Merge nsHtml5Atoms into nsGkAtoms. r=wchen

MozReview-Commit-ID: EcfnXkFuJy3
This commit is contained in:
Henri Sivonen
2017-04-20 11:47:02 +03:00
parent b8633bb8d6
commit 43720a8e05
31 changed files with 1698 additions and 2180 deletions

View File

@@ -42,7 +42,7 @@
#include "nsHtml5DocumentMode.h"
#include "nsHtml5ArrayCopy.h"
#include "nsHtml5Parser.h"
#include "nsHtml5Atoms.h"
#include "nsGkAtoms.h"
#include "nsHtml5TreeOperation.h"
#include "nsHtml5StateSnapshot.h"
#include "nsHtml5StackNode.h"
@@ -98,7 +98,8 @@ nsHtml5TreeBuilder::startTokenization(nsHtml5Tokenizer* self)
}
if (contextNamespace == kNameSpaceID_SVG) {
nsHtml5ElementName* elementName = nsHtml5ElementName::ELT_SVG;
if (nsHtml5Atoms::title == contextName || nsHtml5Atoms::desc == contextName || nsHtml5Atoms::foreignObject == contextName) {
if (nsGkAtoms::title == contextName || nsGkAtoms::desc == contextName ||
nsGkAtoms::foreignObject == contextName) {
elementName = nsHtml5ElementName::ELT_FOREIGNOBJECT;
}
nsHtml5StackNode* node =
@@ -110,9 +111,11 @@ nsHtml5TreeBuilder::startTokenization(nsHtml5Tokenizer* self)
mode = FRAMESET_OK;
} else if (contextNamespace == kNameSpaceID_MathML) {
nsHtml5ElementName* elementName = nsHtml5ElementName::ELT_MATH;
if (nsHtml5Atoms::mi == contextName || nsHtml5Atoms::mo == contextName || nsHtml5Atoms::mn == contextName || nsHtml5Atoms::ms == contextName || nsHtml5Atoms::mtext == contextName) {
if (nsGkAtoms::mi_ == contextName || nsGkAtoms::mo_ == contextName ||
nsGkAtoms::mn_ == contextName || nsGkAtoms::ms_ == contextName ||
nsGkAtoms::mtext_ == contextName) {
elementName = nsHtml5ElementName::ELT_MTEXT;
} else if (nsHtml5Atoms::annotation_xml == contextName) {
} else if (nsGkAtoms::annotation_xml_ == contextName) {
elementName = nsHtml5ElementName::ELT_ANNOTATION_XML;
}
nsHtml5StackNode* node =
@@ -126,21 +129,27 @@ nsHtml5TreeBuilder::startTokenization(nsHtml5Tokenizer* self)
nsHtml5StackNode* node = new nsHtml5StackNode(nsHtml5ElementName::ELT_HTML, elt);
currentPtr++;
stack[currentPtr] = node;
if (nsHtml5Atoms::template_ == contextName) {
if (nsGkAtoms::_template == contextName) {
pushTemplateMode(IN_TEMPLATE);
}
resetTheInsertionMode();
formPointer = getFormPointerForContext(contextNode);
if (nsHtml5Atoms::title == contextName || nsHtml5Atoms::textarea == contextName) {
if (nsGkAtoms::title == contextName ||
nsGkAtoms::textarea == contextName) {
tokenizer->setStateAndEndTagExpectation(nsHtml5Tokenizer::RCDATA,
contextName);
} else if (nsHtml5Atoms::style == contextName || nsHtml5Atoms::xmp == contextName || nsHtml5Atoms::iframe == contextName || nsHtml5Atoms::noembed == contextName || nsHtml5Atoms::noframes == contextName || (scriptingEnabled && nsHtml5Atoms::noscript == contextName)) {
} else if (nsGkAtoms::style == contextName ||
nsGkAtoms::xmp == contextName ||
nsGkAtoms::iframe == contextName ||
nsGkAtoms::noembed == contextName ||
nsGkAtoms::noframes == contextName ||
(scriptingEnabled && nsGkAtoms::noscript == contextName)) {
tokenizer->setStateAndEndTagExpectation(nsHtml5Tokenizer::RAWTEXT,
contextName);
} else if (nsHtml5Atoms::plaintext == contextName) {
} else if (nsGkAtoms::plaintext == contextName) {
tokenizer->setStateAndEndTagExpectation(nsHtml5Tokenizer::PLAINTEXT,
contextName);
} else if (nsHtml5Atoms::script == contextName) {
} else if (nsGkAtoms::script == contextName) {
tokenizer->setStateAndEndTagExpectation(nsHtml5Tokenizer::SCRIPT_DATA,
contextName);
} else {
@@ -153,8 +162,12 @@ nsHtml5TreeBuilder::startTokenization(nsHtml5Tokenizer* self)
} else {
mode = INITIAL;
if (tokenizer->isViewingXmlSource()) {
nsIContentHandle* elt = createElement(kNameSpaceID_SVG, nsHtml5Atoms::svg, tokenizer->emptyAttributes(), nullptr);
nsHtml5StackNode* node = new nsHtml5StackNode(nsHtml5ElementName::ELT_SVG, nsHtml5Atoms::svg, elt);
nsIContentHandle* elt = createElement(kNameSpaceID_SVG,
nsGkAtoms::svg,
tokenizer->emptyAttributes(),
nullptr);
nsHtml5StackNode* node =
new nsHtml5StackNode(nsHtml5ElementName::ELT_SVG, nsGkAtoms::svg, elt);
currentPtr++;
stack[currentPtr] = node;
}
@@ -170,7 +183,9 @@ nsHtml5TreeBuilder::doctype(nsIAtom* name,
needToDropLF = false;
if (!isInForeign() && mode == INITIAL) {
nsHtml5String emptyString = nsHtml5Portability::newEmptyString();
appendDoctypeToDocument(!name ? nsHtml5Atoms::emptystring : name, !publicIdentifier ? emptyString : publicIdentifier, !systemIdentifier ? emptyString : systemIdentifier);
appendDoctypeToDocument(!name ? nsGkAtoms::_empty : name,
!publicIdentifier ? emptyString : publicIdentifier,
!systemIdentifier ? emptyString : systemIdentifier);
emptyString.Release();
if (isQuirky(name, publicIdentifier, systemIdentifier, forceQuirks)) {
errQuirkyDoctype();
@@ -539,13 +554,13 @@ nsHtml5TreeBuilder::eof()
}
}
case IN_TEMPLATE: {
int32_t eltPos = findLast(nsHtml5Atoms::template_);
int32_t eltPos = findLast(nsGkAtoms::_template);
if (eltPos == nsHtml5TreeBuilder::NOT_FOUND_ON_STACK) {
MOZ_ASSERT(fragment);
NS_HTML5_BREAK(eofloop);
}
if (MOZ_UNLIKELY(mViewSource)) {
errUnclosedElements(eltPos, nsHtml5Atoms::template_);
errUnclosedElements(eltPos, nsGkAtoms::_template);
}
while (currentPtr >= eltPos) {
pop();
@@ -874,7 +889,7 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu
NS_HTML5_BREAK(starttagloop);
}
generateImpliedEndTags();
if (!!MOZ_UNLIKELY(mViewSource) && !isCurrent(nsHtml5Atoms::table)) {
if (!!MOZ_UNLIKELY(mViewSource) && !isCurrent(nsGkAtoms::table)) {
errNoCheckUnclosedElementsOnStack();
}
while (currentPtr >= eltPos) {
@@ -939,7 +954,7 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu
case TR:
case TD_OR_TH: {
errStrayStartTag(name);
eltPos = findLastInTableScope(nsHtml5Atoms::caption);
eltPos = findLastInTableScope(nsGkAtoms::caption);
if (eltPos == nsHtml5TreeBuilder::NOT_FOUND_ON_STACK) {
NS_HTML5_BREAK(starttagloop);
}
@@ -1130,7 +1145,11 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu
pop();
}
break;
} else if (!eltPos || (node->isSpecial() && (node->ns != kNameSpaceID_XHTML || (node->name != nsHtml5Atoms::p && node->name != nsHtml5Atoms::address && node->name != nsHtml5Atoms::div)))) {
} else if (!eltPos || (node->isSpecial() &&
(node->ns != kNameSpaceID_XHTML ||
(node->name != nsGkAtoms::p &&
node->name != nsGkAtoms::address &&
node->name != nsGkAtoms::div)))) {
break;
}
eltPos--;
@@ -1149,12 +1168,14 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu
NS_HTML5_BREAK(starttagloop);
}
case A: {
int32_t activeAPos = findInListOfActiveFormattingElementsContainsBetweenEndAndLastMarker(nsHtml5Atoms::a);
int32_t activeAPos =
findInListOfActiveFormattingElementsContainsBetweenEndAndLastMarker(
nsGkAtoms::a);
if (activeAPos != -1) {
errFooSeenWhenFooOpen(name);
nsHtml5StackNode* activeA = listOfActiveFormattingElements[activeAPos];
activeA->retain();
adoptionAgencyEndTag(nsHtml5Atoms::a);
adoptionAgencyEndTag(nsGkAtoms::a);
removeFromStack(activeA);
activeAPos = findInListOfActiveFormattingElements(activeA);
if (activeAPos != -1) {
@@ -1179,9 +1200,9 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu
case NOBR: {
reconstructTheActiveFormattingElements();
if (nsHtml5TreeBuilder::NOT_FOUND_ON_STACK !=
findLastInScope(nsHtml5Atoms::nobr)) {
findLastInScope(nsGkAtoms::nobr)) {
errFooSeenWhenFooOpen(name);
adoptionAgencyEndTag(nsHtml5Atoms::nobr);
adoptionAgencyEndTag(nsGkAtoms::nobr);
reconstructTheActiveFormattingElements();
}
appendToCurrentNodeAndPushFormattingElementMayFoster(elementName, attributes);
@@ -1291,10 +1312,10 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu
for (int32_t i = 0; i < attributes->getLength(); i++) {
nsIAtom* attributeQName =
attributes->getLocalNameNoBoundsCheck(i);
if (nsHtml5Atoms::name == attributeQName ||
nsHtml5Atoms::prompt == attributeQName) {
if (nsGkAtoms::name == attributeQName ||
nsGkAtoms::prompt == attributeQName) {
attributes->releaseValue(i);
} else if (nsHtml5Atoms::action != attributeQName) {
} else if (nsGkAtoms::action != attributeQName) {
inputAttributes->AddAttributeWithLocal(
attributeQName,
attributes->getValueNoBoundsCheck(i),
@@ -1302,7 +1323,8 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu
}
}
attributes->clearWithoutReleasingContents();
appendVoidElementToCurrentMayFoster(nsHtml5Atoms::input, inputAttributes, formPointer);
appendVoidElementToCurrentMayFoster(
nsGkAtoms::input, inputAttributes, formPointer);
pop();
appendVoidElementToCurrentMayFoster(nsHtml5ElementName::ELT_HR, nsHtml5HtmlAttributes::EMPTY_ATTRIBUTES);
pop();
@@ -1372,7 +1394,7 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu
}
case OPTGROUP:
case OPTION: {
if (isCurrent(nsHtml5Atoms::option)) {
if (isCurrent(nsGkAtoms::option)) {
pop();
}
reconstructTheActiveFormattingElements();
@@ -1381,7 +1403,7 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu
NS_HTML5_BREAK(starttagloop);
}
case RB_OR_RTC: {
eltPos = findLastInScope(nsHtml5Atoms::ruby);
eltPos = findLastInScope(nsGkAtoms::ruby);
if (eltPos != NOT_FOUND_ON_STACK) {
generateImpliedEndTags();
}
@@ -1397,12 +1419,12 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu
NS_HTML5_BREAK(starttagloop);
}
case RT_OR_RP: {
eltPos = findLastInScope(nsHtml5Atoms::ruby);
eltPos = findLastInScope(nsGkAtoms::ruby);
if (eltPos != NOT_FOUND_ON_STACK) {
generateImpliedEndTagsExceptFor(nsHtml5Atoms::rtc);
generateImpliedEndTagsExceptFor(nsGkAtoms::rtc);
}
if (eltPos != currentPtr) {
if (!isCurrent(nsHtml5Atoms::rtc)) {
if (!isCurrent(nsGkAtoms::rtc)) {
if (eltPos == NOT_FOUND_ON_STACK) {
errStartTagSeenWithoutRuby(name);
} else {
@@ -1625,7 +1647,7 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu
case TD_OR_TH:
case TABLE: {
errStartTagWithSelectOpen(name);
eltPos = findLastInTableScope(nsHtml5Atoms::select);
eltPos = findLastInTableScope(nsGkAtoms::select);
if (eltPos == nsHtml5TreeBuilder::NOT_FOUND_ON_STACK) {
MOZ_ASSERT(fragment);
NS_HTML5_BREAK(starttagloop);
@@ -1651,7 +1673,7 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu
NS_HTML5_BREAK(starttagloop);
}
case OPTION: {
if (isCurrent(nsHtml5Atoms::option)) {
if (isCurrent(nsGkAtoms::option)) {
pop();
}
appendToCurrentNodeAndPushElement(elementName, attributes);
@@ -1659,10 +1681,10 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu
NS_HTML5_BREAK(starttagloop);
}
case OPTGROUP: {
if (isCurrent(nsHtml5Atoms::option)) {
if (isCurrent(nsGkAtoms::option)) {
pop();
}
if (isCurrent(nsHtml5Atoms::optgroup)) {
if (isCurrent(nsGkAtoms::optgroup)) {
pop();
}
appendToCurrentNodeAndPushElement(elementName, attributes);
@@ -1688,7 +1710,7 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu
case TEXTAREA:
case KEYGEN: {
errStartTagWithSelectOpen(name);
eltPos = findLastInTableScope(nsHtml5Atoms::select);
eltPos = findLastInTableScope(nsGkAtoms::select);
if (eltPos == nsHtml5TreeBuilder::NOT_FOUND_ON_STACK) {
MOZ_ASSERT(fragment);
NS_HTML5_BREAK(starttagloop);
@@ -2022,7 +2044,7 @@ bool
nsHtml5TreeBuilder::isTemplateContents()
{
return nsHtml5TreeBuilder::NOT_FOUND_ON_STACK !=
findLast(nsHtml5Atoms::template_);
findLast(nsGkAtoms::_template);
}
bool
@@ -2410,7 +2432,7 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName)
case IN_TABLE: {
switch(group) {
case TABLE: {
eltPos = findLast(nsHtml5Atoms::table);
eltPos = findLast(nsGkAtoms::table);
if (eltPos == nsHtml5TreeBuilder::NOT_FOUND_ON_STACK) {
MOZ_ASSERT(fragment || isTemplateContents());
errStrayEndTag(name);
@@ -2444,7 +2466,7 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName)
case IN_CAPTION: {
switch(group) {
case CAPTION: {
eltPos = findLastInTableScope(nsHtml5Atoms::caption);
eltPos = findLastInTableScope(nsGkAtoms::caption);
if (eltPos == nsHtml5TreeBuilder::NOT_FOUND_ON_STACK) {
NS_HTML5_BREAK(endtagloop);
}
@@ -2461,7 +2483,7 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName)
}
case TABLE: {
errTableClosedWhileCaptionOpen();
eltPos = findLastInTableScope(nsHtml5Atoms::caption);
eltPos = findLastInTableScope(nsGkAtoms::caption);
if (eltPos == nsHtml5TreeBuilder::NOT_FOUND_ON_STACK) {
NS_HTML5_BREAK(endtagloop);
}
@@ -2514,7 +2536,9 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName)
case TR: {
if (findLastInTableScope(name) ==
nsHtml5TreeBuilder::NOT_FOUND_ON_STACK) {
MOZ_ASSERT(name == nsHtml5Atoms::tbody || name == nsHtml5Atoms::tfoot || name == nsHtml5Atoms::thead || fragment || isTemplateContents());
MOZ_ASSERT(name == nsGkAtoms::tbody || name == nsGkAtoms::tfoot ||
name == nsGkAtoms::thead || fragment ||
isTemplateContents());
errStrayEndTag(name);
NS_HTML5_BREAK(endtagloop);
}
@@ -2654,9 +2678,9 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName)
}
}
case P: {
eltPos = findLastInButtonScope(nsHtml5Atoms::p);
eltPos = findLastInButtonScope(nsGkAtoms::p);
if (eltPos == nsHtml5TreeBuilder::NOT_FOUND_ON_STACK) {
errNoElementToCloseButEndTagSeen(nsHtml5Atoms::p);
errNoElementToCloseButEndTagSeen(nsGkAtoms::p);
if (isInForeign()) {
errHtmlStartTagInForeignContext(name);
while (currentPtr >= 0 && stack[currentPtr]->ns != kNameSpaceID_XHTML) {
@@ -2666,7 +2690,7 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName)
appendVoidElementToCurrentMayFoster(elementName, nsHtml5HtmlAttributes::EMPTY_ATTRIBUTES);
NS_HTML5_BREAK(endtagloop);
}
generateImpliedEndTagsExceptFor(nsHtml5Atoms::p);
generateImpliedEndTagsExceptFor(nsGkAtoms::p);
MOZ_ASSERT(eltPos != nsHtml5TreeBuilder::NOT_FOUND_ON_STACK);
if (!!MOZ_UNLIKELY(mViewSource) && eltPos != currentPtr) {
errUnclosedElements(eltPos, name);
@@ -2902,7 +2926,7 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName)
errEndTagSeenWithSelectOpen(name);
if (findLastInTableScope(name) !=
nsHtml5TreeBuilder::NOT_FOUND_ON_STACK) {
eltPos = findLastInTableScope(nsHtml5Atoms::select);
eltPos = findLastInTableScope(nsGkAtoms::select);
if (eltPos == nsHtml5TreeBuilder::NOT_FOUND_ON_STACK) {
MOZ_ASSERT(fragment);
NS_HTML5_BREAK(endtagloop);
@@ -2923,7 +2947,7 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName)
case IN_SELECT: {
switch(group) {
case OPTION: {
if (isCurrent(nsHtml5Atoms::option)) {
if (isCurrent(nsGkAtoms::option)) {
pop();
NS_HTML5_BREAK(endtagloop);
} else {
@@ -2932,10 +2956,11 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName)
}
}
case OPTGROUP: {
if (isCurrent(nsHtml5Atoms::option) && nsHtml5Atoms::optgroup == stack[currentPtr - 1]->name) {
if (isCurrent(nsGkAtoms::option) &&
nsGkAtoms::optgroup == stack[currentPtr - 1]->name) {
pop();
}
if (isCurrent(nsHtml5Atoms::optgroup)) {
if (isCurrent(nsGkAtoms::optgroup)) {
pop();
} else {
errStrayEndTag(name);
@@ -2943,7 +2968,7 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName)
NS_HTML5_BREAK(endtagloop);
}
case SELECT: {
eltPos = findLastInTableScope(nsHtml5Atoms::select);
eltPos = findLastInTableScope(nsGkAtoms::select);
if (eltPos == nsHtml5TreeBuilder::NOT_FOUND_ON_STACK) {
MOZ_ASSERT(fragment);
errStrayEndTag(name);
@@ -2992,7 +3017,7 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName)
NS_HTML5_BREAK(endtagloop);
}
pop();
if ((!fragment) && !isCurrent(nsHtml5Atoms::frameset)) {
if ((!fragment) && !isCurrent(nsGkAtoms::frameset)) {
mode = AFTER_FRAMESET;
}
NS_HTML5_BREAK(endtagloop);
@@ -3097,14 +3122,14 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName)
void
nsHtml5TreeBuilder::endTagTemplateInHead()
{
int32_t eltPos = findLast(nsHtml5Atoms::template_);
int32_t eltPos = findLast(nsGkAtoms::_template);
if (eltPos == nsHtml5TreeBuilder::NOT_FOUND_ON_STACK) {
errStrayEndTag(nsHtml5Atoms::template_);
errStrayEndTag(nsGkAtoms::_template);
return;
}
generateImpliedEndTags();
if (!!MOZ_UNLIKELY(mViewSource) && !isCurrent(nsHtml5Atoms::template_)) {
errUnclosedElements(eltPos, nsHtml5Atoms::template_);
if (!!MOZ_UNLIKELY(mViewSource) && !isCurrent(nsGkAtoms::_template)) {
errUnclosedElements(eltPos, nsGkAtoms::_template);
}
while (currentPtr >= eltPos) {
pop();
@@ -3144,7 +3169,8 @@ nsHtml5TreeBuilder::findLastInTableScope(nsIAtom* name)
if (stack[i]->ns == kNameSpaceID_XHTML) {
if (stack[i]->name == name) {
return i;
} else if (stack[i]->name == nsHtml5Atoms::table || stack[i]->name == nsHtml5Atoms::template_) {
} else if (stack[i]->name == nsGkAtoms::table ||
stack[i]->name == nsGkAtoms::_template) {
return nsHtml5TreeBuilder::NOT_FOUND_ON_STACK;
}
}
@@ -3159,7 +3185,7 @@ nsHtml5TreeBuilder::findLastInButtonScope(nsIAtom* name)
if (stack[i]->ns == kNameSpaceID_XHTML) {
if (stack[i]->name == name) {
return i;
} else if (stack[i]->name == nsHtml5Atoms::button) {
} else if (stack[i]->name == nsGkAtoms::button) {
return nsHtml5TreeBuilder::NOT_FOUND_ON_STACK;
}
}
@@ -3190,7 +3216,8 @@ nsHtml5TreeBuilder::findLastInListScope(nsIAtom* name)
if (stack[i]->ns == kNameSpaceID_XHTML) {
if (stack[i]->name == name) {
return i;
} else if (stack[i]->name == nsHtml5Atoms::ul || stack[i]->name == nsHtml5Atoms::ol) {
} else if (stack[i]->name == nsGkAtoms::ul ||
stack[i]->name == nsGkAtoms::ol) {
return nsHtml5TreeBuilder::NOT_FOUND_ON_STACK;
}
}
@@ -3315,7 +3342,7 @@ nsHtml5TreeBuilder::isQuirky(nsIAtom* name,
if (forceQuirks) {
return true;
}
if (name != nsHtml5Atoms::html) {
if (name != nsGkAtoms::html) {
return true;
}
if (publicIdentifier) {
@@ -3361,9 +3388,9 @@ nsHtml5TreeBuilder::findLastInTableScopeTdTh()
for (int32_t i = currentPtr; i > 0; i--) {
nsIAtom* name = stack[i]->name;
if (stack[i]->ns == kNameSpaceID_XHTML) {
if (nsHtml5Atoms::td == name || nsHtml5Atoms::th == name) {
if (nsGkAtoms::td == name || nsGkAtoms::th == name) {
return i;
} else if (name == nsHtml5Atoms::table || name == nsHtml5Atoms::template_) {
} else if (name == nsGkAtoms::table || name == nsGkAtoms::_template) {
return nsHtml5TreeBuilder::NOT_FOUND_ON_STACK;
}
}
@@ -3397,7 +3424,8 @@ nsHtml5TreeBuilder::resetTheInsertionMode()
name = node->name;
ns = node->ns;
if (!i) {
if (!(contextNamespace == kNameSpaceID_XHTML && (contextName == nsHtml5Atoms::td || contextName == nsHtml5Atoms::th))) {
if (!(contextNamespace == kNameSpaceID_XHTML &&
(contextName == nsGkAtoms::td || contextName == nsGkAtoms::th))) {
if (fragment) {
name = contextName;
ns = contextNamespace;
@@ -3407,15 +3435,15 @@ nsHtml5TreeBuilder::resetTheInsertionMode()
return;
}
}
if (nsHtml5Atoms::select == name) {
if (nsGkAtoms::select == name) {
int32_t ancestorIndex = i;
while (ancestorIndex > 0) {
nsHtml5StackNode* ancestor = stack[ancestorIndex--];
if (kNameSpaceID_XHTML == ancestor->ns) {
if (nsHtml5Atoms::template_ == ancestor->name) {
if (nsGkAtoms::_template == ancestor->name) {
break;
}
if (nsHtml5Atoms::table == ancestor->name) {
if (nsGkAtoms::table == ancestor->name) {
mode = IN_SELECT_IN_TABLE;
return;
}
@@ -3423,45 +3451,46 @@ nsHtml5TreeBuilder::resetTheInsertionMode()
}
mode = IN_SELECT;
return;
} else if (nsHtml5Atoms::td == name || nsHtml5Atoms::th == name) {
} else if (nsGkAtoms::td == name || nsGkAtoms::th == name) {
mode = IN_CELL;
return;
} else if (nsHtml5Atoms::tr == name) {
} else if (nsGkAtoms::tr == name) {
mode = IN_ROW;
return;
} else if (nsHtml5Atoms::tbody == name || nsHtml5Atoms::thead == name || nsHtml5Atoms::tfoot == name) {
} else if (nsGkAtoms::tbody == name || nsGkAtoms::thead == name ||
nsGkAtoms::tfoot == name) {
mode = IN_TABLE_BODY;
return;
} else if (nsHtml5Atoms::caption == name) {
} else if (nsGkAtoms::caption == name) {
mode = IN_CAPTION;
return;
} else if (nsHtml5Atoms::colgroup == name) {
} else if (nsGkAtoms::colgroup == name) {
mode = IN_COLUMN_GROUP;
return;
} else if (nsHtml5Atoms::table == name) {
} else if (nsGkAtoms::table == name) {
mode = IN_TABLE;
return;
} else if (kNameSpaceID_XHTML != ns) {
mode = framesetOk ? FRAMESET_OK : IN_BODY;
return;
} else if (nsHtml5Atoms::template_ == name) {
} else if (nsGkAtoms::_template == name) {
MOZ_ASSERT(templateModePtr >= 0);
mode = templateModeStack[templateModePtr];
return;
} else if (nsHtml5Atoms::head == name) {
} else if (nsGkAtoms::head == name) {
if (name == contextName) {
mode = framesetOk ? FRAMESET_OK : IN_BODY;
} else {
mode = IN_HEAD;
}
return;
} else if (nsHtml5Atoms::body == name) {
} else if (nsGkAtoms::body == name) {
mode = framesetOk ? FRAMESET_OK : IN_BODY;
return;
} else if (nsHtml5Atoms::frameset == name) {
} else if (nsGkAtoms::frameset == name) {
mode = IN_FRAMESET;
return;
} else if (nsHtml5Atoms::html == name) {
} else if (nsGkAtoms::html == name) {
if (!headPointer) {
mode = BEFORE_HEAD;
} else {
@@ -3478,13 +3507,13 @@ nsHtml5TreeBuilder::resetTheInsertionMode()
void
nsHtml5TreeBuilder::implicitlyCloseP()
{
int32_t eltPos = findLastInButtonScope(nsHtml5Atoms::p);
int32_t eltPos = findLastInButtonScope(nsGkAtoms::p);
if (eltPos == nsHtml5TreeBuilder::NOT_FOUND_ON_STACK) {
return;
}
generateImpliedEndTagsExceptFor(nsHtml5Atoms::p);
generateImpliedEndTagsExceptFor(nsGkAtoms::p);
if (!!MOZ_UNLIKELY(mViewSource) && eltPos != currentPtr) {
errUnclosedElementsImplied(eltPos, nsHtml5Atoms::p);
errUnclosedElementsImplied(eltPos, nsGkAtoms::p);
}
while (currentPtr >= eltPos) {
pop();
@@ -4013,7 +4042,8 @@ void
nsHtml5TreeBuilder::appendToCurrentNodeAndPushHeadElement(nsHtml5HtmlAttributes* attributes)
{
nsIContentHandle* currentNode = stack[currentPtr]->node;
nsIContentHandle* elt = createElement(kNameSpaceID_XHTML, nsHtml5Atoms::head, attributes, currentNode);
nsIContentHandle* elt =
createElement(kNameSpaceID_XHTML, nsGkAtoms::head, attributes, currentNode);
appendElement(elt, currentNode);
headPointer = elt;
nsHtml5StackNode* node = new nsHtml5StackNode(nsHtml5ElementName::ELT_HEAD, elt);
@@ -4039,9 +4069,11 @@ nsHtml5TreeBuilder::appendToCurrentNodeAndPushFormElementMayFoster(nsHtml5HtmlAt
nsHtml5StackNode* current = stack[currentPtr];
if (current->isFosterParenting()) {
elt = createAndInsertFosterParentedElement(kNameSpaceID_XHTML, nsHtml5Atoms::form, attributes);
elt = createAndInsertFosterParentedElement(
kNameSpaceID_XHTML, nsGkAtoms::form, attributes);
} else {
elt = createElement(kNameSpaceID_XHTML, nsHtml5Atoms::form, attributes, current->node);
elt = createElement(
kNameSpaceID_XHTML, nsGkAtoms::form, attributes, current->node);
appendElement(elt, current->node);
}
if (!isTemplateContents()) {
@@ -4256,11 +4288,12 @@ void
nsHtml5TreeBuilder::appendVoidFormToCurrent(nsHtml5HtmlAttributes* attributes)
{
nsIContentHandle* currentNode = stack[currentPtr]->node;
nsIContentHandle* elt = createElement(kNameSpaceID_XHTML, nsHtml5Atoms::form, attributes, currentNode);
nsIContentHandle* elt =
createElement(kNameSpaceID_XHTML, nsGkAtoms::form, attributes, currentNode);
formPointer = elt;
appendElement(elt, currentNode);
elementPushed(kNameSpaceID_XHTML, nsHtml5Atoms::form, elt);
elementPopped(kNameSpaceID_XHTML, nsHtml5Atoms::form, elt);
elementPushed(kNameSpaceID_XHTML, nsGkAtoms::form, elt);
elementPopped(kNameSpaceID_XHTML, nsGkAtoms::form, elt);
}
void