diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/core/implementation.c | 27 | ||||
-rw-r--r-- | src/html/html_document.c | 4 | ||||
-rw-r--r-- | src/html/html_document.h | 2 |
3 files changed, 28 insertions, 5 deletions
diff --git a/src/core/implementation.c b/src/core/implementation.c index 58adaf3..848457e 100644 --- a/src/core/implementation.c +++ b/src/core/implementation.c @@ -12,6 +12,8 @@ #include "core/document.h" #include "core/document_type.h" +#include "html/html_document.h" + #include "utils/namespace.h" #include "utils/utils.h" #include "utils/validate.h" @@ -138,6 +140,7 @@ dom_exception dom_implementation_create_document_type( /** * Create a document node * + * \param impl_type The type of document object to create * \param namespace The namespace URI of the document element * \param qname The qualified name of the document element * \param doctype The type of document to create @@ -168,6 +171,7 @@ dom_exception dom_implementation_create_document_type( * finished with it. */ dom_exception dom_implementation_create_document( + uint32_t impl_type, const char *namespace, const char *qname, struct dom_document_type *doctype, dom_alloc alloc, void *pw, @@ -213,8 +217,27 @@ dom_exception dom_implementation_create_document( return DOM_WRONG_DOCUMENT_ERR; } - /* Create document object */ - err = _dom_document_create(alloc, pw, daf, &d); + /* Create document object that reflects the required APIs */ + /** \todo Why do these have different APIs? + * Why is the html document constructor public? */ + /** \todo Of course, none of the HTML stuff actually works, + * so enabling it results in total breakage of the testsuite */ +#ifdef WITH_NON_BROKEN_HTML_IMPLEMENTATION + if (impl_type == DOM_IMPLEMENTATION_HTML) { + dom_html_document *html_doc; + + err = dom_html_document_create(alloc, pw, NULL, NULL, + daf, NULL, DOM_HTML_PARSER, &html_doc); + + d = (dom_document *) html_doc; + } else +#else + UNUSED(impl_type); +#endif + { + err = _dom_document_create(alloc, pw, daf, &d); + } + if (err != DOM_NO_ERR) { dom_string_unref(qname_s); dom_string_unref(namespace_s); diff --git a/src/html/html_document.c b/src/html/html_document.c index d62714e..a2845aa 100644 --- a/src/html/html_document.c +++ b/src/html/html_document.c @@ -15,7 +15,7 @@ /* Create a HTMLDocument */ dom_exception dom_html_document_create(dom_alloc alloc, void *pw, dom_msg msg, void *msg_pw, - dom_events_default_action_fetcher daf, dom_ui_handler ui, + dom_events_default_action_fetcher daf, dom_ui_handler *ui, dom_parser_type pt, dom_html_document **doc) { assert(alloc != NULL); @@ -30,7 +30,7 @@ dom_exception dom_html_document_create(dom_alloc alloc, void *pw, dom_msg msg, /* Initialise a HTMLDocument */ dom_exception _dom_html_document_initialise(dom_html_document *doc, dom_alloc alloc, void *pw, dom_msg msg, void *msg_pw, - dom_events_default_action_fetcher daf, dom_ui_handler ui, + dom_events_default_action_fetcher daf, dom_ui_handler *ui, dom_parser_type pt) { UNUSED(doc); diff --git a/src/html/html_document.h b/src/html/html_document.h index 4abab09..31770ef 100644 --- a/src/html/html_document.h +++ b/src/html/html_document.h @@ -36,7 +36,7 @@ struct dom_html_document { /* Initialise a HTMLDocument */ dom_exception _dom_html_document_initialise(dom_html_document *doc, dom_alloc alloc, void *pw, dom_msg msg, void *msg_pw, - dom_events_default_action_fetcher daf, dom_ui_handler ui, + dom_events_default_action_fetcher daf, dom_ui_handler *ui, dom_parser_type pt); /* Finalise a HTMLDocument */ void _dom_html_document_finalise(dom_html_document *doc); |