Bug 1355779 - Skip interned nsHtml5ElementName lookup for Custom Elements (ones with hyphen). r=wchen
MozReview-Commit-ID: 4xQlhExyo7d
This commit is contained in:
@@ -190,6 +190,8 @@ public final class ElementName
|
||||
assert this.flags == (TreeBuilder.OTHER | NOT_INTERNED);
|
||||
}
|
||||
|
||||
public static final ElementName ANNOTATION_XML = new ElementName("annotation-xml", "annotation-xml", TreeBuilder.ANNOTATION_XML | SCOPING_AS_MATHML);
|
||||
|
||||
// START CODE ONLY USED FOR GENERATING CODE uncomment and run to regenerate
|
||||
|
||||
// /**
|
||||
@@ -228,6 +230,9 @@ public final class ElementName
|
||||
// for (int i = 0; i < name.length(); i++) {
|
||||
// char c = name.charAt(i);
|
||||
// if (c == '-') {
|
||||
// if (!"annotation-xml".equals(name)) {
|
||||
// throw new RuntimeException("Non-annotation-xml element name with hyphen: " + name);
|
||||
// }
|
||||
// buf[i] = '_';
|
||||
// } else if (c >= '0' && c <= '9') {
|
||||
// buf[i] = c;
|
||||
@@ -547,7 +552,6 @@ public final class ElementName
|
||||
public static final ElementName MASK = new ElementName("mask", "mask", TreeBuilder.OTHER);
|
||||
public static final ElementName TRACK = new ElementName("track", "track", TreeBuilder.PARAM_OR_SOURCE_OR_TRACK | SPECIAL);
|
||||
public static final ElementName DL = new ElementName("dl", "dl", TreeBuilder.UL_OR_OL_OR_DL | SPECIAL);
|
||||
public static final ElementName ANNOTATION_XML = new ElementName("annotation-xml", "annotation-xml", TreeBuilder.ANNOTATION_XML | SCOPING_AS_MATHML);
|
||||
public static final ElementName HTML = new ElementName("html", "html", TreeBuilder.HTML | SPECIAL | SCOPING | OPTIONAL_END_TAG);
|
||||
public static final ElementName OL = new ElementName("ol", "ol", TreeBuilder.UL_OR_OL_OR_DL | SPECIAL);
|
||||
public static final ElementName LABEL = new ElementName("label", "label", TreeBuilder.OTHER);
|
||||
@@ -753,7 +757,6 @@ public final class ElementName
|
||||
MASK,
|
||||
TRACK,
|
||||
DL,
|
||||
ANNOTATION_XML,
|
||||
HTML,
|
||||
OL,
|
||||
LABEL,
|
||||
@@ -960,7 +963,6 @@ public final class ElementName
|
||||
1854245076,
|
||||
1857653029,
|
||||
1864368130,
|
||||
1864643294,
|
||||
1868312196,
|
||||
1870135298,
|
||||
1870268949,
|
||||
|
||||
@@ -414,6 +414,12 @@ public class Tokenizer implements Locator {
|
||||
*/
|
||||
protected boolean endTag;
|
||||
|
||||
/**
|
||||
* <code>true</code> iff the current element/attribute name contains
|
||||
* a hyphen.
|
||||
*/
|
||||
private boolean containsHyphen;
|
||||
|
||||
/**
|
||||
* The current tag token name. One of
|
||||
* 1) null,
|
||||
@@ -525,6 +531,7 @@ public class Tokenizer implements Locator {
|
||||
this.charRefBuf = new char[32];
|
||||
this.bmpChar = new char[1];
|
||||
this.astralChar = new char[2];
|
||||
this.containsHyphen = false;
|
||||
this.tagName = null;
|
||||
this.nonInternedTagName = new ElementName();
|
||||
this.attributeName = null;
|
||||
@@ -555,6 +562,7 @@ public class Tokenizer implements Locator {
|
||||
this.charRefBuf = new char[32];
|
||||
this.bmpChar = new char[1];
|
||||
this.astralChar = new char[2];
|
||||
this.containsHyphen = false;
|
||||
this.tagName = null;
|
||||
this.nonInternedTagName = new ElementName();
|
||||
this.attributeName = null;
|
||||
@@ -1101,6 +1109,17 @@ public class Tokenizer implements Locator {
|
||||
}
|
||||
|
||||
private void strBufToElementNameString() {
|
||||
if (containsHyphen) {
|
||||
// We've got a custom element or annotation-xml.
|
||||
@Local String annotationName = ElementName.ANNOTATION_XML.getName();
|
||||
if (Portability.localEqualsBuffer(annotationName, strBuf, 0, strBufLen)) {
|
||||
tagName = ElementName.ANNOTATION_XML;
|
||||
} else {
|
||||
nonInternedTagName.setNameForNonInterned(Portability.newLocalNameFromBuffer(strBuf, 0, strBufLen,
|
||||
interner));
|
||||
tagName = nonInternedTagName;
|
||||
}
|
||||
} else {
|
||||
tagName = ElementName.elementNameByBuffer(strBuf, 0, strBufLen,
|
||||
interner);
|
||||
if (tagName == null) {
|
||||
@@ -1108,6 +1127,8 @@ public class Tokenizer implements Locator {
|
||||
interner));
|
||||
tagName = nonInternedTagName;
|
||||
}
|
||||
}
|
||||
containsHyphen = false;
|
||||
clearStrBufAfterUse();
|
||||
}
|
||||
|
||||
@@ -1558,6 +1579,7 @@ public class Tokenizer implements Locator {
|
||||
*/
|
||||
clearStrBufBeforeUse();
|
||||
appendStrBuf((char) (c + 0x20));
|
||||
containsHyphen = false;
|
||||
/* then switch to the tag name state. */
|
||||
state = transition(state, Tokenizer.TAG_NAME, reconsume, pos);
|
||||
/*
|
||||
@@ -1578,6 +1600,7 @@ public class Tokenizer implements Locator {
|
||||
*/
|
||||
clearStrBufBeforeUse();
|
||||
appendStrBuf(c);
|
||||
containsHyphen = false;
|
||||
/* then switch to the tag name state. */
|
||||
state = transition(state, Tokenizer.TAG_NAME, reconsume, pos);
|
||||
/*
|
||||
@@ -1721,6 +1744,8 @@ public class Tokenizer implements Locator {
|
||||
* tag name.
|
||||
*/
|
||||
c += 0x20;
|
||||
} else if (c == '-') {
|
||||
containsHyphen = true;
|
||||
}
|
||||
/*
|
||||
* Anything else Append the current input
|
||||
@@ -3622,6 +3647,7 @@ public class Tokenizer implements Locator {
|
||||
*/
|
||||
clearStrBufBeforeUse();
|
||||
appendStrBuf(c);
|
||||
containsHyphen = false;
|
||||
/*
|
||||
* then switch to the tag name state. (Don't
|
||||
* emit the token yet; further details will be
|
||||
@@ -6734,6 +6760,7 @@ public class Tokenizer implements Locator {
|
||||
endTag = false;
|
||||
shouldSuspend = false;
|
||||
initDoctypeFields();
|
||||
containsHyphen = false;
|
||||
if (tagName != null) {
|
||||
tagName = null;
|
||||
}
|
||||
@@ -6800,6 +6827,7 @@ public class Tokenizer implements Locator {
|
||||
publicIdentifier = Portability.newStringFromString(other.publicIdentifier);
|
||||
}
|
||||
|
||||
containsHyphen = other.containsHyphen;
|
||||
if (other.tagName == null) {
|
||||
tagName = null;
|
||||
} else if (other.tagName.isInterned()) {
|
||||
|
||||
@@ -115,6 +115,7 @@ nsHtml5ElementName::setNameForNonInterned(nsIAtom* name)
|
||||
(NS_HTML5TREE_BUILDER_OTHER | NS_HTML5ELEMENT_NAME_NOT_INTERNED));
|
||||
}
|
||||
|
||||
nsHtml5ElementName* nsHtml5ElementName::ELT_ANNOTATION_XML = nullptr;
|
||||
nsHtml5ElementName* nsHtml5ElementName::ELT_BIG = nullptr;
|
||||
nsHtml5ElementName* nsHtml5ElementName::ELT_BDO = nullptr;
|
||||
nsHtml5ElementName* nsHtml5ElementName::ELT_COL = nullptr;
|
||||
@@ -224,7 +225,6 @@ nsHtml5ElementName* nsHtml5ElementName::ELT_MALIGNMARK = nullptr;
|
||||
nsHtml5ElementName* nsHtml5ElementName::ELT_MASK = nullptr;
|
||||
nsHtml5ElementName* nsHtml5ElementName::ELT_TRACK = nullptr;
|
||||
nsHtml5ElementName* nsHtml5ElementName::ELT_DL = nullptr;
|
||||
nsHtml5ElementName* nsHtml5ElementName::ELT_ANNOTATION_XML = nullptr;
|
||||
nsHtml5ElementName* nsHtml5ElementName::ELT_HTML = nullptr;
|
||||
nsHtml5ElementName* nsHtml5ElementName::ELT_OL = nullptr;
|
||||
nsHtml5ElementName* nsHtml5ElementName::ELT_LABEL = nullptr;
|
||||
@@ -340,28 +340,32 @@ static int32_t const ELEMENT_HASHES_DATA[] = {
|
||||
1786534215, 1790207270, 1797585096, 1798686984, 1803876550, 1803929812,
|
||||
1803929861, 1805502724, 1805647874, 1806806678, 1807599880, 1818230786,
|
||||
1818755074, 1853642948, 1854228692, 1854228698, 1854245076, 1857653029,
|
||||
1864368130, 1864643294, 1868312196, 1870135298, 1870268949, 1873281026,
|
||||
1874053333, 1874102998, 1881288348, 1881498736, 1881613047, 1881669634,
|
||||
1884120164, 1887579800, 1889085973, 1898223949, 1898753862, 1899272519,
|
||||
1900845386, 1902641154, 1903302038, 1904412884, 1905563974, 1906087319,
|
||||
1906135367, 1907435316, 1907661127, 1907959605, 1914900309, 1919418370,
|
||||
1925844629, 1932928296, 1934172497, 1935549734, 1938817026, 1939219752,
|
||||
1941178676, 1941221172, 1963982850, 1965115924, 1965334268, 1966223078,
|
||||
1967128578, 1967760215, 1967788867, 1967795910, 1967795958, 1968053806,
|
||||
1968836118, 1971461414, 1971465813, 1971938532, 1973420034, 1982173479,
|
||||
1982935782, 1983533124, 1983633431, 1986527234, 1988763672, 1990037800,
|
||||
1998585858, 1998724870, 1999397992, 2001309869, 2001349704, 2001349720,
|
||||
2001349736, 2001392795, 2001392796, 2001392798, 2001495140, 2003183333,
|
||||
2004635806, 2005324101, 2005719336, 2005925890, 2006028454, 2006329158,
|
||||
2006896969, 2006974466, 2007601444, 2007781534, 2008125638, 2008340774,
|
||||
2008851557, 2008994116, 2021937364, 2051837468, 2060065124, 2068523853,
|
||||
2068523856, 2070023911, 2083120164, 2085266636, 2091479332, 2092255447,
|
||||
2092557349
|
||||
1864368130, 1868312196, 1870135298, 1870268949, 1873281026, 1874053333,
|
||||
1874102998, 1881288348, 1881498736, 1881613047, 1881669634, 1884120164,
|
||||
1887579800, 1889085973, 1898223949, 1898753862, 1899272519, 1900845386,
|
||||
1902641154, 1903302038, 1904412884, 1905563974, 1906087319, 1906135367,
|
||||
1907435316, 1907661127, 1907959605, 1914900309, 1919418370, 1925844629,
|
||||
1932928296, 1934172497, 1935549734, 1938817026, 1939219752, 1941178676,
|
||||
1941221172, 1963982850, 1965115924, 1965334268, 1966223078, 1967128578,
|
||||
1967760215, 1967788867, 1967795910, 1967795958, 1968053806, 1968836118,
|
||||
1971461414, 1971465813, 1971938532, 1973420034, 1982173479, 1982935782,
|
||||
1983533124, 1983633431, 1986527234, 1988763672, 1990037800, 1998585858,
|
||||
1998724870, 1999397992, 2001309869, 2001349704, 2001349720, 2001349736,
|
||||
2001392795, 2001392796, 2001392798, 2001495140, 2003183333, 2004635806,
|
||||
2005324101, 2005719336, 2005925890, 2006028454, 2006329158, 2006896969,
|
||||
2006974466, 2007601444, 2007781534, 2008125638, 2008340774, 2008851557,
|
||||
2008994116, 2021937364, 2051837468, 2060065124, 2068523853, 2068523856,
|
||||
2070023911, 2083120164, 2085266636, 2091479332, 2092255447, 2092557349
|
||||
};
|
||||
staticJArray<int32_t,int32_t> nsHtml5ElementName::ELEMENT_HASHES = { ELEMENT_HASHES_DATA, MOZ_ARRAY_LENGTH(ELEMENT_HASHES_DATA) };
|
||||
void
|
||||
nsHtml5ElementName::initializeStatics()
|
||||
{
|
||||
ELT_ANNOTATION_XML =
|
||||
new nsHtml5ElementName(nsHtml5Atoms::annotation_xml,
|
||||
nsHtml5Atoms::annotation_xml,
|
||||
NS_HTML5TREE_BUILDER_ANNOTATION_XML |
|
||||
NS_HTML5ELEMENT_NAME_SCOPING_AS_MATHML);
|
||||
ELT_BIG = new nsHtml5ElementName(nsHtml5Atoms::big, nsHtml5Atoms::big, NS_HTML5TREE_BUILDER_B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U);
|
||||
ELT_BDO = new nsHtml5ElementName(nsHtml5Atoms::bdo, nsHtml5Atoms::bdo, NS_HTML5TREE_BUILDER_OTHER);
|
||||
ELT_COL = new nsHtml5ElementName(nsHtml5Atoms::col, nsHtml5Atoms::col, NS_HTML5TREE_BUILDER_COL | NS_HTML5ELEMENT_NAME_SPECIAL);
|
||||
@@ -657,11 +661,6 @@ nsHtml5ElementName::initializeStatics()
|
||||
nsHtml5Atoms::dl,
|
||||
NS_HTML5TREE_BUILDER_UL_OR_OL_OR_DL |
|
||||
NS_HTML5ELEMENT_NAME_SPECIAL);
|
||||
ELT_ANNOTATION_XML =
|
||||
new nsHtml5ElementName(nsHtml5Atoms::annotation_xml,
|
||||
nsHtml5Atoms::annotation_xml,
|
||||
NS_HTML5TREE_BUILDER_ANNOTATION_XML |
|
||||
NS_HTML5ELEMENT_NAME_SCOPING_AS_MATHML);
|
||||
ELT_HTML = new nsHtml5ElementName(
|
||||
nsHtml5Atoms::html,
|
||||
nsHtml5Atoms::html,
|
||||
@@ -967,7 +966,7 @@ nsHtml5ElementName::initializeStatics()
|
||||
NS_HTML5TREE_BUILDER_TBODY_OR_THEAD_OR_TFOOT |
|
||||
NS_HTML5ELEMENT_NAME_SPECIAL | NS_HTML5ELEMENT_NAME_FOSTER_PARENTING |
|
||||
NS_HTML5ELEMENT_NAME_OPTIONAL_END_TAG);
|
||||
ELEMENT_NAMES = new nsHtml5ElementName*[205];
|
||||
ELEMENT_NAMES = new nsHtml5ElementName*[204];
|
||||
ELEMENT_NAMES[0] = ELT_BIG;
|
||||
ELEMENT_NAMES[1] = ELT_BDO;
|
||||
ELEMENT_NAMES[2] = ELT_COL;
|
||||
@@ -1077,107 +1076,107 @@ nsHtml5ElementName::initializeStatics()
|
||||
ELEMENT_NAMES[106] = ELT_MASK;
|
||||
ELEMENT_NAMES[107] = ELT_TRACK;
|
||||
ELEMENT_NAMES[108] = ELT_DL;
|
||||
ELEMENT_NAMES[109] = ELT_ANNOTATION_XML;
|
||||
ELEMENT_NAMES[110] = ELT_HTML;
|
||||
ELEMENT_NAMES[111] = ELT_OL;
|
||||
ELEMENT_NAMES[112] = ELT_LABEL;
|
||||
ELEMENT_NAMES[113] = ELT_UL;
|
||||
ELEMENT_NAMES[114] = ELT_SMALL;
|
||||
ELEMENT_NAMES[115] = ELT_SYMBOL;
|
||||
ELEMENT_NAMES[116] = ELT_ALTGLYPHITEM;
|
||||
ELEMENT_NAMES[117] = ELT_ANIMATETRANSFORM;
|
||||
ELEMENT_NAMES[118] = ELT_ACRONYM;
|
||||
ELEMENT_NAMES[119] = ELT_EM;
|
||||
ELEMENT_NAMES[120] = ELT_FORM;
|
||||
ELEMENT_NAMES[121] = ELT_MENUITEM;
|
||||
ELEMENT_NAMES[122] = ELT_PARAM;
|
||||
ELEMENT_NAMES[123] = ELT_ANIMATEMOTION;
|
||||
ELEMENT_NAMES[124] = ELT_BUTTON;
|
||||
ELEMENT_NAMES[125] = ELT_CAPTION;
|
||||
ELEMENT_NAMES[126] = ELT_FIGCAPTION;
|
||||
ELEMENT_NAMES[127] = ELT_MN;
|
||||
ELEMENT_NAMES[128] = ELT_KEYGEN;
|
||||
ELEMENT_NAMES[129] = ELT_MAIN;
|
||||
ELEMENT_NAMES[130] = ELT_OPTION;
|
||||
ELEMENT_NAMES[131] = ELT_POLYGON;
|
||||
ELEMENT_NAMES[132] = ELT_PATTERN;
|
||||
ELEMENT_NAMES[133] = ELT_SPAN;
|
||||
ELEMENT_NAMES[134] = ELT_SECTION;
|
||||
ELEMENT_NAMES[135] = ELT_TSPAN;
|
||||
ELEMENT_NAMES[136] = ELT_AUDIO;
|
||||
ELEMENT_NAMES[137] = ELT_MO;
|
||||
ELEMENT_NAMES[138] = ELT_VIDEO;
|
||||
ELEMENT_NAMES[139] = ELT_COLGROUP;
|
||||
ELEMENT_NAMES[140] = ELT_FEDISPLACEMENTMAP;
|
||||
ELEMENT_NAMES[141] = ELT_HGROUP;
|
||||
ELEMENT_NAMES[142] = ELT_RP;
|
||||
ELEMENT_NAMES[143] = ELT_OPTGROUP;
|
||||
ELEMENT_NAMES[144] = ELT_SAMP;
|
||||
ELEMENT_NAMES[145] = ELT_STOP;
|
||||
ELEMENT_NAMES[146] = ELT_BR;
|
||||
ELEMENT_NAMES[147] = ELT_ABBR;
|
||||
ELEMENT_NAMES[148] = ELT_ANIMATECOLOR;
|
||||
ELEMENT_NAMES[149] = ELT_CENTER;
|
||||
ELEMENT_NAMES[150] = ELT_HR;
|
||||
ELEMENT_NAMES[151] = ELT_FEFUNCR;
|
||||
ELEMENT_NAMES[152] = ELT_FECOMPONENTTRANSFER;
|
||||
ELEMENT_NAMES[153] = ELT_FILTER;
|
||||
ELEMENT_NAMES[154] = ELT_FOOTER;
|
||||
ELEMENT_NAMES[155] = ELT_FEGAUSSIANBLUR;
|
||||
ELEMENT_NAMES[156] = ELT_HEADER;
|
||||
ELEMENT_NAMES[157] = ELT_MARKER;
|
||||
ELEMENT_NAMES[158] = ELT_METER;
|
||||
ELEMENT_NAMES[159] = ELT_NOBR;
|
||||
ELEMENT_NAMES[160] = ELT_TR;
|
||||
ELEMENT_NAMES[161] = ELT_ADDRESS;
|
||||
ELEMENT_NAMES[162] = ELT_CANVAS;
|
||||
ELEMENT_NAMES[163] = ELT_DEFS;
|
||||
ELEMENT_NAMES[164] = ELT_DETAILS;
|
||||
ELEMENT_NAMES[165] = ELT_MS;
|
||||
ELEMENT_NAMES[166] = ELT_NOFRAMES;
|
||||
ELEMENT_NAMES[167] = ELT_PROGRESS;
|
||||
ELEMENT_NAMES[168] = ELT_DT;
|
||||
ELEMENT_NAMES[169] = ELT_APPLET;
|
||||
ELEMENT_NAMES[170] = ELT_BASEFONT;
|
||||
ELEMENT_NAMES[171] = ELT_FOREIGNOBJECT;
|
||||
ELEMENT_NAMES[172] = ELT_FIELDSET;
|
||||
ELEMENT_NAMES[173] = ELT_FRAMESET;
|
||||
ELEMENT_NAMES[174] = ELT_FEOFFSET;
|
||||
ELEMENT_NAMES[175] = ELT_FESPOTLIGHT;
|
||||
ELEMENT_NAMES[176] = ELT_FEPOINTLIGHT;
|
||||
ELEMENT_NAMES[177] = ELT_FEDISTANTLIGHT;
|
||||
ELEMENT_NAMES[178] = ELT_FONT;
|
||||
ELEMENT_NAMES[179] = ELT_INPUT;
|
||||
ELEMENT_NAMES[180] = ELT_LINEARGRADIENT;
|
||||
ELEMENT_NAMES[181] = ELT_MTEXT;
|
||||
ELEMENT_NAMES[182] = ELT_NOSCRIPT;
|
||||
ELEMENT_NAMES[183] = ELT_RT;
|
||||
ELEMENT_NAMES[184] = ELT_OBJECT;
|
||||
ELEMENT_NAMES[185] = ELT_OUTPUT;
|
||||
ELEMENT_NAMES[186] = ELT_PLAINTEXT;
|
||||
ELEMENT_NAMES[187] = ELT_TT;
|
||||
ELEMENT_NAMES[188] = ELT_RECT;
|
||||
ELEMENT_NAMES[189] = ELT_RADIALGRADIENT;
|
||||
ELEMENT_NAMES[190] = ELT_SELECT;
|
||||
ELEMENT_NAMES[191] = ELT_SCRIPT;
|
||||
ELEMENT_NAMES[192] = ELT_TFOOT;
|
||||
ELEMENT_NAMES[193] = ELT_TEXT;
|
||||
ELEMENT_NAMES[194] = ELT_MENU;
|
||||
ELEMENT_NAMES[195] = ELT_FEDROPSHADOW;
|
||||
ELEMENT_NAMES[196] = ELT_VIEW;
|
||||
ELEMENT_NAMES[197] = ELT_FECOLORMATRIX;
|
||||
ELEMENT_NAMES[198] = ELT_FECONVOLVEMATRIX;
|
||||
ELEMENT_NAMES[199] = ELT_ISINDEX;
|
||||
ELEMENT_NAMES[200] = ELT_BODY;
|
||||
ELEMENT_NAMES[201] = ELT_FEMORPHOLOGY;
|
||||
ELEMENT_NAMES[202] = ELT_RUBY;
|
||||
ELEMENT_NAMES[203] = ELT_SUMMARY;
|
||||
ELEMENT_NAMES[204] = ELT_TBODY;
|
||||
ELEMENT_NAMES[109] = ELT_HTML;
|
||||
ELEMENT_NAMES[110] = ELT_OL;
|
||||
ELEMENT_NAMES[111] = ELT_LABEL;
|
||||
ELEMENT_NAMES[112] = ELT_UL;
|
||||
ELEMENT_NAMES[113] = ELT_SMALL;
|
||||
ELEMENT_NAMES[114] = ELT_SYMBOL;
|
||||
ELEMENT_NAMES[115] = ELT_ALTGLYPHITEM;
|
||||
ELEMENT_NAMES[116] = ELT_ANIMATETRANSFORM;
|
||||
ELEMENT_NAMES[117] = ELT_ACRONYM;
|
||||
ELEMENT_NAMES[118] = ELT_EM;
|
||||
ELEMENT_NAMES[119] = ELT_FORM;
|
||||
ELEMENT_NAMES[120] = ELT_MENUITEM;
|
||||
ELEMENT_NAMES[121] = ELT_PARAM;
|
||||
ELEMENT_NAMES[122] = ELT_ANIMATEMOTION;
|
||||
ELEMENT_NAMES[123] = ELT_BUTTON;
|
||||
ELEMENT_NAMES[124] = ELT_CAPTION;
|
||||
ELEMENT_NAMES[125] = ELT_FIGCAPTION;
|
||||
ELEMENT_NAMES[126] = ELT_MN;
|
||||
ELEMENT_NAMES[127] = ELT_KEYGEN;
|
||||
ELEMENT_NAMES[128] = ELT_MAIN;
|
||||
ELEMENT_NAMES[129] = ELT_OPTION;
|
||||
ELEMENT_NAMES[130] = ELT_POLYGON;
|
||||
ELEMENT_NAMES[131] = ELT_PATTERN;
|
||||
ELEMENT_NAMES[132] = ELT_SPAN;
|
||||
ELEMENT_NAMES[133] = ELT_SECTION;
|
||||
ELEMENT_NAMES[134] = ELT_TSPAN;
|
||||
ELEMENT_NAMES[135] = ELT_AUDIO;
|
||||
ELEMENT_NAMES[136] = ELT_MO;
|
||||
ELEMENT_NAMES[137] = ELT_VIDEO;
|
||||
ELEMENT_NAMES[138] = ELT_COLGROUP;
|
||||
ELEMENT_NAMES[139] = ELT_FEDISPLACEMENTMAP;
|
||||
ELEMENT_NAMES[140] = ELT_HGROUP;
|
||||
ELEMENT_NAMES[141] = ELT_RP;
|
||||
ELEMENT_NAMES[142] = ELT_OPTGROUP;
|
||||
ELEMENT_NAMES[143] = ELT_SAMP;
|
||||
ELEMENT_NAMES[144] = ELT_STOP;
|
||||
ELEMENT_NAMES[145] = ELT_BR;
|
||||
ELEMENT_NAMES[146] = ELT_ABBR;
|
||||
ELEMENT_NAMES[147] = ELT_ANIMATECOLOR;
|
||||
ELEMENT_NAMES[148] = ELT_CENTER;
|
||||
ELEMENT_NAMES[149] = ELT_HR;
|
||||
ELEMENT_NAMES[150] = ELT_FEFUNCR;
|
||||
ELEMENT_NAMES[151] = ELT_FECOMPONENTTRANSFER;
|
||||
ELEMENT_NAMES[152] = ELT_FILTER;
|
||||
ELEMENT_NAMES[153] = ELT_FOOTER;
|
||||
ELEMENT_NAMES[154] = ELT_FEGAUSSIANBLUR;
|
||||
ELEMENT_NAMES[155] = ELT_HEADER;
|
||||
ELEMENT_NAMES[156] = ELT_MARKER;
|
||||
ELEMENT_NAMES[157] = ELT_METER;
|
||||
ELEMENT_NAMES[158] = ELT_NOBR;
|
||||
ELEMENT_NAMES[159] = ELT_TR;
|
||||
ELEMENT_NAMES[160] = ELT_ADDRESS;
|
||||
ELEMENT_NAMES[161] = ELT_CANVAS;
|
||||
ELEMENT_NAMES[162] = ELT_DEFS;
|
||||
ELEMENT_NAMES[163] = ELT_DETAILS;
|
||||
ELEMENT_NAMES[164] = ELT_MS;
|
||||
ELEMENT_NAMES[165] = ELT_NOFRAMES;
|
||||
ELEMENT_NAMES[166] = ELT_PROGRESS;
|
||||
ELEMENT_NAMES[167] = ELT_DT;
|
||||
ELEMENT_NAMES[168] = ELT_APPLET;
|
||||
ELEMENT_NAMES[169] = ELT_BASEFONT;
|
||||
ELEMENT_NAMES[170] = ELT_FOREIGNOBJECT;
|
||||
ELEMENT_NAMES[171] = ELT_FIELDSET;
|
||||
ELEMENT_NAMES[172] = ELT_FRAMESET;
|
||||
ELEMENT_NAMES[173] = ELT_FEOFFSET;
|
||||
ELEMENT_NAMES[174] = ELT_FESPOTLIGHT;
|
||||
ELEMENT_NAMES[175] = ELT_FEPOINTLIGHT;
|
||||
ELEMENT_NAMES[176] = ELT_FEDISTANTLIGHT;
|
||||
ELEMENT_NAMES[177] = ELT_FONT;
|
||||
ELEMENT_NAMES[178] = ELT_INPUT;
|
||||
ELEMENT_NAMES[179] = ELT_LINEARGRADIENT;
|
||||
ELEMENT_NAMES[180] = ELT_MTEXT;
|
||||
ELEMENT_NAMES[181] = ELT_NOSCRIPT;
|
||||
ELEMENT_NAMES[182] = ELT_RT;
|
||||
ELEMENT_NAMES[183] = ELT_OBJECT;
|
||||
ELEMENT_NAMES[184] = ELT_OUTPUT;
|
||||
ELEMENT_NAMES[185] = ELT_PLAINTEXT;
|
||||
ELEMENT_NAMES[186] = ELT_TT;
|
||||
ELEMENT_NAMES[187] = ELT_RECT;
|
||||
ELEMENT_NAMES[188] = ELT_RADIALGRADIENT;
|
||||
ELEMENT_NAMES[189] = ELT_SELECT;
|
||||
ELEMENT_NAMES[190] = ELT_SCRIPT;
|
||||
ELEMENT_NAMES[191] = ELT_TFOOT;
|
||||
ELEMENT_NAMES[192] = ELT_TEXT;
|
||||
ELEMENT_NAMES[193] = ELT_MENU;
|
||||
ELEMENT_NAMES[194] = ELT_FEDROPSHADOW;
|
||||
ELEMENT_NAMES[195] = ELT_VIEW;
|
||||
ELEMENT_NAMES[196] = ELT_FECOLORMATRIX;
|
||||
ELEMENT_NAMES[197] = ELT_FECONVOLVEMATRIX;
|
||||
ELEMENT_NAMES[198] = ELT_ISINDEX;
|
||||
ELEMENT_NAMES[199] = ELT_BODY;
|
||||
ELEMENT_NAMES[200] = ELT_FEMORPHOLOGY;
|
||||
ELEMENT_NAMES[201] = ELT_RUBY;
|
||||
ELEMENT_NAMES[202] = ELT_SUMMARY;
|
||||
ELEMENT_NAMES[203] = ELT_TBODY;
|
||||
}
|
||||
|
||||
void
|
||||
nsHtml5ElementName::releaseStatics()
|
||||
{
|
||||
delete ELT_ANNOTATION_XML;
|
||||
delete ELT_BIG;
|
||||
delete ELT_BDO;
|
||||
delete ELT_COL;
|
||||
@@ -1287,7 +1286,6 @@ nsHtml5ElementName::releaseStatics()
|
||||
delete ELT_MASK;
|
||||
delete ELT_TRACK;
|
||||
delete ELT_DL;
|
||||
delete ELT_ANNOTATION_XML;
|
||||
delete ELT_HTML;
|
||||
delete ELT_OL;
|
||||
delete ELT_LABEL;
|
||||
|
||||
@@ -112,6 +112,7 @@ private:
|
||||
nsHtml5ElementName();
|
||||
~nsHtml5ElementName();
|
||||
void setNameForNonInterned(nsIAtom* name);
|
||||
static nsHtml5ElementName* ELT_ANNOTATION_XML;
|
||||
static nsHtml5ElementName* ELT_BIG;
|
||||
static nsHtml5ElementName* ELT_BDO;
|
||||
static nsHtml5ElementName* ELT_COL;
|
||||
@@ -221,7 +222,6 @@ private:
|
||||
static nsHtml5ElementName* ELT_MASK;
|
||||
static nsHtml5ElementName* ELT_TRACK;
|
||||
static nsHtml5ElementName* ELT_DL;
|
||||
static nsHtml5ElementName* ELT_ANNOTATION_XML;
|
||||
static nsHtml5ElementName* ELT_HTML;
|
||||
static nsHtml5ElementName* ELT_OL;
|
||||
static nsHtml5ElementName* ELT_LABEL;
|
||||
|
||||
@@ -95,6 +95,7 @@ nsHtml5Tokenizer::nsHtml5Tokenizer(nsHtml5TreeBuilder* tokenHandler,
|
||||
, charRefBuf(jArray<char16_t, int32_t>::newJArray(32))
|
||||
, bmpChar(jArray<char16_t, int32_t>::newJArray(1))
|
||||
, astralChar(jArray<char16_t, int32_t>::newJArray(2))
|
||||
, containsHyphen(false)
|
||||
, tagName(nullptr)
|
||||
, nonInternedTagName(new nsHtml5ElementName())
|
||||
, attributeName(nullptr)
|
||||
@@ -286,13 +287,28 @@ nsHtml5Tokenizer::flushChars(char16_t* buf, int32_t pos)
|
||||
void
|
||||
nsHtml5Tokenizer::strBufToElementNameString()
|
||||
{
|
||||
tagName = nsHtml5ElementName::elementNameByBuffer(strBuf, 0, strBufLen, interner);
|
||||
if (containsHyphen) {
|
||||
nsIAtom* annotationName = nsHtml5ElementName::ELT_ANNOTATION_XML->getName();
|
||||
if (nsHtml5Portability::localEqualsBuffer(
|
||||
annotationName, strBuf, 0, strBufLen)) {
|
||||
tagName = nsHtml5ElementName::ELT_ANNOTATION_XML;
|
||||
} else {
|
||||
nonInternedTagName->setNameForNonInterned(
|
||||
nsHtml5Portability::newLocalNameFromBuffer(
|
||||
strBuf, 0, strBufLen, interner));
|
||||
tagName = nonInternedTagName;
|
||||
}
|
||||
} else {
|
||||
tagName =
|
||||
nsHtml5ElementName::elementNameByBuffer(strBuf, 0, strBufLen, interner);
|
||||
if (!tagName) {
|
||||
nonInternedTagName->setNameForNonInterned(
|
||||
nsHtml5Portability::newLocalNameFromBuffer(
|
||||
strBuf, 0, strBufLen, interner));
|
||||
tagName = nonInternedTagName;
|
||||
}
|
||||
}
|
||||
containsHyphen = false;
|
||||
clearStrBufAfterUse();
|
||||
}
|
||||
|
||||
@@ -490,12 +506,14 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu
|
||||
endTag = false;
|
||||
clearStrBufBeforeUse();
|
||||
appendStrBuf((char16_t) (c + 0x20));
|
||||
containsHyphen = false;
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_TAG_NAME, reconsume, pos);
|
||||
NS_HTML5_BREAK(tagopenloop);
|
||||
} else if (c >= 'a' && c <= 'z') {
|
||||
endTag = false;
|
||||
clearStrBufBeforeUse();
|
||||
appendStrBuf(c);
|
||||
containsHyphen = false;
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_TAG_NAME, reconsume, pos);
|
||||
NS_HTML5_BREAK(tagopenloop);
|
||||
}
|
||||
@@ -586,6 +604,8 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu
|
||||
default: {
|
||||
if (c >= 'A' && c <= 'Z') {
|
||||
c += 0x20;
|
||||
} else if (c == '-') {
|
||||
containsHyphen = true;
|
||||
}
|
||||
appendStrBuf(c);
|
||||
continue;
|
||||
@@ -1926,6 +1946,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu
|
||||
endTag = true;
|
||||
clearStrBufBeforeUse();
|
||||
appendStrBuf(c);
|
||||
containsHyphen = false;
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_TAG_NAME, reconsume, pos);
|
||||
NS_HTML5_CONTINUE(stateloop);
|
||||
} else {
|
||||
@@ -4001,6 +4022,7 @@ nsHtml5Tokenizer::resetToDataState()
|
||||
endTag = false;
|
||||
shouldSuspend = false;
|
||||
initDoctypeFields();
|
||||
containsHyphen = false;
|
||||
if (tagName) {
|
||||
tagName = nullptr;
|
||||
}
|
||||
@@ -4061,6 +4083,7 @@ nsHtml5Tokenizer::loadState(nsHtml5Tokenizer* other)
|
||||
} else {
|
||||
publicIdentifier = nsHtml5Portability::newStringFromString(other->publicIdentifier);
|
||||
}
|
||||
containsHyphen = other->containsHyphen;
|
||||
if (!other->tagName) {
|
||||
tagName = nullptr;
|
||||
} else if (other->tagName->isInterned()) {
|
||||
|
||||
@@ -121,9 +121,9 @@ class nsHtml5Tokenizer
|
||||
protected:
|
||||
bool endTag;
|
||||
private:
|
||||
bool containsHyphen;
|
||||
nsHtml5ElementName* tagName;
|
||||
nsHtml5ElementName* nonInternedTagName;
|
||||
|
||||
protected:
|
||||
nsHtml5AttributeName* attributeName;
|
||||
private:
|
||||
|
||||
Reference in New Issue
Block a user