mirror of
				https://github.com/lightpanda-io/browser.git
				synced 2025-10-30 15:41:48 +00:00 
			
		
		
		
	dom: add Element AttributeNode funcs
This commit is contained in:
		| @@ -131,6 +131,22 @@ pub const Element = struct { | ||||
|         return try parser.elementGetAttributeNode(self, name); | ||||
|     } | ||||
|  | ||||
|     pub fn _getAttributeNodeNS(self: *parser.Element, ns: []const u8, name: []const u8) !?*parser.Attribute { | ||||
|         return try parser.elementGetAttributeNodeNS(self, ns, name); | ||||
|     } | ||||
|  | ||||
|     pub fn _setAttributeNode(self: *parser.Element, attr: *parser.Attribute) !?*parser.Attribute { | ||||
|         return try parser.elementSetAttributeNode(self, attr); | ||||
|     } | ||||
|  | ||||
|     pub fn _setAttributeNodeNS(self: *parser.Element, attr: *parser.Attribute) !?*parser.Attribute { | ||||
|         return try parser.elementSetAttributeNodeNS(self, attr); | ||||
|     } | ||||
|  | ||||
|     pub fn _removeAttributeNode(self: *parser.Element, attr: *parser.Attribute) !*parser.Attribute { | ||||
|         return try parser.elementRemoveAttributeNode(self, attr); | ||||
|     } | ||||
|  | ||||
|     pub fn _getElementsByTagName( | ||||
|         self: *parser.Element, | ||||
|         alloc: std.mem.Allocator, | ||||
| @@ -370,4 +386,14 @@ pub fn testExecFn( | ||||
|         .{ .src = "e.querySelectorAll('*').length", .ex = "4" }, | ||||
|     }; | ||||
|     try checkCases(js_env, &querySelector); | ||||
|  | ||||
|     var attrNode = [_]Case{ | ||||
|         .{ .src = "let f = document.getElementById('content')", .ex = "undefined" }, | ||||
|         .{ .src = "let ff = document.createAttribute('foo')", .ex = "undefined" }, | ||||
|         .{ .src = "f.setAttributeNode(ff)", .ex = "null" }, | ||||
|         .{ .src = "f.getAttributeNode('foo').name", .ex = "foo" }, | ||||
|         .{ .src = "f.removeAttributeNode(ff).name", .ex = "foo" }, | ||||
|         .{ .src = "f.getAttributeNode('bar')", .ex = "null" }, | ||||
|     }; | ||||
|     try checkCases(js_env, &attrNode); | ||||
| } | ||||
|   | ||||
| @@ -924,6 +924,39 @@ pub fn elementGetAttributeNode(elem: *Element, name: []const u8) !?*Attribute { | ||||
|     return a; | ||||
| } | ||||
|  | ||||
| pub fn elementGetAttributeNodeNS(elem: *Element, ns: []const u8, name: []const u8) !?*Attribute { | ||||
|     var a: ?*Attribute = undefined; | ||||
|     const err = elementVtable(elem).dom_element_get_attribute_node_ns.?( | ||||
|         elem, | ||||
|         try strFromData(ns), | ||||
|         try strFromData(name), | ||||
|         &a, | ||||
|     ); | ||||
|     try DOMErr(err); | ||||
|     return a; | ||||
| } | ||||
|  | ||||
| pub fn elementSetAttributeNode(elem: *Element, attr: *Attribute) !?*Attribute { | ||||
|     var a: ?*Attribute = undefined; | ||||
|     const err = elementVtable(elem).dom_element_set_attribute_node.?(elem, attr, &a); | ||||
|     try DOMErr(err); | ||||
|     return a; | ||||
| } | ||||
|  | ||||
| pub fn elementSetAttributeNodeNS(elem: *Element, attr: *Attribute) !?*Attribute { | ||||
|     var a: ?*Attribute = undefined; | ||||
|     const err = elementVtable(elem).dom_element_set_attribute_node_ns.?(elem, attr, &a); | ||||
|     try DOMErr(err); | ||||
|     return a; | ||||
| } | ||||
|  | ||||
| pub fn elementRemoveAttributeNode(elem: *Element, attr: *Attribute) !*Attribute { | ||||
|     var a: ?*Attribute = undefined; | ||||
|     const err = elementVtable(elem).dom_element_remove_attribute_node.?(elem, attr, &a); | ||||
|     try DOMErr(err); | ||||
|     return a.?; | ||||
| } | ||||
|  | ||||
| pub fn elementHasClass(elem: *Element, class: []const u8) !bool { | ||||
|     var res: bool = undefined; | ||||
|     const err = elementVtable(elem).dom_element_has_class.?( | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Pierre Tachoire
					Pierre Tachoire