summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Silverstone <dsilvers@digital-scurf.org>2012-07-07 17:59:30 +0100
committerDaniel Silverstone <dsilvers@digital-scurf.org>2012-07-07 17:59:30 +0100
commit9c7a1bb6872159035fd6b4640cf9ec62b8630b54 (patch)
tree419779005bccb589561e1e4466d4e8adfa56d064
parente53520a36fd0a38e2297b8bec3ec8b5626f8fed4 (diff)
downloadlibdom-9c7a1bb6872159035fd6b4640cf9ec62b8630b54.tar.gz
libdom-9c7a1bb6872159035fd6b4640cf9ec62b8630b54.tar.bz2
HTMLLinkElement: Implement and enable tests
-rw-r--r--Makefile1
-rw-r--r--include/dom/dom.h1
-rw-r--r--include/dom/html/html_link_element.h49
-rw-r--r--src/html/html_document.c6
-rw-r--r--src/html/html_document_strings.h11
-rw-r--r--src/html/html_link_element.c61
-rw-r--r--src/html/html_link_element.h2
-rw-r--r--test/testcases/tests/level1/html/HTMLLinkElement01.xml (renamed from test/testcases/tests/level1/html/HTMLLinkElement01.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLLinkElement02.xml (renamed from test/testcases/tests/level1/html/HTMLLinkElement02.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLLinkElement03.xml (renamed from test/testcases/tests/level1/html/HTMLLinkElement03.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLLinkElement04.xml (renamed from test/testcases/tests/level1/html/HTMLLinkElement04.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLLinkElement05.xml (renamed from test/testcases/tests/level1/html/HTMLLinkElement05.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLLinkElement06.xml (renamed from test/testcases/tests/level1/html/HTMLLinkElement06.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLLinkElement07.xml (renamed from test/testcases/tests/level1/html/HTMLLinkElement07.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLLinkElement08.xml (renamed from test/testcases/tests/level1/html/HTMLLinkElement08.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLLinkElement09.xml (renamed from test/testcases/tests/level1/html/HTMLLinkElement09.xml.kfail)0
16 files changed, 118 insertions, 13 deletions
diff --git a/Makefile b/Makefile
index 0c83160..ff328e6 100644
--- a/Makefile
+++ b/Makefile
@@ -84,6 +84,7 @@ INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_collection.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_link_element.h
INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_title_element.h
INSTALL_ITEMS := $(INSTALL_ITEMS) $(I):$(Is)/html_form_element.h
diff --git a/include/dom/dom.h b/include/dom/dom.h
index 80b5bd0..1c0e908 100644
--- a/include/dom/dom.h
+++ b/include/dom/dom.h
@@ -43,6 +43,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_link_element.h>
#include <dom/html/html_title_element.h>
#include <dom/html/html_form_element.h>
diff --git a/include/dom/html/html_link_element.h b/include/dom/html/html_link_element.h
index c96d020..f0b1f3c 100644
--- a/include/dom/html/html_link_element.h
+++ b/include/dom/html/html_link_element.h
@@ -10,6 +10,7 @@
#include <stdbool.h>
#include <dom/core/exceptions.h>
+#include <dom/core/string.h>
typedef struct dom_html_link_element dom_html_link_element;
@@ -19,5 +20,53 @@ dom_exception dom_html_link_element_get_disabled(dom_html_link_element *ele,
dom_exception dom_html_link_element_set_disabled(dom_html_link_element *ele,
bool disabled);
+dom_exception dom_html_link_element_get_charset(dom_html_link_element *ele,
+ dom_string **charset);
+
+dom_exception dom_html_link_element_set_charset(dom_html_link_element *ele,
+ dom_string *charset);
+
+dom_exception dom_html_link_element_get_href(dom_html_link_element *ele,
+ dom_string **href);
+
+dom_exception dom_html_link_element_set_href(dom_html_link_element *ele,
+ dom_string *href);
+
+dom_exception dom_html_link_element_get_hreflang(dom_html_link_element *ele,
+ dom_string **hreflang);
+
+dom_exception dom_html_link_element_set_hreflang(dom_html_link_element *ele,
+ dom_string *hreflang);
+
+dom_exception dom_html_link_element_get_media(dom_html_link_element *ele,
+ dom_string **media);
+
+dom_exception dom_html_link_element_set_media(dom_html_link_element *ele,
+ dom_string *media);
+
+dom_exception dom_html_link_element_get_rel(dom_html_link_element *ele,
+ dom_string **rel);
+
+dom_exception dom_html_link_element_set_rel(dom_html_link_element *ele,
+ dom_string *rel);
+
+dom_exception dom_html_link_element_get_rev(dom_html_link_element *ele,
+ dom_string **rev);
+
+dom_exception dom_html_link_element_set_rev(dom_html_link_element *ele,
+ dom_string *rev);
+
+dom_exception dom_html_link_element_get_target(dom_html_link_element *ele,
+ dom_string **target);
+
+dom_exception dom_html_link_element_set_target(dom_html_link_element *ele,
+ dom_string *target);
+
+dom_exception dom_html_link_element_get_type(dom_html_link_element *ele,
+ dom_string **type);
+
+dom_exception dom_html_link_element_set_type(dom_html_link_element *ele,
+ dom_string *type);
+
#endif
diff --git a/src/html/html_document.c b/src/html/html_document.c
index 69b40eb..ae36454 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_link_element.h"
#include "html/html_title_element.h"
#include "html/html_form_element.h"
@@ -182,6 +183,11 @@ _dom_html_document_create_element_internal(dom_html_document *html,
(dom_html_form_element **) result);
}
+ if (dom_string_caseless_isequal(tag_name, html->memoised[hds_LINK])) {
+ return _dom_html_link_element_create(html, namespace, prefix,
+ (dom_html_link_element **) result);
+ }
+
return _dom_html_element_create(html, tag_name, namespace, prefix,
result);
}
diff --git a/src/html/html_document_strings.h b/src/html/html_document_strings.h
index c179e0b..b092c9e 100644
--- a/src/html/html_document_strings.h
+++ b/src/html/html_document_strings.h
@@ -36,12 +36,21 @@ HTML_DOCUMENT_STRINGS_ACTION1(class)
HTML_DOCUMENT_STRINGS_ACTION1(version)
/* Useful attributes used by HTMLHeadElement */
HTML_DOCUMENT_STRINGS_ACTION1(profile)
+/* Useful attributes used by HTMLLinkElement */
+HTML_DOCUMENT_STRINGS_ACTION1(charset)
+HTML_DOCUMENT_STRINGS_ACTION1(href)
+HTML_DOCUMENT_STRINGS_ACTION1(hreflang)
+HTML_DOCUMENT_STRINGS_ACTION1(media)
+HTML_DOCUMENT_STRINGS_ACTION1(rel)
+HTML_DOCUMENT_STRINGS_ACTION1(rev)
+HTML_DOCUMENT_STRINGS_ACTION1(target)
+HTML_DOCUMENT_STRINGS_ACTION1(type)
/* Useful attributes used by HTMLFormElement */
HTML_DOCUMENT_STRINGS_ACTION(accept_charset,accept-charset)
HTML_DOCUMENT_STRINGS_ACTION1(action)
HTML_DOCUMENT_STRINGS_ACTION1(enctype)
HTML_DOCUMENT_STRINGS_ACTION1(method)
-HTML_DOCUMENT_STRINGS_ACTION1(target)
+/* HTML_DOCUMENT_STRINGS_ACTION1(target) */
/* Names for elements which get specialised. */
HTML_DOCUMENT_STRINGS_ACTION1(HTML)
HTML_DOCUMENT_STRINGS_ACTION1(HEAD)
diff --git a/src/html/html_link_element.c b/src/html/html_link_element.c
index 92ca4f5..cf3d0e9 100644
--- a/src/html/html_link_element.c
+++ b/src/html/html_link_element.c
@@ -8,6 +8,7 @@
#include <assert.h>
#include <stdlib.h>
+#include "html/html_document.h"
#include "html/html_link_element.h"
#include "core/node.h"
@@ -29,6 +30,7 @@ static struct dom_element_protected_vtable _protect_vtable = {
* \return DOM_NO_ERR on success, appropriate dom_exception on failure.
*/
dom_exception _dom_html_link_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
struct dom_html_link_element **ele)
{
struct dom_node_internal *node;
@@ -42,7 +44,7 @@ dom_exception _dom_html_link_element_create(struct dom_html_document *doc,
node->base.vtable = &_dom_element_vtable;
node->vtable = &_protect_vtable;
- return _dom_html_link_element_initialise(doc, *ele);
+ return _dom_html_link_element_initialise(doc, namespace, prefix, *ele);
}
/**
@@ -53,19 +55,12 @@ dom_exception _dom_html_link_element_create(struct dom_html_document *doc,
* \return DOM_NO_ERR on success, appropriate dom_exception on failure.
*/
dom_exception _dom_html_link_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
struct dom_html_link_element *ele)
{
- dom_string *name = NULL;
- dom_exception err;
-
- err = dom_string_create((const uint8_t *) "HEAD", SLEN("HEAD"), &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_LINK],
+ namespace, prefix);
}
/**
@@ -151,3 +146,45 @@ dom_exception _dom_html_link_element_copy(dom_node_internal *old,
return _dom_html_element_copy(old, copy);
}
+/*-----------------------------------------------------------------------*/
+/* API functions */
+
+#define SIMPLE_GET_SET(fattr,attr) \
+dom_exception dom_html_link_element_get_##fattr(dom_html_link_element *element, \
+ dom_string **fattr) \
+{ \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->memoised[hds_##attr]; \
+ \
+ ret = dom_element_get_attribute(element, _memo_##attr, fattr); \
+ \
+ return ret; \
+} \
+ \
+dom_exception dom_html_link_element_set_##fattr(dom_html_link_element *element, \
+ dom_string *fattr) \
+{ \
+ dom_exception ret; \
+ dom_string *_memo_##attr; \
+ \
+ _memo_##attr = \
+ ((struct dom_html_document *) \
+ ((struct dom_node_internal *)element)->owner)->memoised[hds_##attr]; \
+ \
+ ret = dom_element_set_attribute(element, _memo_##attr, fattr); \
+ \
+ return ret; \
+}
+
+SIMPLE_GET_SET(charset,charset)
+SIMPLE_GET_SET(href,href)
+SIMPLE_GET_SET(hreflang,hreflang)
+SIMPLE_GET_SET(media,media)
+SIMPLE_GET_SET(rel,rel)
+SIMPLE_GET_SET(rev,rev)
+SIMPLE_GET_SET(target,target)
+SIMPLE_GET_SET(type,type)
diff --git a/src/html/html_link_element.h b/src/html/html_link_element.h
index b281cfb..960dcdc 100644
--- a/src/html/html_link_element.h
+++ b/src/html/html_link_element.h
@@ -19,10 +19,12 @@ struct dom_html_link_element {
/* Create a dom_html_link_element object */
dom_exception _dom_html_link_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
struct dom_html_link_element **ele);
/* Initialise a dom_html_link_element object */
dom_exception _dom_html_link_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
struct dom_html_link_element *ele);
/* Finalise a dom_html_link_element object */
diff --git a/test/testcases/tests/level1/html/HTMLLinkElement01.xml.kfail b/test/testcases/tests/level1/html/HTMLLinkElement01.xml
index c9e2d16..c9e2d16 100644
--- a/test/testcases/tests/level1/html/HTMLLinkElement01.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLLinkElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLLinkElement02.xml.kfail b/test/testcases/tests/level1/html/HTMLLinkElement02.xml
index ab0105a..ab0105a 100644
--- a/test/testcases/tests/level1/html/HTMLLinkElement02.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLLinkElement02.xml
diff --git a/test/testcases/tests/level1/html/HTMLLinkElement03.xml.kfail b/test/testcases/tests/level1/html/HTMLLinkElement03.xml
index fff36db..fff36db 100644
--- a/test/testcases/tests/level1/html/HTMLLinkElement03.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLLinkElement03.xml
diff --git a/test/testcases/tests/level1/html/HTMLLinkElement04.xml.kfail b/test/testcases/tests/level1/html/HTMLLinkElement04.xml
index 924d945..924d945 100644
--- a/test/testcases/tests/level1/html/HTMLLinkElement04.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLLinkElement04.xml
diff --git a/test/testcases/tests/level1/html/HTMLLinkElement05.xml.kfail b/test/testcases/tests/level1/html/HTMLLinkElement05.xml
index cec4f35..cec4f35 100644
--- a/test/testcases/tests/level1/html/HTMLLinkElement05.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLLinkElement05.xml
diff --git a/test/testcases/tests/level1/html/HTMLLinkElement06.xml.kfail b/test/testcases/tests/level1/html/HTMLLinkElement06.xml
index 400e8ed..400e8ed 100644
--- a/test/testcases/tests/level1/html/HTMLLinkElement06.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLLinkElement06.xml
diff --git a/test/testcases/tests/level1/html/HTMLLinkElement07.xml.kfail b/test/testcases/tests/level1/html/HTMLLinkElement07.xml
index 71bbd8d..71bbd8d 100644
--- a/test/testcases/tests/level1/html/HTMLLinkElement07.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLLinkElement07.xml
diff --git a/test/testcases/tests/level1/html/HTMLLinkElement08.xml.kfail b/test/testcases/tests/level1/html/HTMLLinkElement08.xml
index 657237d..657237d 100644
--- a/test/testcases/tests/level1/html/HTMLLinkElement08.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLLinkElement08.xml
diff --git a/test/testcases/tests/level1/html/HTMLLinkElement09.xml.kfail b/test/testcases/tests/level1/html/HTMLLinkElement09.xml
index 6fb55a8..6fb55a8 100644
--- a/test/testcases/tests/level1/html/HTMLLinkElement09.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLLinkElement09.xml