From bec871152864b1cfb42484505a6622f7f524a405 Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Sun, 18 Nov 2012 12:38:07 +0000 Subject: implement lastElementChild --- javascript/jsapi/htmlelement.bnd | 31 ++++++++++++++++++++++++++++++ test/js/doc-dom1.html | 11 ----------- test/js/dom-element-firstElementChild.html | 11 +++++++++++ test/js/dom-element-lastElementChild.html | 11 +++++++++++ test/js/index.html | 3 ++- 5 files changed, 55 insertions(+), 12 deletions(-) delete mode 100644 test/js/doc-dom1.html create mode 100644 test/js/dom-element-firstElementChild.html create mode 100644 test/js/dom-element-lastElementChild.html diff --git a/javascript/jsapi/htmlelement.bnd b/javascript/jsapi/htmlelement.bnd index 3b533ebef..898f78188 100644 --- a/javascript/jsapi/htmlelement.bnd +++ b/javascript/jsapi/htmlelement.bnd @@ -89,6 +89,37 @@ getter firstElementChild %{ %} getter lastElementChild %{ + dom_node *element; + dom_exception exc; + dom_node_type node_type; + dom_node *sib_node; + + exc = dom_node_get_last_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)) { + /* found it */ + jsret = jsapi_new_HTMLElement(cx, + NULL, + NULL, + (dom_element *)element, + private->htmlc); + break; + } + + exc = dom_node_get_previous_sibling(element, &sib_node); + dom_node_unref(element); + if (exc == DOM_NO_ERR) { + element = sib_node; + } else { + element = NULL; + } + + } %} getter previousElementSibling %{ diff --git a/test/js/doc-dom1.html b/test/js/doc-dom1.html deleted file mode 100644 index 2d7762d00..000000000 --- a/test/js/doc-dom1.html +++ /dev/null @@ -1,11 +0,0 @@ - - -DOM firstElementChild reference - - - -

DOM firstElementChild reference

-

head.firstElementChild:

-

body.firstElementChild:

- - diff --git a/test/js/dom-element-firstElementChild.html b/test/js/dom-element-firstElementChild.html new file mode 100644 index 000000000..2d7762d00 --- /dev/null +++ b/test/js/dom-element-firstElementChild.html @@ -0,0 +1,11 @@ + + +DOM firstElementChild reference + + + +

DOM firstElementChild reference

+

head.firstElementChild:

+

body.firstElementChild:

+ + diff --git a/test/js/dom-element-lastElementChild.html b/test/js/dom-element-lastElementChild.html new file mode 100644 index 000000000..e4e9f11cb --- /dev/null +++ b/test/js/dom-element-lastElementChild.html @@ -0,0 +1,11 @@ + + + +DOM lastElementChild reference + + +

DOM lastElementChild reference

+

head.lastElementChild:

+

body.lastElementChild:

+ + diff --git a/test/js/index.html b/test/js/index.html index f02c4df32..70e4088cf 100644 --- a/test/js/index.html +++ b/test/js/index.html @@ -24,7 +24,8 @@

DOM tests

Reference method tests