From aa49a54db5346a9813ef1134ea8f4c727bcc0781 Mon Sep 17 00:00:00 2001 From: John Mark Bell Date: Sat, 24 Mar 2012 19:40:06 +0000 Subject: Fix up node_has_attribute svn path=/trunk/netsurf/; revision=13611 --- css/select.c | 36 ++++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/css/select.c b/css/select.c index a5c7288c5..0ce6f77a9 100644 --- a/css/select.c +++ b/css/select.c @@ -982,13 +982,21 @@ css_error node_has_class(void *pw, void *node, css_error node_has_id(void *pw, void *node, lwc_string *name, bool *match) { - xmlNode *n = node; - binding_private *p = n->_private; + dom_node *n = node; + dom_string *attr; + dom_exception err; *match = false; - if (p->id != NULL) { - lwc_string_isequal(name, p->id, match); + /** \todo Assumes an HTML DOM */ + err = dom_html_element_get_id(n, &attr); + if (err != DOM_NO_ERR) + return CSS_OK; + + if (attr != NULL) { + *match = dom_string_lwc_isequal(attr, name); + + dom_string_unref(attr); } return CSS_OK; @@ -1009,11 +1017,23 @@ css_error node_has_id(void *pw, void *node, css_error node_has_attribute(void *pw, void *node, const css_qname *qname, bool *match) { - xmlNode *n = node; - xmlAttr *attr; + dom_node *n = node; + dom_string *name; + dom_exception err; + + err = dom_string_create_interned( + (const uint8_t *) lwc_string_data(qname->name), + lwc_string_length(qname->name), &name); + if (err != DOM_NO_ERR) + return CSS_NOMEM; - attr = xmlHasProp(n, (const xmlChar *) lwc_string_data(qname->name)); - *match = attr != NULL; + err = dom_element_has_attribute(n, name, match); + if (err != DOM_NO_ERR) { + dom_string_unref(name); + return CSS_OK; + } + + dom_string_unref(name); return CSS_OK; } -- cgit v1.2.3