summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Sanders <vince@kyllikki.org>2012-11-18 17:35:52 +0000
committerVincent Sanders <vince@kyllikki.org>2012-11-18 17:35:52 +0000
commitfa9046fc97cb73329652c86d3c77376d32935333 (patch)
treec3ef12bae8f07485aa93d6fc780aeb4781391808
parent99d3633e0348fcff3f99d87696b57a70cbdcaf4d (diff)
downloadnetsurf-fa9046fc97cb73329652c86d3c77376d32935333.tar.gz
netsurf-fa9046fc97cb73329652c86d3c77376d32935333.tar.bz2
implement childElementCount
-rw-r--r--javascript/jsapi/htmlelement.bnd27
-rw-r--r--test/js/dom-element-childElementCount.html11
-rw-r--r--test/js/index.html1
3 files changed, 39 insertions, 0 deletions
diff --git a/javascript/jsapi/htmlelement.bnd b/javascript/jsapi/htmlelement.bnd
index 0730ad44b..71bb31bc1 100644
--- a/javascript/jsapi/htmlelement.bnd
+++ b/javascript/jsapi/htmlelement.bnd
@@ -187,3 +187,30 @@ getter nextElementSibling %{
}
}
%}
+
+getter childElementCount %{
+ dom_node *element;
+ dom_exception exc;
+ dom_node_type node_type;
+ dom_node *next_node;
+
+ exc = dom_node_get_first_child(private->node, &element);
+ if (exc != DOM_NO_ERR) {
+ return JS_FALSE;
+ }
+
+ while (element != NULL) {
+ exc = dom_node_get_node_type(element, &node_type);
+ if ((exc == DOM_NO_ERR) && (node_type == DOM_ELEMENT_NODE)) {
+ jsret += 1;
+ }
+
+ exc = dom_node_get_next_sibling(element, &next_node);
+ dom_node_unref(element);
+ if (exc == DOM_NO_ERR) {
+ element = next_node;
+ } else {
+ element = NULL;
+ }
+ }
+%}
diff --git a/test/js/dom-element-childElementCount.html b/test/js/dom-element-childElementCount.html
new file mode 100644
index 000000000..ec4b7f89a
--- /dev/null
+++ b/test/js/dom-element-childElementCount.html
@@ -0,0 +1,11 @@
+<html>
+<head>
+<link rel="stylesheet" type="text/css" href="tst.css">
+<title>DOM childElementCount reference</title>
+</head>
+<body>
+<h1>DOM childElementCount reference</h1>
+<p><b>head.childElementCount:</b> <script>document.write(document.head.childElementCount);</script></p>
+<p><b>body.childElementCount:</b> <script>document.write(document.body.childElementCount);</script></p>
+</body>
+</html>
diff --git a/test/js/index.html b/test/js/index.html
index 5341a7482..c59b54157 100644
--- a/test/js/index.html
+++ b/test/js/index.html
@@ -27,6 +27,7 @@
<li><a href="dom-element-firstElementChild.html">firstElementChild</a></li>
<li><a href="dom-element-lastElementChild.html">lastElementChild</a></li>
<li><a href="dom-element-next_prev_ElementSibling.html">previousElementSibling nextElementSibling</a></li>
+<li><a href="dom-element-childElementCount.html">childElementCount</a></li>
<li><a href="doc-dom2.html">getElementById</a></li>
<li><a href="dom-getElementsByTagName.html">getElementsByTagName</a></li>