mirror of
https://github.com/lightpanda-io/browser.git
synced 2025-10-28 22:53:28 +00:00
dom: implement NonDocumentTypeChildNode mixin for element
This commit is contained in:
@@ -177,6 +177,24 @@ pub const Element = struct {
|
|||||||
return try children.get_length();
|
return try children.get_length();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NonDocumentTypeChildNode
|
||||||
|
// https://dom.spec.whatwg.org/#interface-nondocumenttypechildnode
|
||||||
|
pub fn get_previousElementSibling(self: *parser.Element) !?Union {
|
||||||
|
const res = try parser.nodePreviousElementSibling(parser.elementToNode(self));
|
||||||
|
if (res == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return try HTMLElem.toInterface(HTMLElem.Union, res.?);
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_nextElementSibling(self: *parser.Element) !?Union {
|
||||||
|
const res = try parser.nodeNextElementSibling(parser.elementToNode(self));
|
||||||
|
if (res == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return try HTMLElem.toInterface(HTMLElem.Union, res.?);
|
||||||
|
}
|
||||||
|
|
||||||
pub fn deinit(_: *parser.Element, _: std.mem.Allocator) void {}
|
pub fn deinit(_: *parser.Element, _: std.mem.Allocator) void {}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -257,4 +275,11 @@ pub fn testExecFn(
|
|||||||
.{ .src = "c.childElementCount", .ex = "3" },
|
.{ .src = "c.childElementCount", .ex = "3" },
|
||||||
};
|
};
|
||||||
try checkCases(js_env, &parentNode);
|
try checkCases(js_env, &parentNode);
|
||||||
|
|
||||||
|
var elementSibling = [_]Case{
|
||||||
|
.{ .src = "let d = document.getElementById('para')", .ex = "undefined" },
|
||||||
|
.{ .src = "d.previousElementSibling.nodeName", .ex = "P" },
|
||||||
|
.{ .src = "d.nextElementSibling", .ex = "null" },
|
||||||
|
};
|
||||||
|
try checkCases(js_env, &elementSibling);
|
||||||
}
|
}
|
||||||
|
|||||||
23
tests/wpt/dom/nodes/Element-nextElementSibling-svg.svg
Normal file
23
tests/wpt/dom/nodes/Element-nextElementSibling-svg.svg
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:h="http://www.w3.org/1999/xhtml"
|
||||||
|
version="1.1"
|
||||||
|
width="100%" height="100%" viewBox="0 0 400 400">
|
||||||
|
<title>nextElementSibling</title>
|
||||||
|
<h:script src="/resources/testharness.js"/>
|
||||||
|
<h:script src="/resources/testharnessreport.js"/>
|
||||||
|
|
||||||
|
<text x="200" y="40" font-size="25" fill="black" text-anchor="middle">Test of nextElementSibling</text>
|
||||||
|
<text id="parentEl" x="200" y="70" font-size="20" fill="black" text-anchor="middle">The result of <tspan id="first_element_child">this test</tspan> is <tspan id="last_element_child" font-weight="bold">unknown.</tspan></text>
|
||||||
|
|
||||||
|
<h:script><![CDATA[
|
||||||
|
test(function() {
|
||||||
|
var parentEl = document.getElementById("parentEl");
|
||||||
|
var fec = document.getElementById("first_element_child");
|
||||||
|
var nes = fec.nextElementSibling;
|
||||||
|
assert_true(!!nes)
|
||||||
|
assert_equals(nes.nodeType, 1)
|
||||||
|
assert_equals(nes.getAttribute("id"), "last_element_child")
|
||||||
|
})
|
||||||
|
]]></h:script>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 985 B |
23
tests/wpt/dom/nodes/Element-nextElementSibling-xhtml.xhtml
Normal file
23
tests/wpt/dom/nodes/Element-nextElementSibling-xhtml.xhtml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<title>nextElementSibling</title>
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Test of nextElementSibling</h1>
|
||||||
|
<div id="log"></div>
|
||||||
|
<p id="parentEl">The result of <span id="first_element_child">this test</span> is <span id="last_element_child" style="font-weight:bold;">unknown.</span></p>
|
||||||
|
<script><![CDATA[
|
||||||
|
test(function() {
|
||||||
|
var parentEl = document.getElementById("parentEl");
|
||||||
|
var fec = document.getElementById("first_element_child");
|
||||||
|
var nes = fec.nextElementSibling;
|
||||||
|
assert_true(!!nes)
|
||||||
|
assert_equals(nes.nodeType, 1)
|
||||||
|
assert_equals(nes.getAttribute("id"), "last_element_child")
|
||||||
|
})
|
||||||
|
]]></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
18
tests/wpt/dom/nodes/Element-nextElementSibling.html
Normal file
18
tests/wpt/dom/nodes/Element-nextElementSibling.html
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<!DOCTYPE HTML>
|
||||||
|
<meta charset=utf-8>
|
||||||
|
<title>nextElementSibling</title>
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<h1>Test of nextElementSibling</h1>
|
||||||
|
<div id="log"></div>
|
||||||
|
<p id="parentEl">The result of <span id="first_element_child">this test</span> is <span id="last_element_child" style="font-weight:bold;">unknown.</span></p>
|
||||||
|
<script>
|
||||||
|
test(function() {
|
||||||
|
var parentEl = document.getElementById("parentEl");
|
||||||
|
var fec = document.getElementById("first_element_child");
|
||||||
|
var nes = fec.nextElementSibling;
|
||||||
|
assert_true(!!nes)
|
||||||
|
assert_equals(nes.nodeType, 1)
|
||||||
|
assert_equals(nes.getAttribute("id"), "last_element_child")
|
||||||
|
})
|
||||||
|
</script>
|
||||||
28
tests/wpt/dom/nodes/Element-previousElementSibling-svg.svg
Normal file
28
tests/wpt/dom/nodes/Element-previousElementSibling-svg.svg
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:h="http://www.w3.org/1999/xhtml"
|
||||||
|
version="1.1"
|
||||||
|
width="100%" height="100%" viewBox="0 0 400 400">
|
||||||
|
<title>previousElementSibling</title>
|
||||||
|
<h:script src="/resources/testharness.js"/>
|
||||||
|
<h:script src="/resources/testharnessreport.js"/>
|
||||||
|
|
||||||
|
<text x="200" y="40" font-size="25" fill="black" text-anchor="middle">Test of previousElementSibling</text>
|
||||||
|
<text id="parentEl" x="200" y="70" font-size="20" fill="black" text-anchor="middle">The result of <tspan id="first_element_child">this test</tspan> is
|
||||||
|
<tspan id="middle_element_child" font-weight="bold">unknown.</tspan>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<tspan id="last_element_child" display="none">fnord</tspan> </text>
|
||||||
|
|
||||||
|
<h:script><![CDATA[
|
||||||
|
test(function() {
|
||||||
|
var parentEl = document.getElementById("parentEl");
|
||||||
|
var lec = document.getElementById("last_element_child");
|
||||||
|
var pes = lec.previousElementSibling;
|
||||||
|
assert_true(!!pes)
|
||||||
|
assert_equals(pes.nodeType, 1)
|
||||||
|
assert_equals(pes.getAttribute("id"), "middle_element_child")
|
||||||
|
})
|
||||||
|
]]></h:script>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.0 KiB |
@@ -0,0 +1,28 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<title>previousElementSibling</title>
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Test of previousElementSibling</h1>
|
||||||
|
<div id="log"></div>
|
||||||
|
<p id="parentEl">The result of <span id="first_element_child">this test</span> is
|
||||||
|
<span id="middle_element_child" style="font-weight:bold;">unknown.</span>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span id="last_element_child" style="display:none;">fnord</span> </p>
|
||||||
|
<script><![CDATA[
|
||||||
|
test(function() {
|
||||||
|
var parentEl = document.getElementById("parentEl");
|
||||||
|
var lec = document.getElementById("last_element_child");
|
||||||
|
var pes = lec.previousElementSibling;
|
||||||
|
assert_true(!!pes)
|
||||||
|
assert_equals(pes.nodeType, 1)
|
||||||
|
assert_equals(pes.getAttribute("id"), "middle_element_child")
|
||||||
|
})
|
||||||
|
]]></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
23
tests/wpt/dom/nodes/Element-previousElementSibling.html
Normal file
23
tests/wpt/dom/nodes/Element-previousElementSibling.html
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<!DOCTYPE HTML>
|
||||||
|
<meta charset=utf-8>
|
||||||
|
<title>previousElementSibling</title>
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<h1>Test of previousElementSibling</h1>
|
||||||
|
<div id="log"></div>
|
||||||
|
<p id="parentEl">The result of <span id="first_element_child">this test</span> is
|
||||||
|
<span id="middle_element_child" style="font-weight:bold;">unknown.</span>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span id="last_element_child" style="display:none;">fnord</span> </p>
|
||||||
|
<script>
|
||||||
|
test(function() {
|
||||||
|
var parentEl = document.getElementById("parentEl");
|
||||||
|
var lec = document.getElementById("last_element_child");
|
||||||
|
var pes = lec.previousElementSibling;
|
||||||
|
assert_true(!!pes)
|
||||||
|
assert_equals(pes.nodeType, 1)
|
||||||
|
assert_equals(pes.getAttribute("id"), "middle_element_child")
|
||||||
|
})
|
||||||
|
</script>
|
||||||
Reference in New Issue
Block a user