summaryrefslogtreecommitdiff
path: root/css
diff options
context:
space:
mode:
authorMichael Drake <tlsa@netsurf-browser.org>2012-03-28 12:49:39 +0000
committerMichael Drake <tlsa@netsurf-browser.org>2012-03-28 12:49:39 +0000
commit830e53327febd61db7a116ff4c7287436c113245 (patch)
tree00b19be8b8bcacb81ab45bd9c0a6d219b1dac9ba /css
parentca7ef937ff94e50288ae98ce8d3937d89c39a265 (diff)
downloadnetsurf-830e53327febd61db7a116ff4c7287436c113245.tar.gz
netsurf-830e53327febd61db7a116ff4c7287436c113245.tar.bz2
Use experimental libdom functions for named_ancestor_node, named_parent_node and parent_node selection callbacks.
svn path=/trunk/netsurf/; revision=13756
Diffstat (limited to 'css')
-rw-r--r--css/select.c138
1 files changed, 5 insertions, 133 deletions
diff --git a/css/select.c b/css/select.c
index c376cfbf4..73bfb0533 100644
--- a/css/select.c
+++ b/css/select.c
@@ -553,51 +553,8 @@ css_error node_id(void *pw, void *node, lwc_string **id)
css_error named_ancestor_node(void *pw, void *node,
const css_qname *qname, void **ancestor)
{
- dom_node *n = node;
- dom_node *parent;
- dom_exception err;
-
- *ancestor = NULL;
-
- err = dom_node_get_parent_node(n, &n);
- if (err != DOM_NO_ERR)
- return CSS_OK;
-
- while (n != NULL) {
- dom_node_type type;
- dom_string *name;
-
- err = dom_node_get_node_type(n, &type);
- if (err != DOM_NO_ERR) {
- dom_node_unref(n);
- return CSS_OK;
- }
-
- if (type == DOM_ELEMENT_NODE) {
- err = dom_node_get_node_name(n, &name);
- if (err != DOM_NO_ERR) {
- dom_node_unref(n);
- return CSS_OK;
- }
-
- if (dom_string_caseless_lwc_isequal(name,
- qname->name)) {
- dom_node_unref(n);
- /** \todo Sort out reference counting */
- *ancestor = n;
- break;
- }
- }
-
- err = dom_node_get_parent_node(n, &parent);
- if (err != DOM_NO_ERR) {
- dom_node_unref(n);
- return CSS_OK;
- }
-
- dom_node_unref(n);
- n = parent;
- }
+ dom_element_named_ancestor_node(node, qname->name,
+ (struct dom_element **)ancestor);
return CSS_OK;
}
@@ -616,55 +573,8 @@ css_error named_ancestor_node(void *pw, void *node,
css_error named_parent_node(void *pw, void *node,
const css_qname *qname, void **parent)
{
- dom_node *n = node;
- dom_node *p;
- dom_exception err;
-
- *parent = NULL;
-
- /* Find parent element */
- err = dom_node_get_parent_node(n, &n);
- if (err != DOM_NO_ERR)
- return CSS_OK;
-
- while (n != NULL) {
- dom_node_type type;
-
- err = dom_node_get_node_type(n, &type);
- if (err != DOM_NO_ERR) {
- dom_node_unref(n);
- return CSS_OK;
- }
-
- if (type == DOM_ELEMENT_NODE)
- break;
-
- err = dom_node_get_parent_node(n, &p);
- if (err != DOM_NO_ERR) {
- dom_node_unref(n);
- return CSS_OK;
- }
-
- dom_node_unref(n);
- n = p;
- }
-
- if (n != NULL) {
- dom_string *name;
-
- err = dom_node_get_node_name(n, &name);
- if (err != DOM_NO_ERR) {
- dom_node_unref(n);
- return CSS_OK;
- }
-
- dom_node_unref(n);
-
- if (dom_string_caseless_lwc_isequal(name, qname->name)) {
- /** \todo Sort out reference counting */
- *parent = n;
- }
- }
+ dom_element_named_parent_node(node, qname->name,
+ (struct dom_element **)parent);
return CSS_OK;
}
@@ -811,45 +721,7 @@ css_error named_generic_sibling_node(void *pw, void *node,
*/
css_error parent_node(void *pw, void *node, void **parent)
{
- dom_node *n = node;
- dom_node *p;
- dom_exception err;
-
- *parent = NULL;
-
- /* Find parent element */
- err = dom_node_get_parent_node(n, &n);
- if (err != DOM_NO_ERR)
- return CSS_OK;
-
- while (n != NULL) {
- dom_node_type type;
-
- err = dom_node_get_node_type(n, &type);
- if (err != DOM_NO_ERR) {
- dom_node_unref(n);
- return CSS_OK;
- }
-
- if (type == DOM_ELEMENT_NODE)
- break;
-
- err = dom_node_get_parent_node(n, &p);
- if (err != DOM_NO_ERR) {
- dom_node_unref(n);
- return CSS_OK;
- }
-
- dom_node_unref(n);
- n = p;
- }
-
- if (n != NULL) {
- /** \todo Sort out reference counting */
- dom_node_unref(n);
-
- *parent = n;
- }
+ dom_element_parent_node(node, (struct dom_element **)parent);
return CSS_OK;
}