Bug 1274159 - Part 2-1: Include the name of relevant interface in nsHTMLTagList.h; r=bz

MozReview-Commit-ID: 8D29JfJcMG7

--HG--
extra : rebase_source : 3dba21655bcde1863feef409c820368528f996ab
This commit is contained in:
Edgar Chen 2016-11-08 15:45:28 +08:00
Родитель 61b739803a
Коммит f771fd22ab
4 изменённых файлов: 104 добавлений и 107 удалений

Просмотреть файл

@ -96,14 +96,12 @@ NS_NewHTMLNOTUSEDElement(already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo,
return nullptr;
}
#define HTML_TAG(_tag, _classname) NS_NewHTML##_classname##Element,
#define HTML_HTMLELEMENT_TAG(_tag) NS_NewHTMLElement,
#define HTML_TAG(_tag, _classname, _interfacename) NS_NewHTML##_classname##Element,
#define HTML_OTHER(_tag) NS_NewHTMLNOTUSEDElement,
static const contentCreatorCallback sContentCreatorCallbacks[] = {
NS_NewHTMLUnknownElement,
#include "nsHTMLTagList.h"
#undef HTML_TAG
#undef HTML_HTMLELEMENT_TAG
#undef HTML_OTHER
NS_NewHTMLUnknownElement
};

Просмотреть файл

@ -10,8 +10,8 @@
This file contains the list of all HTML tags.
See nsHTMLTags.h for access to the enum values for tags.
It is designed to be used as inline input to nsHTMLTags.cpp and
nsHTMLContentSink *only* through the magic of C preprocessing.
It is designed to be used as input to various places that will define the
HTML_TAG macro in useful ways through the magic of C preprocessing.
All entries must be enclosed in the macro HTML_TAG which will have cruel
and unusual things done to it.
@ -19,11 +19,13 @@
It is recommended (but not strictly necessary) to keep all entries
in alphabetical order.
The first argument to HTML_TAG is both the enum identifier of the
property and the string value. The second argument is the "creator"
method of the form NS_New$TAGNAMEElement, that will be used by
The first argument to HTML_TAG is the tag name. The second argument is the
"creator" method of the form NS_New$TAGNAMEElement, that will be used by
nsHTMLContentSink.cpp to create a content object for a tag of that
type. Use NOTUSED, if the particular tag has a non-standard creator.
The third argument is the interface name specified for this element
in the HTML specification. It can be empty if the relevant interface name
is "HTMLElement".
The HTML_OTHER macro is for values in the nsHTMLTag enum that are
not strictly tags.
@ -35,103 +37,106 @@
** Break these invariants and bad things will happen. **
******/
HTML_TAG(a, Anchor)
#define HTML_HTMLELEMENT_TAG(_tag) HTML_TAG(_tag, , )
HTML_TAG(a, Anchor, Anchor)
HTML_HTMLELEMENT_TAG(abbr)
HTML_HTMLELEMENT_TAG(acronym)
HTML_HTMLELEMENT_TAG(address)
HTML_TAG(applet, SharedObject)
HTML_TAG(area, Area)
HTML_TAG(applet, SharedObject, Applet)
HTML_TAG(area, Area, Area)
HTML_HTMLELEMENT_TAG(article)
HTML_HTMLELEMENT_TAG(aside)
HTML_TAG(audio, Audio)
HTML_TAG(audio, Audio, Audio)
HTML_HTMLELEMENT_TAG(b)
HTML_TAG(base, Shared)
HTML_TAG(base, Shared, Base)
HTML_HTMLELEMENT_TAG(basefont)
HTML_HTMLELEMENT_TAG(bdo)
HTML_TAG(bgsound, Unknown)
HTML_TAG(bgsound, Unknown, Unknown)
HTML_HTMLELEMENT_TAG(big)
HTML_TAG(blockquote, Shared)
HTML_TAG(body, Body)
HTML_TAG(br, BR)
HTML_TAG(button, Button)
HTML_TAG(canvas, Canvas)
HTML_TAG(caption, TableCaption)
HTML_TAG(blockquote, Shared, Quote)
HTML_TAG(body, Body, Body)
HTML_TAG(br, BR, BR)
HTML_TAG(button, Button, Button)
HTML_TAG(canvas, Canvas, Canvas)
HTML_TAG(caption, TableCaption, TableCaption)
HTML_HTMLELEMENT_TAG(center)
HTML_HTMLELEMENT_TAG(cite)
HTML_HTMLELEMENT_TAG(code)
HTML_TAG(col, TableCol)
HTML_TAG(colgroup, TableCol)
HTML_TAG(content, Content)
HTML_TAG(data, Data)
HTML_TAG(datalist, DataList)
HTML_TAG(col, TableCol, TableCol)
HTML_TAG(colgroup, TableCol, TableCol)
HTML_TAG(content, Content, Content)
HTML_TAG(data, Data, Data)
HTML_TAG(datalist, DataList, DataList)
HTML_HTMLELEMENT_TAG(dd)
HTML_TAG(del, Mod)
HTML_TAG(details, Details)
HTML_TAG(del, Mod, Mod)
HTML_TAG(details, Details, Details)
HTML_HTMLELEMENT_TAG(dfn)
HTML_TAG(dir, Shared)
HTML_TAG(div, Div)
HTML_TAG(dl, SharedList)
HTML_TAG(dir, Shared, Directory)
HTML_TAG(div, Div, Div)
HTML_TAG(dl, SharedList, DList)
HTML_HTMLELEMENT_TAG(dt)
HTML_HTMLELEMENT_TAG(em)
HTML_TAG(embed, SharedObject)
HTML_TAG(fieldset, FieldSet)
HTML_TAG(embed, SharedObject, Embed)
HTML_TAG(fieldset, FieldSet, FieldSet)
HTML_HTMLELEMENT_TAG(figcaption)
HTML_HTMLELEMENT_TAG(figure)
HTML_TAG(font, Font)
HTML_TAG(font, Font, Font)
HTML_HTMLELEMENT_TAG(footer)
HTML_TAG(form, Form)
HTML_TAG(frame, Frame)
HTML_TAG(frameset, FrameSet)
HTML_TAG(h1, Heading)
HTML_TAG(h2, Heading)
HTML_TAG(h3, Heading)
HTML_TAG(h4, Heading)
HTML_TAG(h5, Heading)
HTML_TAG(h6, Heading)
HTML_TAG(head, Shared)
HTML_TAG(form, Form, Form)
HTML_TAG(frame, Frame, Frame)
HTML_TAG(frameset, FrameSet, FrameSet)
HTML_TAG(h1, Heading, Heading)
HTML_TAG(h2, Heading, Heading)
HTML_TAG(h3, Heading, Heading)
HTML_TAG(h4, Heading, Heading)
HTML_TAG(h5, Heading, Heading)
HTML_TAG(h6, Heading, Heading)
HTML_TAG(head, Shared, Head)
HTML_HTMLELEMENT_TAG(header)
HTML_HTMLELEMENT_TAG(hgroup)
HTML_TAG(hr, HR)
HTML_TAG(html, Shared)
HTML_TAG(hr, HR, HR)
HTML_TAG(html, Shared, Html)
HTML_HTMLELEMENT_TAG(i)
HTML_TAG(iframe, IFrame)
HTML_TAG(iframe, IFrame, IFrame)
HTML_HTMLELEMENT_TAG(image)
HTML_TAG(img, Image)
HTML_TAG(input, Input)
HTML_TAG(ins, Mod)
HTML_TAG(img, Image, Image)
HTML_TAG(input, Input, Input)
HTML_TAG(ins, Mod, Mod)
HTML_HTMLELEMENT_TAG(kbd)
HTML_TAG(keygen, Span)
HTML_TAG(label, Label)
HTML_TAG(legend, Legend)
HTML_TAG(li, LI)
HTML_TAG(link, Link)
HTML_TAG(listing, Pre)
HTML_TAG(keygen, Span, Span)
HTML_TAG(label, Label, Label)
HTML_TAG(legend, Legend, Legend)
HTML_TAG(li, LI, LI)
HTML_TAG(link, Link, Link)
HTML_TAG(listing, Pre, Pre)
HTML_HTMLELEMENT_TAG(main)
HTML_TAG(map, Map)
HTML_TAG(map, Map, Map)
HTML_HTMLELEMENT_TAG(mark)
HTML_TAG(marquee, Div)
HTML_TAG(menu, Menu)
HTML_TAG(menuitem, MenuItem)
HTML_TAG(meta, Meta)
HTML_TAG(meter, Meter)
HTML_TAG(multicol, Unknown)
HTML_TAG(marquee, Div, Div)
HTML_TAG(menu, Menu, Menu)
HTML_TAG(menuitem, MenuItem, MenuItem)
HTML_TAG(meta, Meta, Meta)
HTML_TAG(meter, Meter, Meter)
HTML_TAG(multicol, Unknown, Unknown)
HTML_HTMLELEMENT_TAG(nav)
HTML_HTMLELEMENT_TAG(nobr)
HTML_HTMLELEMENT_TAG(noembed)
HTML_HTMLELEMENT_TAG(noframes)
HTML_HTMLELEMENT_TAG(noscript)
HTML_TAG(object, Object)
HTML_TAG(ol, SharedList)
HTML_TAG(optgroup, OptGroup)
HTML_TAG(option, Option)
HTML_TAG(output, Output)
HTML_TAG(p, Paragraph)
HTML_TAG(param, Shared)
HTML_TAG(picture, Picture)
HTML_TAG(object, Object, Object)
HTML_TAG(ol, SharedList, OList)
HTML_TAG(optgroup, OptGroup, OptGroup)
HTML_TAG(option, Option, Option)
HTML_TAG(output, Output, Output)
HTML_TAG(p, Paragraph, Paragraph)
HTML_TAG(param, Shared, Param)
HTML_TAG(picture, Picture, Picture)
HTML_HTMLELEMENT_TAG(plaintext)
HTML_TAG(pre, Pre)
HTML_TAG(progress, Progress)
HTML_TAG(q, Shared)
HTML_TAG(pre, Pre, Pre)
HTML_TAG(progress, Progress, Progress)
HTML_TAG(q, Shared, Quote)
HTML_HTMLELEMENT_TAG(rb)
HTML_HTMLELEMENT_TAG(rp)
HTML_HTMLELEMENT_TAG(rt)
@ -139,38 +144,38 @@ HTML_HTMLELEMENT_TAG(rtc)
HTML_HTMLELEMENT_TAG(ruby)
HTML_HTMLELEMENT_TAG(s)
HTML_HTMLELEMENT_TAG(samp)
HTML_TAG(script, Script)
HTML_TAG(script, Script, Script)
HTML_HTMLELEMENT_TAG(section)
HTML_TAG(select, Select)
HTML_TAG(shadow, Shadow)
HTML_TAG(select, Select, Select)
HTML_TAG(shadow, Shadow, Shadow)
HTML_HTMLELEMENT_TAG(small)
HTML_TAG(source, Source)
HTML_TAG(span, Span)
HTML_TAG(source, Source, Source)
HTML_TAG(span, Span, Span)
HTML_HTMLELEMENT_TAG(strike)
HTML_HTMLELEMENT_TAG(strong)
HTML_TAG(style, Style)
HTML_TAG(style, Style, Style)
HTML_HTMLELEMENT_TAG(sub)
HTML_TAG(summary, Summary)
HTML_TAG(summary, Summary, )
HTML_HTMLELEMENT_TAG(sup)
HTML_TAG(table, Table)
HTML_TAG(tbody, TableSection)
HTML_TAG(td, TableCell)
HTML_TAG(textarea, TextArea)
HTML_TAG(tfoot, TableSection)
HTML_TAG(th, TableCell)
HTML_TAG(thead, TableSection)
HTML_TAG(template, Template)
HTML_TAG(time, Time)
HTML_TAG(title, Title)
HTML_TAG(tr, TableRow)
HTML_TAG(track, Track)
HTML_TAG(table, Table, Table)
HTML_TAG(tbody, TableSection, TableSection)
HTML_TAG(td, TableCell, TableCell)
HTML_TAG(textarea, TextArea, TextArea)
HTML_TAG(tfoot, TableSection, TableSection)
HTML_TAG(th, TableCell, TableCell)
HTML_TAG(thead, TableSection, TableSection)
HTML_TAG(template, Template, Template)
HTML_TAG(time, Time, Time)
HTML_TAG(title, Title, Title)
HTML_TAG(tr, TableRow, TableRow)
HTML_TAG(track, Track, Track)
HTML_HTMLELEMENT_TAG(tt)
HTML_HTMLELEMENT_TAG(u)
HTML_TAG(ul, SharedList)
HTML_TAG(ul, SharedList, UList)
HTML_HTMLELEMENT_TAG(var)
HTML_TAG(video, Video)
HTML_TAG(video, Video, Video)
HTML_HTMLELEMENT_TAG(wbr)
HTML_TAG(xmp, Pre)
HTML_TAG(xmp, Pre, Pre)
/* These are not for tags. But they will be included in the nsHTMLTag
@ -184,3 +189,5 @@ HTML_OTHER(entity)
HTML_OTHER(doctypeDecl)
HTML_OTHER(markupDecl)
HTML_OTHER(instruction)
#undef HTML_HTMLELEMENT_TAG

Просмотреть файл

@ -15,14 +15,12 @@
using namespace mozilla;
// static array of unicode tag names
#define HTML_TAG(_tag, _classname) (u"" #_tag),
#define HTML_HTMLELEMENT_TAG(_tag) (u"" #_tag),
#define HTML_TAG(_tag, _classname, _interfacename) (u"" #_tag),
#define HTML_OTHER(_tag)
const char16_t* const nsHTMLTags::sTagUnicodeTable[] = {
#include "nsHTMLTagList.h"
};
#undef HTML_TAG
#undef HTML_HTMLELEMENT_TAG
#undef HTML_OTHER
// static array of tag atoms
@ -58,12 +56,10 @@ HTMLTagsHashCodeAtom(const void *key)
#define NS_HTMLTAG_NAME_MAX_LENGTH 10
#define HTML_TAG(_tag, _classname) NS_STATIC_ATOM_BUFFER(Atombuffer_##_tag, #_tag)
#define HTML_HTMLELEMENT_TAG(_tag) NS_STATIC_ATOM_BUFFER(Atombuffer_##_tag, #_tag)
#define HTML_TAG(_tag, _classname, _interfacename) NS_STATIC_ATOM_BUFFER(Atombuffer_##_tag, #_tag)
#define HTML_OTHER(_tag)
#include "nsHTMLTagList.h"
#undef HTML_TAG
#undef HTML_HTMLELEMENT_TAG
#undef HTML_OTHER
@ -72,14 +68,12 @@ nsresult
nsHTMLTags::AddRefTable(void)
{
// static array of tag StaticAtom structs
#define HTML_TAG(_tag, _classname) NS_STATIC_ATOM(Atombuffer_##_tag, &nsHTMLTags::sTagAtomTable[eHTMLTag_##_tag - 1]),
#define HTML_HTMLELEMENT_TAG(_tag) NS_STATIC_ATOM(Atombuffer_##_tag, &nsHTMLTags::sTagAtomTable[eHTMLTag_##_tag - 1]),
#define HTML_TAG(_tag, _classname, _interfacename) NS_STATIC_ATOM(Atombuffer_##_tag, &nsHTMLTags::sTagAtomTable[eHTMLTag_##_tag - 1]),
#define HTML_OTHER(_tag)
static const nsStaticAtom sTagAtoms_info[] = {
#include "nsHTMLTagList.h"
};
#undef HTML_TAG
#undef HTML_HTMLELEMENT_TAG
#undef HTML_OTHER
if (gTableRefCount++ == 0) {

Просмотреть файл

@ -18,8 +18,7 @@ class nsIAtom;
To change the list of tags, see nsHTMLTagList.h
*/
#define HTML_TAG(_tag, _classname) eHTMLTag_##_tag,
#define HTML_HTMLELEMENT_TAG(_tag) eHTMLTag_##_tag,
#define HTML_TAG(_tag, _classname, _interfacename) eHTMLTag_##_tag,
#define HTML_OTHER(_tag) eHTMLTag_##_tag,
enum nsHTMLTag {
/* this enum must be first and must be zero */
@ -31,7 +30,6 @@ enum nsHTMLTag {
eHTMLTag_userdefined
};
#undef HTML_TAG
#undef HTML_HTMLELEMENT_TAG
#undef HTML_OTHER
// All tags before eHTMLTag_text are HTML tags