summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGaming4JC <g4jc@hyperbola.info>2020-01-07 20:45:38 -0500
committerGaming4JC <g4jc@hyperbola.info>2020-01-26 15:50:09 -0500
commit244277a3fa428b70ba46cf611dbe1905733515eb (patch)
tree34712a84a8cd4e5e70a4430c3c4529ed9cc6a4b9
parent2d31ebf6b6bba8c1b90982f687346e5c6a0ff6ef (diff)
downloaduxp-244277a3fa428b70ba46cf611dbe1905733515eb.tar.gz
Bug 1274159 - Part 2-1: Include the name of relevant interface in nsHTMLTagList.h;
Tag UXP Issue #1344
-rw-r--r--dom/html/nsHTMLContentSink.cpp4
-rw-r--r--parser/htmlparser/nsHTMLTagList.h192
-rw-r--r--parser/htmlparser/nsHTMLTags.cpp12
-rw-r--r--parser/htmlparser/nsHTMLTags.h4
4 files changed, 104 insertions, 108 deletions
diff --git a/dom/html/nsHTMLContentSink.cpp b/dom/html/nsHTMLContentSink.cpp
index 3e8e019b83..6e808f87e8 100644
--- a/dom/html/nsHTMLContentSink.cpp
+++ b/dom/html/nsHTMLContentSink.cpp
@@ -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
};
diff --git a/parser/htmlparser/nsHTMLTagList.h b/parser/htmlparser/nsHTMLTagList.h
index 7e1e207ccb..f5e1da6c1b 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 d5a68d46a3..e98d2c4cd8 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 8f0c86b4b0..a2800df075 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