mirror of
https://github.com/lightpanda-io/browser.git
synced 2025-10-29 15:13:28 +00:00
dom: add missing tags
according with https://wpt.live/dom/nodes/Node-cloneNode.html test
This commit is contained in:
@@ -5,6 +5,7 @@ const Element = @import("../dom/element.zig").Element;
|
||||
|
||||
// HTMLElement interfaces
|
||||
pub const Interfaces = .{
|
||||
HTMLElement,
|
||||
HTMLUnknownElement,
|
||||
HTMLAnchorElement,
|
||||
HTMLAreaElement,
|
||||
@@ -16,11 +17,15 @@ pub const Interfaces = .{
|
||||
HTMLCanvasElement,
|
||||
HTMLDListElement,
|
||||
HTMLDataElement,
|
||||
HTMLDataListElement,
|
||||
HTMLDialogElement,
|
||||
HTMLDirectoryElement,
|
||||
HTMLDivElement,
|
||||
HTMLEmbedElement,
|
||||
HTMLFieldSetElement,
|
||||
HTMLFontElement,
|
||||
HTMLFormElement,
|
||||
HTMLFrameElement,
|
||||
HTMLFrameSetElement,
|
||||
HTMLHRElement,
|
||||
HTMLHeadElement,
|
||||
@@ -43,6 +48,7 @@ pub const Interfaces = .{
|
||||
HTMLOptionElement,
|
||||
HTMLOutputElement,
|
||||
HTMLParagraphElement,
|
||||
HTMLParamElement,
|
||||
HTMLPictureElement,
|
||||
HTMLPreElement,
|
||||
HTMLProgressElement,
|
||||
@@ -161,12 +167,24 @@ pub const HTMLDataElement = struct {
|
||||
pub const mem_guarantied = true;
|
||||
};
|
||||
|
||||
pub const HTMLDataListElement = struct {
|
||||
pub const Self = parser.DataList;
|
||||
pub const prototype = *HTMLElement;
|
||||
pub const mem_guarantied = true;
|
||||
};
|
||||
|
||||
pub const HTMLDialogElement = struct {
|
||||
pub const Self = parser.Dialog;
|
||||
pub const prototype = *HTMLElement;
|
||||
pub const mem_guarantied = true;
|
||||
};
|
||||
|
||||
pub const HTMLDirectoryElement = struct {
|
||||
pub const Self = parser.Directory;
|
||||
pub const prototype = *HTMLElement;
|
||||
pub const mem_guarantied = true;
|
||||
};
|
||||
|
||||
pub const HTMLDivElement = struct {
|
||||
pub const Self = parser.Div;
|
||||
pub const prototype = *HTMLElement;
|
||||
@@ -185,12 +203,24 @@ pub const HTMLFieldSetElement = struct {
|
||||
pub const mem_guarantied = true;
|
||||
};
|
||||
|
||||
pub const HTMLFontElement = struct {
|
||||
pub const Self = parser.Font;
|
||||
pub const prototype = *HTMLElement;
|
||||
pub const mem_guarantied = true;
|
||||
};
|
||||
|
||||
pub const HTMLFormElement = struct {
|
||||
pub const Self = parser.Form;
|
||||
pub const prototype = *HTMLElement;
|
||||
pub const mem_guarantied = true;
|
||||
};
|
||||
|
||||
pub const HTMLFrameElement = struct {
|
||||
pub const Self = parser.Frame;
|
||||
pub const prototype = *HTMLElement;
|
||||
pub const mem_guarantied = true;
|
||||
};
|
||||
|
||||
pub const HTMLFrameSetElement = struct {
|
||||
pub const Self = parser.FrameSet;
|
||||
pub const prototype = *HTMLElement;
|
||||
@@ -323,6 +353,12 @@ pub const HTMLParagraphElement = struct {
|
||||
pub const mem_guarantied = true;
|
||||
};
|
||||
|
||||
pub const HTMLParamElement = struct {
|
||||
pub const Self = parser.Param;
|
||||
pub const prototype = *HTMLElement;
|
||||
pub const mem_guarantied = true;
|
||||
};
|
||||
|
||||
pub const HTMLPictureElement = struct {
|
||||
pub const Self = parser.Picture;
|
||||
pub const prototype = *HTMLElement;
|
||||
@@ -459,21 +495,26 @@ pub fn toInterface(comptime T: type, e: *parser.Element) T {
|
||||
const elem: *align(@alignOf(*parser.Element)) parser.Element = @alignCast(e);
|
||||
const tag = parser.elementHTMLGetTagType(@as(*parser.ElementHTML, @ptrCast(elem)));
|
||||
return switch (tag) {
|
||||
.abbr, .acronym, .address, .article, .aside, .b, .bdi, .bdo, .bgsound, .big, .center, .cite, .code, .dd, .details, .dfn, .dt, .figcaption, .figure, .footer, .header, .hgroup, .i, .isindex, .kbd, .main, .mark, .marquee, .nav, .nobr, .noframes, .noscript, .rp, .rt, .ruby, .s, .samp, .section, .small, .spacer, .strike, .sub, .summary, .sup, .tt, .u, .wbr, ._var => .{ .HTMLElement = @as(*parser.ElementHTML, @ptrCast(elem)) },
|
||||
.a => .{ .HTMLAnchorElement = @as(*parser.Anchor, @ptrCast(elem)) },
|
||||
.area => .{ .HTMLAreaElement = @as(*parser.Area, @ptrCast(elem)) },
|
||||
.audio => .{ .HTMLAudioElement = @as(*parser.Audio, @ptrCast(elem)) },
|
||||
.br => .{ .HTMLBRElement = @as(*parser.BR, @ptrCast(elem)) },
|
||||
.base => .{ .HTMLBaseElement = @as(*parser.Base, @ptrCast(elem)) },
|
||||
.body => .{ .HTMLBodyElement = @as(*parser.Body, @ptrCast(elem)) },
|
||||
.br => .{ .HTMLBRElement = @as(*parser.BR, @ptrCast(elem)) },
|
||||
.button => .{ .HTMLButtonElement = @as(*parser.Button, @ptrCast(elem)) },
|
||||
.canvas => .{ .HTMLCanvasElement = @as(*parser.Canvas, @ptrCast(elem)) },
|
||||
.dl => .{ .HTMLDListElement = @as(*parser.DList, @ptrCast(elem)) },
|
||||
.data => .{ .HTMLDataElement = @as(*parser.Data, @ptrCast(elem)) },
|
||||
.datalist => .{ .HTMLDataListElement = @as(*parser.DataList, @ptrCast(elem)) },
|
||||
.dialog => .{ .HTMLDialogElement = @as(*parser.Dialog, @ptrCast(elem)) },
|
||||
.dir => .{ .HTMLDirectoryElement = @as(*parser.Directory, @ptrCast(elem)) },
|
||||
.div => .{ .HTMLDivElement = @as(*parser.Div, @ptrCast(elem)) },
|
||||
.embed => .{ .HTMLEmbedElement = @as(*parser.Embed, @ptrCast(elem)) },
|
||||
.fieldset => .{ .HTMLFieldSetElement = @as(*parser.FieldSet, @ptrCast(elem)) },
|
||||
.font => .{ .HTMLFontElement = @as(*parser.Font, @ptrCast(elem)) },
|
||||
.form => .{ .HTMLFormElement = @as(*parser.Form, @ptrCast(elem)) },
|
||||
.frame => .{ .HTMLFrameElement = @as(*parser.Frame, @ptrCast(elem)) },
|
||||
.frameset => .{ .HTMLFrameSetElement = @as(*parser.FrameSet, @ptrCast(elem)) },
|
||||
.hr => .{ .HTMLHRElement = @as(*parser.HR, @ptrCast(elem)) },
|
||||
.head => .{ .HTMLHeadElement = @as(*parser.Head, @ptrCast(elem)) },
|
||||
@@ -496,6 +537,7 @@ pub fn toInterface(comptime T: type, e: *parser.Element) T {
|
||||
.option => .{ .HTMLOptionElement = @as(*parser.Option, @ptrCast(elem)) },
|
||||
.output => .{ .HTMLOutputElement = @as(*parser.Output, @ptrCast(elem)) },
|
||||
.p => .{ .HTMLParagraphElement = @as(*parser.Paragraph, @ptrCast(elem)) },
|
||||
.param => .{ .HTMLParamElement = @as(*parser.Param, @ptrCast(elem)) },
|
||||
.picture => .{ .HTMLPictureElement = @as(*parser.Picture, @ptrCast(elem)) },
|
||||
.pre => .{ .HTMLPreElement = @as(*parser.Pre, @ptrCast(elem)) },
|
||||
.progress => .{ .HTMLProgressElement = @as(*parser.Progress, @ptrCast(elem)) },
|
||||
@@ -508,7 +550,7 @@ pub fn toInterface(comptime T: type, e: *parser.Element) T {
|
||||
.table => .{ .HTMLTableElement = @as(*parser.Table, @ptrCast(elem)) },
|
||||
.caption => .{ .HTMLTableCaptionElement = @as(*parser.TableCaption, @ptrCast(elem)) },
|
||||
.th, .td => .{ .HTMLTableCellElement = @as(*parser.TableCell, @ptrCast(elem)) },
|
||||
.col => .{ .HTMLTableColElement = @as(*parser.TableCol, @ptrCast(elem)) },
|
||||
.col, .colgroup => .{ .HTMLTableColElement = @as(*parser.TableCol, @ptrCast(elem)) },
|
||||
.tr => .{ .HTMLTableRowElement = @as(*parser.TableRow, @ptrCast(elem)) },
|
||||
.thead, .tbody, .tfoot => .{ .HTMLTableSectionElement = @as(*parser.TableSection, @ptrCast(elem)) },
|
||||
.template => .{ .HTMLTemplateElement = @as(*parser.Template, @ptrCast(elem)) },
|
||||
|
||||
@@ -68,41 +68,81 @@ inline fn stringFromData(data: []const u8) *String {
|
||||
// Tag
|
||||
|
||||
pub const Tag = enum(u8) {
|
||||
acronym = 123, // TODO c.DOM_HTML_ELEMENT_TYPE_ACRONYM,
|
||||
bgsound = 124, // TODO c.DOM_HTML_ELEMENT_TYPE_BGSOUND,
|
||||
big = 125, // TODO c.DOM_HTML_ELEMENT_TYPE_BIG,
|
||||
marquee = 127, // TODO c.DOM_HTML_ELEMENT_TYPE_MARQUEE,
|
||||
nobr = 128, // TODO c.DOM_HTML_ELEMENT_TYPE_NOBR,
|
||||
noframes = 129, // TODO c.DOM_HTML_ELEMENT_TYPE_NOFRAMES,
|
||||
spacer = 130, // TODO c.DOM_HTML_ELEMENT_TYPE_SPACER,
|
||||
strike = 131, // TODO c.DOM_HTML_ELEMENT_TYPE_STRIKE,
|
||||
tt = 132, // TODO c.DOM_HTML_ELEMENT_TYPE_TT,
|
||||
|
||||
a = c.DOM_HTML_ELEMENT_TYPE_A,
|
||||
abbr = c.DOM_HTML_ELEMENT_TYPE_ABBR,
|
||||
address = c.DOM_HTML_ELEMENT_TYPE_ADDRESS,
|
||||
article = c.DOM_HTML_ELEMENT_TYPE_ARTICLE,
|
||||
aside = c.DOM_HTML_ELEMENT_TYPE_ASIDE,
|
||||
area = c.DOM_HTML_ELEMENT_TYPE_AREA,
|
||||
audio = c.DOM_HTML_ELEMENT_TYPE_AUDIO,
|
||||
b = c.DOM_HTML_ELEMENT_TYPE_B,
|
||||
bdi = c.DOM_HTML_ELEMENT_TYPE_BDI,
|
||||
bdo = c.DOM_HTML_ELEMENT_TYPE_BDO,
|
||||
br = c.DOM_HTML_ELEMENT_TYPE_BR,
|
||||
base = c.DOM_HTML_ELEMENT_TYPE_BASE,
|
||||
body = c.DOM_HTML_ELEMENT_TYPE_BODY,
|
||||
button = c.DOM_HTML_ELEMENT_TYPE_BUTTON,
|
||||
canvas = c.DOM_HTML_ELEMENT_TYPE_CANVAS,
|
||||
center = c.DOM_HTML_ELEMENT_TYPE_CENTER,
|
||||
cite = c.DOM_HTML_ELEMENT_TYPE_CITE,
|
||||
code = c.DOM_HTML_ELEMENT_TYPE_CODE,
|
||||
dd = c.DOM_HTML_ELEMENT_TYPE_DD,
|
||||
details = c.DOM_HTML_ELEMENT_TYPE_DETAILS,
|
||||
dfn = c.DOM_HTML_ELEMENT_TYPE_DFN,
|
||||
dt = c.DOM_HTML_ELEMENT_TYPE_DT,
|
||||
dl = c.DOM_HTML_ELEMENT_TYPE_DL,
|
||||
dialog = c.DOM_HTML_ELEMENT_TYPE_DIALOG,
|
||||
data = c.DOM_HTML_ELEMENT_TYPE_DATA,
|
||||
datalist = c.DOM_HTML_ELEMENT_TYPE_DATALIST,
|
||||
dir = c.DOM_HTML_ELEMENT_TYPE_DIR,
|
||||
div = c.DOM_HTML_ELEMENT_TYPE_DIV,
|
||||
embed = c.DOM_HTML_ELEMENT_TYPE_EMBED,
|
||||
figcaption = c.DOM_HTML_ELEMENT_TYPE_FIGCAPTION,
|
||||
figure = c.DOM_HTML_ELEMENT_TYPE_FIGURE,
|
||||
fieldset = c.DOM_HTML_ELEMENT_TYPE_FIELDSET,
|
||||
footer = c.DOM_HTML_ELEMENT_TYPE_FOOTER,
|
||||
font = c.DOM_HTML_ELEMENT_TYPE_FONT,
|
||||
form = c.DOM_HTML_ELEMENT_TYPE_FORM,
|
||||
frame = c.DOM_HTML_ELEMENT_TYPE_FRAME,
|
||||
frameset = c.DOM_HTML_ELEMENT_TYPE_FRAMESET,
|
||||
hr = c.DOM_HTML_ELEMENT_TYPE_HR,
|
||||
head = c.DOM_HTML_ELEMENT_TYPE_HEAD,
|
||||
header = c.DOM_HTML_ELEMENT_TYPE_HEADER,
|
||||
h1 = c.DOM_HTML_ELEMENT_TYPE_H1,
|
||||
h2 = c.DOM_HTML_ELEMENT_TYPE_H2,
|
||||
h3 = c.DOM_HTML_ELEMENT_TYPE_H3,
|
||||
h4 = c.DOM_HTML_ELEMENT_TYPE_H4,
|
||||
h5 = c.DOM_HTML_ELEMENT_TYPE_H5,
|
||||
h6 = c.DOM_HTML_ELEMENT_TYPE_H6,
|
||||
hgroup = c.DOM_HTML_ELEMENT_TYPE_HGROUP,
|
||||
html = c.DOM_HTML_ELEMENT_TYPE_HTML,
|
||||
i = c.DOM_HTML_ELEMENT_TYPE_I,
|
||||
isindex = c.DOM_HTML_ELEMENT_TYPE_ISINDEX,
|
||||
iframe = c.DOM_HTML_ELEMENT_TYPE_IFRAME,
|
||||
img = c.DOM_HTML_ELEMENT_TYPE_IMG,
|
||||
input = c.DOM_HTML_ELEMENT_TYPE_INPUT,
|
||||
kbd = c.DOM_HTML_ELEMENT_TYPE_KBD,
|
||||
li = c.DOM_HTML_ELEMENT_TYPE_LI,
|
||||
label = c.DOM_HTML_ELEMENT_TYPE_LABEL,
|
||||
legend = c.DOM_HTML_ELEMENT_TYPE_LEGEND,
|
||||
link = c.DOM_HTML_ELEMENT_TYPE_LINK,
|
||||
main = c.DOM_HTML_ELEMENT_TYPE_MAIN,
|
||||
map = c.DOM_HTML_ELEMENT_TYPE_MAP,
|
||||
mark = c.DOM_HTML_ELEMENT_TYPE_MARK,
|
||||
meta = c.DOM_HTML_ELEMENT_TYPE_META,
|
||||
meter = c.DOM_HTML_ELEMENT_TYPE_METER,
|
||||
nav = c.DOM_HTML_ELEMENT_TYPE_NAV,
|
||||
noscript = c.DOM_HTML_ELEMENT_TYPE_NOSCRIPT,
|
||||
ins = c.DOM_HTML_ELEMENT_TYPE_INS,
|
||||
del = c.DOM_HTML_ELEMENT_TYPE_DEL,
|
||||
ol = c.DOM_HTML_ELEMENT_TYPE_OL,
|
||||
@@ -111,11 +151,22 @@ pub const Tag = enum(u8) {
|
||||
option = c.DOM_HTML_ELEMENT_TYPE_OPTION,
|
||||
output = c.DOM_HTML_ELEMENT_TYPE_OUTPUT,
|
||||
p = c.DOM_HTML_ELEMENT_TYPE_P,
|
||||
param = c.DOM_HTML_ELEMENT_TYPE_PARAM,
|
||||
picture = c.DOM_HTML_ELEMENT_TYPE_PICTURE,
|
||||
pre = c.DOM_HTML_ELEMENT_TYPE_PRE,
|
||||
progress = c.DOM_HTML_ELEMENT_TYPE_PROGRESS,
|
||||
blockquote = c.DOM_HTML_ELEMENT_TYPE_BLOCKQUOTE,
|
||||
q = c.DOM_HTML_ELEMENT_TYPE_Q,
|
||||
rp = c.DOM_HTML_ELEMENT_TYPE_RP,
|
||||
rt = c.DOM_HTML_ELEMENT_TYPE_RT,
|
||||
ruby = c.DOM_HTML_ELEMENT_TYPE_RUBY,
|
||||
s = c.DOM_HTML_ELEMENT_TYPE_S,
|
||||
samp = c.DOM_HTML_ELEMENT_TYPE_SAMP,
|
||||
section = c.DOM_HTML_ELEMENT_TYPE_SECTION,
|
||||
small = c.DOM_HTML_ELEMENT_TYPE_SMALL,
|
||||
sub = c.DOM_HTML_ELEMENT_TYPE_SUB,
|
||||
summary = c.DOM_HTML_ELEMENT_TYPE_SUMMARY,
|
||||
sup = c.DOM_HTML_ELEMENT_TYPE_SUP,
|
||||
script = c.DOM_HTML_ELEMENT_TYPE_SCRIPT,
|
||||
select = c.DOM_HTML_ELEMENT_TYPE_SELECT,
|
||||
source = c.DOM_HTML_ELEMENT_TYPE_SOURCE,
|
||||
@@ -126,6 +177,7 @@ pub const Tag = enum(u8) {
|
||||
th = c.DOM_HTML_ELEMENT_TYPE_TH,
|
||||
td = c.DOM_HTML_ELEMENT_TYPE_TD,
|
||||
col = c.DOM_HTML_ELEMENT_TYPE_COL,
|
||||
colgroup = c.DOM_HTML_ELEMENT_TYPE_COLGROUP,
|
||||
tr = c.DOM_HTML_ELEMENT_TYPE_TR,
|
||||
thead = c.DOM_HTML_ELEMENT_TYPE_THEAD,
|
||||
tbody = c.DOM_HTML_ELEMENT_TYPE_TBODY,
|
||||
@@ -135,8 +187,11 @@ pub const Tag = enum(u8) {
|
||||
time = c.DOM_HTML_ELEMENT_TYPE_TIME,
|
||||
title = c.DOM_HTML_ELEMENT_TYPE_TITLE,
|
||||
track = c.DOM_HTML_ELEMENT_TYPE_TRACK,
|
||||
u = c.DOM_HTML_ELEMENT_TYPE_U,
|
||||
ul = c.DOM_HTML_ELEMENT_TYPE_UL,
|
||||
_var = c.DOM_HTML_ELEMENT_TYPE_VAR,
|
||||
video = c.DOM_HTML_ELEMENT_TYPE_VIDEO,
|
||||
wbr = c.DOM_HTML_ELEMENT_TYPE_WBR,
|
||||
undef = c.DOM_HTML_ELEMENT_TYPE__UNKNOWN,
|
||||
|
||||
pub fn all() []Tag {
|
||||
@@ -583,11 +638,15 @@ pub const Button = c.dom_html_button_element;
|
||||
pub const Canvas = c.dom_html_canvas_element;
|
||||
pub const DList = c.dom_html_dlist_element;
|
||||
pub const Data = struct { base: *c.dom_html_element };
|
||||
pub const DataList = struct { base: *c.dom_html_element };
|
||||
pub const Dialog = struct { base: *c.dom_html_element };
|
||||
pub const Directory = struct { base: *c.dom_html_element };
|
||||
pub const Div = c.dom_html_div_element;
|
||||
pub const Embed = struct { base: *c.dom_html_element };
|
||||
pub const FieldSet = c.dom_html_field_set_element;
|
||||
pub const Form = c.dom_html_form_element;
|
||||
pub const Font = c.dom_html_font_element;
|
||||
pub const Frame = c.dom_html_frame_element;
|
||||
pub const FrameSet = c.dom_html_frame_set_element;
|
||||
pub const HR = c.dom_html_hr_element;
|
||||
pub const Head = c.dom_html_head_element;
|
||||
@@ -610,6 +669,7 @@ pub const OptGroup = c.dom_html_opt_group_element;
|
||||
pub const Option = c.dom_html_option_element;
|
||||
pub const Output = struct { base: *c.dom_html_element };
|
||||
pub const Paragraph = c.dom_html_paragraph_element;
|
||||
pub const Param = c.dom_html_param_element;
|
||||
pub const Picture = struct { base: *c.dom_html_element };
|
||||
pub const Pre = c.dom_html_pre_element;
|
||||
pub const Progress = struct { base: *c.dom_html_element };
|
||||
|
||||
Reference in New Issue
Block a user