From 244277a3fa428b70ba46cf611dbe1905733515eb Mon Sep 17 00:00:00 2001 From: Gaming4JC Date: Tue, 7 Jan 2020 20:45:38 -0500 Subject: Bug 1274159 - Part 2-1: Include the name of relevant interface in nsHTMLTagList.h; Tag UXP Issue #1344 --- parser/htmlparser/nsHTMLTagList.h | 192 ++++++++++++++++++++------------------ parser/htmlparser/nsHTMLTags.cpp | 12 +-- parser/htmlparser/nsHTMLTags.h | 4 +- 3 files changed, 103 insertions(+), 105 deletions(-) (limited to 'parser') diff --git a/parser/htmlparser/nsHTMLTagList.h b/parser/htmlparser/nsHTMLTagList.h index 7e1e207cc..f5e1da6c1 100644 --- a/parser/htmlparser/nsHTMLTagList.h +++ b/parser/htmlparser/nsHTMLTagList.h @@ -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,104 +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(dialog, Dialog) -HTML_TAG(dir, Shared) -HTML_TAG(div, Div) -HTML_TAG(dl, SharedList) +HTML_TAG(dialog, Dialog, Dialog) +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) @@ -140,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 @@ -185,3 +189,5 @@ HTML_OTHER(entity) HTML_OTHER(doctypeDecl) HTML_OTHER(markupDecl) HTML_OTHER(instruction) + +#undef HTML_HTMLELEMENT_TAG diff --git a/parser/htmlparser/nsHTMLTags.cpp b/parser/htmlparser/nsHTMLTags.cpp index d5a68d46a..e98d2c4cd 100644 --- a/parser/htmlparser/nsHTMLTags.cpp +++ b/parser/htmlparser/nsHTMLTags.cpp @@ -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 @@ -62,23 +60,19 @@ HTMLTagsHashCodeAtom(const void *key) void nsHTMLTags::RegisterAtoms(void) { -#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 // 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 // Fill in our static atom pointers diff --git a/parser/htmlparser/nsHTMLTags.h b/parser/htmlparser/nsHTMLTags.h index 8f0c86b4b..a2800df07 100644 --- a/parser/htmlparser/nsHTMLTags.h +++ b/parser/htmlparser/nsHTMLTags.h @@ -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 -- cgit v1.2.3