summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Silverstone <dsilvers@digital-scurf.org>2012-07-07 15:31:40 +0100
committerDaniel Silverstone <dsilvers@digital-scurf.org>2012-07-07 15:57:17 +0100
commitabe5525621dcea476d501cda6d2fe8065278b772 (patch)
tree57bb6b019ddafa022ff2cb12d34110448b11cbd7
parent90b1ce030de101026f33ed0c951b0d07f06792fa (diff)
downloadlibdom-abe5525621dcea476d501cda6d2fe8065278b772.tar.gz
libdom-abe5525621dcea476d501cda6d2fe8065278b772.tar.bz2
HTMLTitleElement: Implementation and enabling of test
-rw-r--r--Makefile1
-rw-r--r--include/dom/dom.h1
-rw-r--r--src/html/TODO2
-rw-r--r--src/html/html_document.c16
-rw-r--r--src/html/html_title_element.c20
-rw-r--r--src/html/html_title_element.h2
-rw-r--r--test/DOMTSHandler.pm13
-rw-r--r--test/testcases/tests/level1/html/HTMLTitleElement01.xml (renamed from test/testcases/tests/level1/html/HTMLTitleElement01.xml.kfail)0
8 files changed, 29 insertions, 26 deletions
diff --git a/Makefile b/Makefile
index eab868d..96e2d4e 100644
--- a/Makefile
+++ b/Makefile
@@ -83,6 +83,7 @@ INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_document.h
INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_element.h
INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_html_element.h
INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_head_element.h
+INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_title_element.h
INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_form_element.h
INSTALL_ITEMS := $(INSTALL_ITEMS) /lib/pkgconfig:lib$(COMPONENT).pc.in
diff --git a/include/dom/dom.h b/include/dom/dom.h
index 77a40b3..20cd164 100644
--- a/include/dom/dom.h
+++ b/include/dom/dom.h
@@ -42,6 +42,7 @@
#include <dom/html/html_element.h>
#include <dom/html/html_html_element.h>
#include <dom/html/html_head_element.h>
+#include <dom/html/html_title_element.h>
#include <dom/html/html_form_element.h>
/* DOM Events header */
diff --git a/src/html/TODO b/src/html/TODO
index 491e916..fa5f8f0 100644
--- a/src/html/TODO
+++ b/src/html/TODO
@@ -4,7 +4,7 @@ HTMLElement html_element UNFINISHED
HTMLHtmlElement html_html_element DONE
HTMLHeadElement html_head_element DONE
HTMLLinkElement html_link_element MISSING
-HTMLTitleElement html_title_element MISSING
+HTMLTitleElement html_title_element DONE
HTMLMetaElement html_meta_element MISSING
HTMLBaseElement html_base_element MISSING
HTMLIsIndexElement html_isindex_element MISSING
diff --git a/src/html/html_document.c b/src/html/html_document.c
index 6978e06..11ee899 100644
--- a/src/html/html_document.c
+++ b/src/html/html_document.c
@@ -13,6 +13,7 @@
#include "html/html_collection.h"
#include "html/html_html_element.h"
#include "html/html_head_element.h"
+#include "html/html_title_element.h"
#include "core/string.h"
#include "utils/namespace.h"
@@ -170,6 +171,11 @@ _dom_html_document_create_element_internal(dom_html_document *html,
(dom_html_head_element **) result);
}
+ if (dom_string_caseless_isequal(tag_name, html->memoised[hds_TITLE])) {
+ return _dom_html_title_element_create(html, namespace, prefix,
+ (dom_html_title_element **) result);
+ }
+
return _dom_html_element_create(html, tag_name, namespace, prefix,
result);
}
@@ -293,20 +299,12 @@ dom_exception _dom_html_document_get_title(dom_html_document *doc,
*title = dom_string_ref(doc->title);
} else {
dom_element *node;
- dom_string *title_str;
dom_nodelist *nodes;
unsigned long len;
- exc = dom_string_create_interned((uint8_t*)"title",
- 5, &title_str);
- if (exc != DOM_NO_ERR) {
- return exc;
- }
-
exc = dom_document_get_elements_by_tag_name(doc,
- title_str,
+ doc->memoised[hds_TITLE],
&nodes);
- dom_string_unref(title_str);
if (exc != DOM_NO_ERR) {
return exc;
}
diff --git a/src/html/html_title_element.c b/src/html/html_title_element.c
index ea4d24c..73870a6 100644
--- a/src/html/html_title_element.c
+++ b/src/html/html_title_element.c
@@ -11,6 +11,7 @@
#include <dom/core/characterdata.h>
#include <dom/core/text.h>
+#include "html/html_document.h"
#include "html/html_title_element.h"
#include "core/node.h"
@@ -31,6 +32,7 @@ static struct dom_element_protected_vtable _protect_vtable = {
* \return DOM_NO_ERR on success, appropriate dom_exception on failure.
*/
dom_exception _dom_html_title_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
struct dom_html_title_element **ele)
{
struct dom_node_internal *node;
@@ -44,7 +46,7 @@ dom_exception _dom_html_title_element_create(struct dom_html_document *doc,
node->base.vtable = &_dom_element_vtable;
node->vtable = &_protect_vtable;
- return _dom_html_title_element_initialise(doc, *ele);
+ return _dom_html_title_element_initialise(doc, namespace, prefix, *ele);
}
/**
@@ -55,20 +57,12 @@ dom_exception _dom_html_title_element_create(struct dom_html_document *doc,
* \return DOM_NO_ERR on success, appropriate dom_exception on failure.
*/
dom_exception _dom_html_title_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
struct dom_html_title_element *ele)
{
- dom_string *name = NULL;
- dom_exception err;
-
- err = dom_string_create((const uint8_t *) "TITLE", SLEN("TITLE"),
- &name);
- if (err != DOM_NO_ERR)
- return err;
-
- err = _dom_html_element_initialise(doc, &ele->base, name, NULL, NULL);
- dom_string_unref(name);
-
- return err;
+ return _dom_html_element_initialise(doc, &ele->base,
+ doc->memoised[hds_TITLE],
+ namespace, prefix);
}
/**
diff --git a/src/html/html_title_element.h b/src/html/html_title_element.h
index 958c3fe..51adaf9 100644
--- a/src/html/html_title_element.h
+++ b/src/html/html_title_element.h
@@ -19,10 +19,12 @@ struct dom_html_title_element {
/* Create a dom_html_title_element object */
dom_exception _dom_html_title_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
struct dom_html_title_element **ele);
/* Initialise a dom_html_title_element object */
dom_exception _dom_html_title_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
struct dom_html_title_element *ele);
/* Finalise a dom_html_title_element object */
diff --git a/test/DOMTSHandler.pm b/test/DOMTSHandler.pm
index dd5a7a8..37f6166 100644
--- a/test/DOMTSHandler.pm
+++ b/test/DOMTSHandler.pm
@@ -788,7 +788,7 @@ sub generate_attribute_fetcher {
}
my $fetcher = to_attribute_fetcher($ats{'interface'}, "$en");
-
+ my $cast = to_attribute_cast($ats{'interface'});
my $unref = 0;
my $temp_node = 0;
# Deal with the situation like
@@ -807,14 +807,14 @@ sub generate_attribute_fetcher {
my $t = type_to_ctype($self->{'var'}->{$ats{'var'}});
$tnode_index ++;
print "\t$t tnode$tnode_index = NULL;\n";
- print "\texp = $fetcher($ats{'obj'}, \&tnode$tnode_index);\n";
+ print "\texp = $fetcher(${cast}$ats{'obj'}, \&tnode$tnode_index);\n";
# The ats{'obj'} must have been added to cleanup stack
$unref = 1;
# Indicate that we have created a temp node
$temp_node = 1;
} else {
$unref = $self->param_unref($ats{'var'});
- print "\texp = $fetcher($ats{'obj'}, \&$ats{'var'});\n";
+ print "\texp = $fetcher(${cast}$ats{'obj'}, \&$ats{'var'});\n";
}
@@ -1379,6 +1379,13 @@ sub to_attribute_accessor {
return $ret;
}
+sub to_attribute_cast {
+ my $type = shift;
+ my $ret = get_prefix($type);
+ $ret =~ s/h_t_m_l/html/;
+ return "(${ret} *)";
+}
+
sub get_prefix {
my $type = shift;
diff --git a/test/testcases/tests/level1/html/HTMLTitleElement01.xml.kfail b/test/testcases/tests/level1/html/HTMLTitleElement01.xml
index 9b95d95..9b95d95 100644
--- a/test/testcases/tests/level1/html/HTMLTitleElement01.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTitleElement01.xml