mirror of
https://github.com/lightpanda-io/browser.git
synced 2025-10-29 15:13:28 +00:00
remove netsurf.elementHTMLGetTagType
This commit is contained in:
@@ -62,7 +62,7 @@ pub fn writeNode(node: *parser.Node, opts: Opts, writer: anytype) anyerror!void
|
|||||||
switch (try parser.nodeType(node)) {
|
switch (try parser.nodeType(node)) {
|
||||||
.element => {
|
.element => {
|
||||||
// open the tag
|
// open the tag
|
||||||
const tag_type = try parser.elementHTMLGetTagType(@ptrCast(node));
|
const tag_type = try parser.nodeHTMLGetTagType(node) orelse .undef;
|
||||||
if (tag_type == .script and opts.exclude_scripts) {
|
if (tag_type == .script and opts.exclude_scripts) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -150,7 +150,7 @@ pub fn writeChildren(root: *parser.Node, opts: Opts, writer: anytype) !void {
|
|||||||
// area, base, br, col, embed, hr, img, input, link, meta, source, track, wbr
|
// area, base, br, col, embed, hr, img, input, link, meta, source, track, wbr
|
||||||
// https://html.spec.whatwg.org/#void-elements
|
// https://html.spec.whatwg.org/#void-elements
|
||||||
fn isVoid(elem: *parser.Element) !bool {
|
fn isVoid(elem: *parser.Element) !bool {
|
||||||
const tag = try parser.elementHTMLGetTagType(@as(*parser.ElementHTML, @ptrCast(elem)));
|
const tag = try parser.elementTag(elem);
|
||||||
return switch (tag) {
|
return switch (tag) {
|
||||||
.area, .base, .br, .col, .embed, .hr, .img, .input, .link => true,
|
.area, .base, .br, .col, .embed, .hr, .img, .input, .link => true,
|
||||||
.meta, .source, .track, .wbr => true,
|
.meta, .source, .track, .wbr => true,
|
||||||
|
|||||||
@@ -340,7 +340,7 @@ pub const Tag = enum(u8) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const testing = @import("../testing.zig");
|
const testing = @import("../testing.zig");
|
||||||
test "Tag.elementTag" {
|
test "Tag.fromString" {
|
||||||
try testing.expect(try Tag.fromString("ABBR") == .abbr);
|
try testing.expect(try Tag.fromString("ABBR") == .abbr);
|
||||||
try testing.expect(try Tag.fromString("abbr") == .abbr);
|
try testing.expect(try Tag.fromString("abbr") == .abbr);
|
||||||
|
|
||||||
@@ -1428,13 +1428,13 @@ pub inline fn nodeToDocument(node: *Node) *Document {
|
|||||||
return @as(*Document, @ptrCast(node));
|
return @as(*Document, @ptrCast(node));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Combination of nodeToElement + elementHTMLGetTagType
|
// Combination of nodeToElement + elementTag
|
||||||
pub fn nodeHTMLGetTagType(node: *Node) !?Tag {
|
pub fn nodeHTMLGetTagType(node: *Node) !?Tag {
|
||||||
if (try nodeType(node) != .element) {
|
if (try nodeType(node) != .element) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
const html_element: *ElementHTML = @ptrCast(node);
|
|
||||||
return try elementHTMLGetTagType(html_element);
|
return try elementTag(@ptrCast(node));
|
||||||
}
|
}
|
||||||
|
|
||||||
// CharacterData
|
// CharacterData
|
||||||
@@ -1595,6 +1595,11 @@ fn elementVtable(elem: *Element) c.dom_element_vtable {
|
|||||||
return getVtable(c.dom_element_vtable, Element, elem);
|
return getVtable(c.dom_element_vtable, Element, elem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn elementTag(elem: *Element) !Tag {
|
||||||
|
const tagname = try elementGetTagName(elem) orelse return .undef;
|
||||||
|
return Tag.fromString(tagname) catch .undef;
|
||||||
|
}
|
||||||
|
|
||||||
pub fn elementGetTagName(elem: *Element) !?[]const u8 {
|
pub fn elementGetTagName(elem: *Element) !?[]const u8 {
|
||||||
var s: ?*String = undefined;
|
var s: ?*String = undefined;
|
||||||
const err = elementVtable(elem).dom_element_get_tag_name.?(elem, &s);
|
const err = elementVtable(elem).dom_element_get_tag_name.?(elem, &s);
|
||||||
@@ -1797,21 +1802,6 @@ fn elementHTMLVtable(elem_html: *ElementHTML) c.dom_html_element_vtable {
|
|||||||
return getVtable(c.dom_html_element_vtable, ElementHTML, elem_html);
|
return getVtable(c.dom_html_element_vtable, ElementHTML, elem_html);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn elementHTMLGetTagType(elem_html: *ElementHTML) !Tag {
|
|
||||||
var tag_type: c.dom_html_element_type = undefined;
|
|
||||||
const err = elementHTMLVtable(elem_html).dom_html_element_get_tag_type.?(elem_html, &tag_type);
|
|
||||||
try DOMErr(err);
|
|
||||||
|
|
||||||
if (tag_type >= 255) {
|
|
||||||
// This is questionable, but std.meta.intToEnum has more overhead
|
|
||||||
// Added this because this WPT test started to fail once we
|
|
||||||
// introduced an SVGElement:
|
|
||||||
// html/dom/documents/dom-tree-accessors/document.title-09.html
|
|
||||||
return Tag.undef;
|
|
||||||
}
|
|
||||||
return @as(Tag, @enumFromInt(tag_type));
|
|
||||||
}
|
|
||||||
|
|
||||||
// HTMLScriptElement
|
// HTMLScriptElement
|
||||||
|
|
||||||
// scriptToElt is an helper to convert an script to an element.
|
// scriptToElt is an helper to convert an script to an element.
|
||||||
|
|||||||
@@ -365,7 +365,7 @@ pub const Page = struct {
|
|||||||
const current = next.?;
|
const current = next.?;
|
||||||
|
|
||||||
const e = parser.nodeToElement(current);
|
const e = parser.nodeToElement(current);
|
||||||
const tag = try parser.elementHTMLGetTagType(@as(*parser.ElementHTML, @ptrCast(e)));
|
const tag = try parser.elementTag(e);
|
||||||
|
|
||||||
if (tag != .script) {
|
if (tag != .script) {
|
||||||
// ignore non-js script.
|
// ignore non-js script.
|
||||||
@@ -809,7 +809,7 @@ pub const Page = struct {
|
|||||||
if (try parser.elementGetAttribute(element, "form")) |form_id| {
|
if (try parser.elementGetAttribute(element, "form")) |form_id| {
|
||||||
const document = parser.documentHTMLToDocument(self.window.document);
|
const document = parser.documentHTMLToDocument(self.window.document);
|
||||||
const form_element = try parser.documentGetElementById(document, form_id) orelse return null;
|
const form_element = try parser.documentGetElementById(document, form_id) orelse return null;
|
||||||
if (try parser.elementHTMLGetTagType(@ptrCast(form_element)) == .form) {
|
if (try parser.elementTag(@ptrCast(form_element)) == .form) {
|
||||||
return @ptrCast(form_element);
|
return @ptrCast(form_element);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -141,7 +141,7 @@ fn collectForm(form: *parser.Form, submitter_: ?*parser.ElementHTML, page: *Page
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
const tag = try parser.elementHTMLGetTagType(@as(*parser.ElementHTML, @ptrCast(element)));
|
const tag = try parser.elementTag(element);
|
||||||
switch (tag) {
|
switch (tag) {
|
||||||
.input => {
|
.input => {
|
||||||
const tpe = try parser.inputGetType(@ptrCast(element));
|
const tpe = try parser.inputGetType(@ptrCast(element));
|
||||||
@@ -246,7 +246,7 @@ fn collectSelectValues(arena: Allocator, select: *parser.Select, name: []const u
|
|||||||
fn getSubmitterName(submitter_: ?*parser.ElementHTML) !?[]const u8 {
|
fn getSubmitterName(submitter_: ?*parser.ElementHTML) !?[]const u8 {
|
||||||
const submitter = submitter_ orelse return null;
|
const submitter = submitter_ orelse return null;
|
||||||
|
|
||||||
const tag = try parser.elementHTMLGetTagType(submitter);
|
const tag = try parser.elementTag(@ptrCast(submitter));
|
||||||
const element: *parser.Element = @ptrCast(submitter);
|
const element: *parser.Element = @ptrCast(submitter);
|
||||||
const name = try parser.elementGetAttribute(element, "name");
|
const name = try parser.elementGetAttribute(element, "name");
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user