diff options
Diffstat (limited to 'src/html')
57 files changed, 449 insertions, 109 deletions
diff --git a/src/html/Makefile b/src/html/Makefile index c98ce9a..db765ad 100644 --- a/src/html/Makefile +++ b/src/html/Makefile @@ -1,24 +1,62 @@ # Sources DIR_SOURCES := \ - html_document.c html_collection.c html_options_collection.c \ - html_element.c html_html_element.c html_head_element.c \ - html_link_element.c html_title_element.c html_meta_element.c \ - html_base_element.c html_style_element.c \ - html_body_element.c html_form_element.c html_select_element.c \ - html_button_element.c html_input_element.c html_text_area_element.c \ - html_opt_group_element.c html_option_element.c html_hr_element.c \ - html_dlist_element.c html_directory_element.c html_menu_element.c \ - html_fieldset_element.c html_legend_element.c html_div_element.c \ - html_paragraph_element.c html_heading_element.c html_quote_element.c \ - html_pre_element.c html_br_element.c html_label_element.c \ - html_ulist_element.c html_olist_element.c html_li_element.c \ - html_font_element.c html_mod_element.c html_anchor_element.c \ - html_basefont_element.c html_image_element.c html_object_element.c \ - html_param_element.c html_applet_element.c html_area_element.c \ - html_map_element.c html_script_element.c html_tablecaption_element.c \ - html_tablecell_element.c html_tablecol_element.c html_tablesection_element.c \ - html_table_element.c html_tablerow_element.c html_frameset_element.c \ - html_frame_element.c html_iframe_element.c html_isindex_element.c \ + html_applet_element.c \ + html_area_element.c \ + html_anchor_element.c \ + html_basefont_element.c \ + html_base_element.c \ + html_body_element.c \ + html_button_element.c \ + html_canvas_element.c \ + html_collection.c \ + html_document.c \ + html_element.c \ + html_dlist_element.c \ + html_directory_element.c \ + html_options_collection.c \ + html_html_element.c \ + html_head_element.c \ + html_link_element.c \ + html_title_element.c \ + html_meta_element.c \ + html_style_element.c \ + html_form_element.c \ + html_select_element.c \ + html_input_element.c \ + html_text_area_element.c \ + html_opt_group_element.c \ + html_option_element.c \ + html_hr_element.c \ + html_menu_element.c \ + html_fieldset_element.c \ + html_legend_element.c \ + html_div_element.c \ + html_paragraph_element.c \ + html_heading_element.c \ + html_quote_element.c \ + html_pre_element.c \ + html_br_element.c \ + html_label_element.c \ + html_ulist_element.c \ + html_olist_element.c \ + html_li_element.c \ + html_font_element.c \ + html_mod_element.c \ + html_image_element.c \ + html_object_element.c \ + html_param_element.c \ + html_map_element.c \ + html_script_element.c \ + html_tablecaption_element.c \ + html_tablecell_element.c \ + html_tablecol_element.c \ + html_tablesection_element.c \ + html_table_element.c \ + html_tablerow_element.c \ + html_frameset_element.c \ + html_frame_element.c \ + html_iframe_element.c \ + html_isindex_element.c \ UNINMPLEMENTED_SOURCES := \ diff --git a/src/html/html_anchor_element.c b/src/html/html_anchor_element.c index 8d64c2b..88fd2ac 100644 --- a/src/html/html_anchor_element.c +++ b/src/html/html_anchor_element.c @@ -18,7 +18,7 @@ #include "core/attr.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_ANCHOR_ELEMENT }, diff --git a/src/html/html_applet_element.c b/src/html/html_applet_element.c index 93ea1b5..f7f1afc 100644 --- a/src/html/html_applet_element.c +++ b/src/html/html_applet_element.c @@ -18,7 +18,7 @@ #include "core/attr.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_APPLET_ELEMENT }, diff --git a/src/html/html_area_element.c b/src/html/html_area_element.c index 828b073..3da59d7 100644 --- a/src/html/html_area_element.c +++ b/src/html/html_area_element.c @@ -17,7 +17,7 @@ #include "core/attr.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_AREA_ELEMENT }, diff --git a/src/html/html_base_element.c b/src/html/html_base_element.c index 0034f7c..f322f5b 100644 --- a/src/html/html_base_element.c +++ b/src/html/html_base_element.c @@ -13,7 +13,7 @@ #include "core/node.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_BASE_ELEMENT }, diff --git a/src/html/html_basefont_element.c b/src/html/html_basefont_element.c index ac1183d..b68ae03 100644 --- a/src/html/html_basefont_element.c +++ b/src/html/html_basefont_element.c @@ -17,7 +17,7 @@ #include "core/attr.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_BASE_FONT_ELEMENT }, diff --git a/src/html/html_body_element.c b/src/html/html_body_element.c index 0fc4b13..4f52152 100644 --- a/src/html/html_body_element.c +++ b/src/html/html_body_element.c @@ -15,7 +15,7 @@ #include "core/node.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_BODY_ELEMENT }, diff --git a/src/html/html_br_element.c b/src/html/html_br_element.c index 74e3ea8..71778f6 100644 --- a/src/html/html_br_element.c +++ b/src/html/html_br_element.c @@ -17,7 +17,7 @@ #include "core/attr.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_BR_ELEMENT }, diff --git a/src/html/html_button_element.c b/src/html/html_button_element.c index 04a17dd..52a3607 100644 --- a/src/html/html_button_element.c +++ b/src/html/html_button_element.c @@ -17,7 +17,7 @@ #include "core/attr.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_BUTTON_ELEMENT }, diff --git a/src/html/html_canvas_element.c b/src/html/html_canvas_element.c new file mode 100644 index 0000000..71d4a53 --- /dev/null +++ b/src/html/html_canvas_element.c @@ -0,0 +1,214 @@ +/* + * This file is part of libdom. + * Licensed under the MIT License, + * http://www.opensource.org/licenses/mit-license.php + * Copyright 2020 Vincent Sanders <vince@netsurf-browser.org> + */ + +#include <assert.h> +#include <stdlib.h> + +#include <dom/html/html_canvas_element.h> + +#include "html/html_document.h" +#include "html/html_canvas_element.h" + +#include "core/node.h" +#include "core/attr.h" +#include "utils/utils.h" + +static const struct dom_element_protected_vtable _protect_vtable = { + { + DOM_NODE_PROTECT_VTABLE_HTML_CANVAS_ELEMENT + }, + DOM_HTML_CANVAS_ELEMENT_PROTECT_VTABLE +}; + +/** + * Create a dom_html_canvas_element object + * + * \param params The html element creation parameters + * \param ele The returned element object + * \return DOM_NO_ERR on success, appropriate dom_exception on failure. + */ +dom_exception _dom_html_canvas_element_create( + struct dom_html_element_create_params *params, + struct dom_html_canvas_element **ele) +{ + struct dom_node_internal *node; + + *ele = malloc(sizeof(dom_html_canvas_element)); + if (*ele == NULL) + return DOM_NO_MEM_ERR; + + /* Set up vtables */ + node = (struct dom_node_internal *) *ele; + node->base.vtable = &_dom_html_element_vtable; + node->vtable = &_protect_vtable; + + return _dom_html_canvas_element_initialise(params, *ele); +} + +/** + * Initialise a dom_html_canvas_element object + * + * \param params The html element creation parameters + * \param ele The dom_html_canvas_element object + * \return DOM_NO_ERR on success, appropriate dom_exception on failure. + */ +dom_exception _dom_html_canvas_element_initialise( + struct dom_html_element_create_params *params, + struct dom_html_canvas_element *ele) +{ + return _dom_html_element_initialise(params, &ele->base); +} + +/** + * Finalise a dom_html_canvas_element object + * + * \param ele The dom_html_canvas_element object + */ +void _dom_html_canvas_element_finalise(struct dom_html_canvas_element *ele) +{ + _dom_html_element_finalise(&ele->base); +} + +/** + * Destroy a dom_html_canvas_element object + * + * \param ele The dom_html_canvas_element object + */ +void _dom_html_canvas_element_destroy(struct dom_html_canvas_element *ele) +{ + _dom_html_canvas_element_finalise(ele); + free(ele); +} + +/*------------------------------------------------------------------------*/ +/* The protected virtual functions */ + +/* The virtual function used to parse attribute value, see src/core/element.c + * for detail */ +dom_exception _dom_html_canvas_element_parse_attribute(dom_element *ele, + dom_string *name, dom_string *value, + dom_string **parsed) +{ + UNUSED(ele); + UNUSED(name); + + dom_string_ref(value); + *parsed = value; + + return DOM_NO_ERR; +} + +/* The virtual destroy function, see src/core/node.c for detail */ +void _dom_virtual_html_canvas_element_destroy(dom_node_internal *node) +{ + _dom_html_canvas_element_destroy((struct dom_html_canvas_element *) node); +} + +/* The virtual copy function, see src/core/node.c for detail */ +dom_exception _dom_html_canvas_element_copy( + dom_node_internal *old, dom_node_internal **copy) +{ + dom_html_canvas_element *new_node; + dom_exception err; + + new_node = malloc(sizeof(dom_html_canvas_element)); + if (new_node == NULL) + return DOM_NO_MEM_ERR; + + err = dom_html_canvas_element_copy_internal(old, new_node); + if (err != DOM_NO_ERR) { + free(new_node); + return err; + } + + *copy = (dom_node_internal *) new_node; + + return DOM_NO_ERR; +} + +dom_exception _dom_html_canvas_element_copy_internal( + dom_html_canvas_element *old, + dom_html_canvas_element *new) +{ + dom_exception err; + + err = dom_html_element_copy_internal(old, new); + if (err != DOM_NO_ERR) { + return err; + } + + return DOM_NO_ERR; +} + +/*-----------------------------------------------------------------------*/ +/* API functions */ + + +dom_exception +dom_html_canvas_element_get_width(dom_html_canvas_element *canvas, + dom_ulong *width) +{ + dom_exception exc; + + exc = dom_html_element_get_dom_ulong_property(&canvas->base, + "width", + SLEN("width"), + width); + + if (exc != DOM_NO_ERR) + return exc; + + if (*width == (dom_ulong)-1) { + /* width not set on the canvas, default is 300px */ + *width = 300; + } + + return DOM_NO_ERR; +} + +dom_exception +dom_html_canvas_element_set_width(dom_html_canvas_element *canvas, + dom_ulong width) +{ + return dom_html_element_set_dom_ulong_property(&canvas->base, + "width", + SLEN("width"), + width); +} + +dom_exception +dom_html_canvas_element_get_height(dom_html_canvas_element *canvas, + dom_ulong *height) +{ + dom_exception exc; + + exc = dom_html_element_get_dom_ulong_property(&canvas->base, + "height", + SLEN("height"), + height); + + if (exc != DOM_NO_ERR) + return exc; + + if (*height == (dom_ulong)-1) { + /* height not set on the canvas, default is 150px */ + *height = 150; + } + + return DOM_NO_ERR; +} + +dom_exception +dom_html_canvas_element_set_height(dom_html_canvas_element *canvas, + dom_ulong height) +{ + return dom_html_element_set_dom_ulong_property(&canvas->base, + "height", + SLEN("height"), + height); +} + diff --git a/src/html/html_canvas_element.h b/src/html/html_canvas_element.h new file mode 100644 index 0000000..4cf3042 --- /dev/null +++ b/src/html/html_canvas_element.h @@ -0,0 +1,62 @@ +/* + * This file is part of libdom. + * Licensed under the MIT License, + * http://www.opensource.org/licenses/mit-license.php + * Copyright 2020 Vincent Sanders <vince@netsurf-browser.org> + */ + +#ifndef dom_internal_html_canvas_element_h_ +#define dom_internal_html_canvas_element_h_ + +#include <dom/html/html_canvas_element.h> + +#include "html/html_element.h" + +struct dom_html_canvas_element { + struct dom_html_element base; + /**< The base class */ +}; + +/* Create a dom_html_canvas_element object */ +dom_exception _dom_html_canvas_element_create( + struct dom_html_element_create_params *params, + struct dom_html_canvas_element **ele); + +/* Initialise a dom_html_canvas_element object */ +dom_exception _dom_html_canvas_element_initialise( + struct dom_html_element_create_params *params, + struct dom_html_canvas_element *ele); + +/* Finalise a dom_html_canvas_element object */ +void _dom_html_canvas_element_finalise(struct dom_html_canvas_element *ele); + +/* Destroy a dom_html_canvas_element object */ +void _dom_html_canvas_element_destroy(struct dom_html_canvas_element *ele); + +/* The protected virtual functions */ +dom_exception _dom_html_canvas_element_parse_attribute(dom_element *ele, + dom_string *name, dom_string *value, + dom_string **parsed); + +void _dom_virtual_html_canvas_element_destroy(dom_node_internal *node); +dom_exception _dom_html_canvas_element_copy(dom_node_internal *old, + dom_node_internal **copy); + +#define DOM_HTML_CANVAS_ELEMENT_PROTECT_VTABLE \ + _dom_html_canvas_element_parse_attribute + +#define DOM_NODE_PROTECT_VTABLE_HTML_CANVAS_ELEMENT \ + _dom_virtual_html_canvas_element_destroy, \ + _dom_html_canvas_element_copy + +/* Helper functions*/ +dom_exception _dom_html_canvas_element_copy_internal( + dom_html_canvas_element *old, + dom_html_canvas_element *new); +#define dom_html_canvas_element_copy_internal(o, n) \ + _dom_html_canvas_element_copy_internal( \ + (dom_html_canvas_element *) (o), \ + (dom_html_canvas_element *) (n)) + + +#endif diff --git a/src/html/html_directory_element.c b/src/html/html_directory_element.c index 585af1c..19db7cd 100644 --- a/src/html/html_directory_element.c +++ b/src/html/html_directory_element.c @@ -17,7 +17,7 @@ #include "core/attr.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_DIRECTORY_ELEMENT }, diff --git a/src/html/html_div_element.c b/src/html/html_div_element.c index b061246..c39af74 100644 --- a/src/html/html_div_element.c +++ b/src/html/html_div_element.c @@ -17,7 +17,7 @@ #include "core/attr.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_DIV_ELEMENT }, diff --git a/src/html/html_dlist_element.c b/src/html/html_dlist_element.c index ab9d4c3..fb0ad56 100644 --- a/src/html/html_dlist_element.c +++ b/src/html/html_dlist_element.c @@ -17,7 +17,7 @@ #include "core/attr.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_DL_ELEMENT }, diff --git a/src/html/html_document.c b/src/html/html_document.c index 50a15a7..cf3c25d 100644 --- a/src/html/html_document.c +++ b/src/html/html_document.c @@ -17,6 +17,7 @@ #include "html/html_head_element.h" #include "html/html_body_element.h" #include "html/html_base_element.h" +#include "html/html_canvas_element.h" #include "html/html_div_element.h" #include "html/html_link_element.h" #include "html/html_title_element.h" @@ -71,7 +72,7 @@ #include "utils/namespace.h" #include "utils/utils.h" -static struct dom_html_document_vtable html_document_vtable = { +static const struct dom_html_document_vtable html_document_vtable = { { { { @@ -84,7 +85,7 @@ static struct dom_html_document_vtable html_document_vtable = { DOM_HTML_DOCUMENT_VTABLE }; -static struct dom_node_protect_vtable html_document_protect_vtable = { +static const struct dom_node_protect_vtable html_document_protect_vtable = { DOM_HTML_DOCUMENT_PROTECT_VTABLE }; @@ -318,6 +319,8 @@ static inline dom_html_element_type _dom_html_document_get_element_type( RETURN_IF_MATCH(upper, DOM_HTML_ELEMENT_TYPE_RP) else RETURN_IF_MATCH(upper, DOM_HTML_ELEMENT_TYPE_RT) + else + RETURN_IF_MATCH(upper, DOM_HTML_ELEMENT_TYPE_TT) break; case 3: RETURN_IF_MATCH(upper, DOM_HTML_ELEMENT_TYPE_DIV) @@ -353,6 +356,8 @@ static inline dom_html_element_type _dom_html_document_get_element_type( RETURN_IF_MATCH(upper, DOM_HTML_ELEMENT_TYPE_BDO) else RETURN_IF_MATCH(upper, DOM_HTML_ELEMENT_TYPE_WBR) + else + RETURN_IF_MATCH(upper, DOM_HTML_ELEMENT_TYPE_BIG) break; case 4: RETURN_IF_MATCH(upper, DOM_HTML_ELEMENT_TYPE_META) @@ -394,6 +399,8 @@ static inline dom_html_element_type _dom_html_document_get_element_type( RETURN_IF_MATCH(upper, DOM_HTML_ELEMENT_TYPE_BASE) else RETURN_IF_MATCH(upper, DOM_HTML_ELEMENT_TYPE_TIME) + else + RETURN_IF_MATCH(upper, DOM_HTML_ELEMENT_TYPE_NOBR) break; case 5: RETURN_IF_MATCH(upper, DOM_HTML_ELEMENT_TYPE_INPUT) @@ -468,6 +475,10 @@ static inline dom_html_element_type _dom_html_document_get_element_type( RETURN_IF_MATCH(upper, DOM_HTML_ELEMENT_TYPE_SOURCE) else RETURN_IF_MATCH(upper, DOM_HTML_ELEMENT_TYPE_STRONG) + else + RETURN_IF_MATCH(upper, DOM_HTML_ELEMENT_TYPE_SPACER) + else + RETURN_IF_MATCH(upper, DOM_HTML_ELEMENT_TYPE_STRIKE) break; case 7: RETURN_IF_MATCH(upper, DOM_HTML_ELEMENT_TYPE_CAPTION) @@ -485,6 +496,12 @@ static inline dom_html_element_type _dom_html_document_get_element_type( RETURN_IF_MATCH(upper, DOM_HTML_ELEMENT_TYPE_SECTION) else RETURN_IF_MATCH(upper, DOM_HTML_ELEMENT_TYPE_SUMMARY) + else + RETURN_IF_MATCH(upper, DOM_HTML_ELEMENT_TYPE_ACRONYM) + else + RETURN_IF_MATCH(upper, DOM_HTML_ELEMENT_TYPE_BGSOUND) + else + RETURN_IF_MATCH(upper, DOM_HTML_ELEMENT_TYPE_MARQUEE) break; case 8: RETURN_IF_MATCH(upper, DOM_HTML_ELEMENT_TYPE_TEXTAREA) @@ -508,6 +525,8 @@ static inline dom_html_element_type _dom_html_document_get_element_type( RETURN_IF_MATCH(upper, DOM_HTML_ELEMENT_TYPE_PROGRESS) else RETURN_IF_MATCH(upper, DOM_HTML_ELEMENT_TYPE_TEMPLATE) + else + RETURN_IF_MATCH(upper, DOM_HTML_ELEMENT_TYPE_NOFRAMES) break; case 10: RETURN_IF_MATCH(upper, DOM_HTML_ELEMENT_TYPE_BLOCKQUOTE) @@ -535,6 +554,10 @@ _dom_html_document_create_element_internal( dom_exception exc; struct dom_html_element_create_params params; + /* If the input tag name is empty, this is an 'invalid character' error */ + if (dom_string_length(in_tag_name) == 0) + return DOM_INVALID_CHARACTER_ERR; + exc = dom_string_toupper(in_tag_name, true, ¶ms.name); if (exc != DOM_NO_ERR) return exc; @@ -771,6 +794,10 @@ _dom_html_document_create_element_internal( exc = _dom_html_isindex_element_create(¶ms, (dom_html_isindex_element **) result); break; + case DOM_HTML_ELEMENT_TYPE_CANVAS: + exc = _dom_html_canvas_element_create(¶ms, + (dom_html_canvas_element **) result); + break; case DOM_HTML_ELEMENT_TYPE_DATA: case DOM_HTML_ELEMENT_TYPE_SPAN: case DOM_HTML_ELEMENT_TYPE_TIME: @@ -779,7 +806,6 @@ _dom_html_document_create_element_internal( case DOM_HTML_ELEMENT_TYPE_METER: case DOM_HTML_ELEMENT_TYPE_TRACK: case DOM_HTML_ELEMENT_TYPE_VIDEO: - case DOM_HTML_ELEMENT_TYPE_CANVAS: case DOM_HTML_ELEMENT_TYPE_DIALOG: case DOM_HTML_ELEMENT_TYPE_KEYGEN: case DOM_HTML_ELEMENT_TYPE_OUTPUT: @@ -801,8 +827,10 @@ _dom_html_document_create_element_internal( case DOM_HTML_ELEMENT_TYPE_EM: case DOM_HTML_ELEMENT_TYPE_RP: case DOM_HTML_ELEMENT_TYPE_RT: + case DOM_HTML_ELEMENT_TYPE_TT: case DOM_HTML_ELEMENT_TYPE_BDI: case DOM_HTML_ELEMENT_TYPE_BDO: + case DOM_HTML_ELEMENT_TYPE_BIG: case DOM_HTML_ELEMENT_TYPE_DFN: case DOM_HTML_ELEMENT_TYPE_KBD: case DOM_HTML_ELEMENT_TYPE_NAV: @@ -815,6 +843,7 @@ _dom_html_document_create_element_internal( case DOM_HTML_ELEMENT_TYPE_CODE: case DOM_HTML_ELEMENT_TYPE_MAIN: case DOM_HTML_ELEMENT_TYPE_MARK: + case DOM_HTML_ELEMENT_TYPE_NOBR: case DOM_HTML_ELEMENT_TYPE_RUBY: case DOM_HTML_ELEMENT_TYPE_SAMP: case DOM_HTML_ELEMENT_TYPE_ASIDE: @@ -825,10 +854,16 @@ _dom_html_document_create_element_internal( case DOM_HTML_ELEMENT_TYPE_HEADER: case DOM_HTML_ELEMENT_TYPE_HGROUP: case DOM_HTML_ELEMENT_TYPE_STRONG: + case DOM_HTML_ELEMENT_TYPE_SPACER: + case DOM_HTML_ELEMENT_TYPE_STRIKE: + case DOM_HTML_ELEMENT_TYPE_ACRONYM: case DOM_HTML_ELEMENT_TYPE_ADDRESS: case DOM_HTML_ELEMENT_TYPE_ARTICLE: + case DOM_HTML_ELEMENT_TYPE_BGSOUND: + case DOM_HTML_ELEMENT_TYPE_MARQUEE: case DOM_HTML_ELEMENT_TYPE_SECTION: case DOM_HTML_ELEMENT_TYPE_SUMMARY: + case DOM_HTML_ELEMENT_TYPE_NOFRAMES: case DOM_HTML_ELEMENT_TYPE_NOSCRIPT: case DOM_HTML_ELEMENT_TYPE_FIGCAPTION: /* These have no specialisation: use HTMLElement */ diff --git a/src/html/html_element.c b/src/html/html_element.c index 65a75ca..c110455 100644 --- a/src/html/html_element.c +++ b/src/html/html_element.c @@ -18,7 +18,7 @@ #include "core/document.h" #include "utils/utils.h" -struct dom_html_element_vtable _dom_html_element_vtable = { +const struct dom_html_element_vtable _dom_html_element_vtable = { { { { @@ -31,7 +31,7 @@ struct dom_html_element_vtable _dom_html_element_vtable = { DOM_HTML_ELEMENT_VTABLE }; -static struct dom_element_protected_vtable _dom_html_element_protect_vtable = { +static const struct dom_element_protected_vtable _dom_html_element_protect_vtable = { { DOM_HTML_ELEMENT_PROTECT_VTABLE }, @@ -477,7 +477,7 @@ dom_exception dom_html_element_get_int32_t_property(dom_html_element *ele, char *s3 = _strndup(dom_string_data(s2), dom_string_byte_length(s2)); if (s3 != NULL) { - *value = strtoul(s3, NULL, 0); + *value = strtol(s3, NULL, 0); free(s3); } else { err = DOM_NO_MEM_ERR; @@ -518,7 +518,7 @@ dom_exception dom_html_element_set_int32_t_property(dom_html_element *ele, if (err != DOM_NO_ERR) goto fail; - if (snprintf(numbuffer, 32, "%u", value) == 32) + if (snprintf(numbuffer, 32, "%"PRIu32, value) == 32) numbuffer[31] = '\0'; err = dom_string_create((const uint8_t *) numbuffer, @@ -526,7 +526,7 @@ dom_exception dom_html_element_set_int32_t_property(dom_html_element *ele, if (err != DOM_NO_ERR) goto cleanup; - err = dom_element_set_attribute(ele, svalue, str); + err = dom_element_set_attribute(ele, str, svalue); dom_string_unref(svalue); cleanup: @@ -607,7 +607,7 @@ dom_exception dom_html_element_set_dom_ulong_property(dom_html_element *ele, if (err != DOM_NO_ERR) goto fail; - if (snprintf(numbuffer, 32, "%u", value) == 32) + if (snprintf(numbuffer, 32, "%"PRIu32, value) == 32) numbuffer[31] = '\0'; err = dom_string_create((const uint8_t *) numbuffer, @@ -615,7 +615,7 @@ dom_exception dom_html_element_set_dom_ulong_property(dom_html_element *ele, if (err != DOM_NO_ERR) goto cleanup; - err = dom_element_set_attribute(ele, svalue, str); + err = dom_element_set_attribute(ele, str, svalue); dom_string_unref(svalue); cleanup: diff --git a/src/html/html_element.h b/src/html/html_element.h index 0290569..87e1bbb 100644 --- a/src/html/html_element.h +++ b/src/html/html_element.h @@ -162,7 +162,7 @@ dom_exception _dom_html_element_copy_internal(dom_html_element *old, #define dom_html_element_copy_internal(o, n) _dom_html_element_copy_internal( \ (dom_html_element *) (o), (dom_html_element *) (n)) -extern struct dom_html_element_vtable _dom_html_element_vtable; +extern const struct dom_html_element_vtable _dom_html_element_vtable; #endif diff --git a/src/html/html_fieldset_element.c b/src/html/html_fieldset_element.c index fe44e74..2ab8dd0 100644 --- a/src/html/html_fieldset_element.c +++ b/src/html/html_fieldset_element.c @@ -17,7 +17,7 @@ #include "core/node.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_FIELDSET_ELEMENT }, diff --git a/src/html/html_font_element.c b/src/html/html_font_element.c index ecedfb0..38f8869 100644 --- a/src/html/html_font_element.c +++ b/src/html/html_font_element.c @@ -17,7 +17,7 @@ #include "core/attr.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_FONT_ELEMENT }, diff --git a/src/html/html_form_element.c b/src/html/html_form_element.c index 1dd1992..5ba8365 100644 --- a/src/html/html_form_element.c +++ b/src/html/html_form_element.c @@ -22,7 +22,7 @@ #include "core/node.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_FORM_ELEMENT }, diff --git a/src/html/html_frame_element.c b/src/html/html_frame_element.c index fe6859c..321cff9 100644 --- a/src/html/html_frame_element.c +++ b/src/html/html_frame_element.c @@ -17,7 +17,7 @@ #include "core/attr.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_FRAME_ELEMENT }, diff --git a/src/html/html_frameset_element.c b/src/html/html_frameset_element.c index be44d5d..84a52b0 100644 --- a/src/html/html_frameset_element.c +++ b/src/html/html_frameset_element.c @@ -17,7 +17,7 @@ #include "core/attr.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_FRAME_SET_ELEMENT }, diff --git a/src/html/html_head_element.c b/src/html/html_head_element.c index ff02b1f..20f6aa8 100644 --- a/src/html/html_head_element.c +++ b/src/html/html_head_element.c @@ -13,7 +13,7 @@ #include "core/node.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_HEAD_ELEMENT }, diff --git a/src/html/html_heading_element.c b/src/html/html_heading_element.c index 8ab2c5a..21e36c6 100644 --- a/src/html/html_heading_element.c +++ b/src/html/html_heading_element.c @@ -17,7 +17,7 @@ #include "core/attr.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_HEADING_ELEMENT }, diff --git a/src/html/html_hr_element.c b/src/html/html_hr_element.c index e6086f5..8ca9743 100644 --- a/src/html/html_hr_element.c +++ b/src/html/html_hr_element.c @@ -17,7 +17,7 @@ #include "core/attr.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_HR_ELEMENT }, diff --git a/src/html/html_html_element.c b/src/html/html_html_element.c index 9cdcd5e..24f35e4 100644 --- a/src/html/html_html_element.c +++ b/src/html/html_html_element.c @@ -13,7 +13,7 @@ #include "core/node.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_HTML_ELEMENT }, diff --git a/src/html/html_iframe_element.c b/src/html/html_iframe_element.c index 4d7272b..96397d0 100644 --- a/src/html/html_iframe_element.c +++ b/src/html/html_iframe_element.c @@ -17,7 +17,7 @@ #include "core/attr.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_IFRAME_ELEMENT }, diff --git a/src/html/html_image_element.c b/src/html/html_image_element.c index 3cdd15f..e5b9c7b 100644 --- a/src/html/html_image_element.c +++ b/src/html/html_image_element.c @@ -18,7 +18,7 @@ #include "core/attr.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_IMAGE_ELEMENT }, diff --git a/src/html/html_input_element.c b/src/html/html_input_element.c index 079b55e..025ef5d 100644 --- a/src/html/html_input_element.c +++ b/src/html/html_input_element.c @@ -17,7 +17,7 @@ #include "core/attr.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_INPUT_ELEMENT }, diff --git a/src/html/html_isindex_element.c b/src/html/html_isindex_element.c index 40cb99c..e793fae 100644 --- a/src/html/html_isindex_element.c +++ b/src/html/html_isindex_element.c @@ -16,7 +16,7 @@ #include "core/attr.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_ISINDEX_ELEMENT }, diff --git a/src/html/html_label_element.c b/src/html/html_label_element.c index 777144a..c62adca 100644 --- a/src/html/html_label_element.c +++ b/src/html/html_label_element.c @@ -15,7 +15,7 @@ #include "core/node.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_LABEL_ELEMENT }, diff --git a/src/html/html_legend_element.c b/src/html/html_legend_element.c index efb712b..f4200c8 100644 --- a/src/html/html_legend_element.c +++ b/src/html/html_legend_element.c @@ -19,7 +19,7 @@ #include "core/attr.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_LEGEND_ELEMENT }, diff --git a/src/html/html_li_element.c b/src/html/html_li_element.c index 84becf9..6856046 100644 --- a/src/html/html_li_element.c +++ b/src/html/html_li_element.c @@ -17,7 +17,7 @@ #include "core/attr.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_LI_ELEMENT }, diff --git a/src/html/html_link_element.c b/src/html/html_link_element.c index 87fe980..4916883 100644 --- a/src/html/html_link_element.c +++ b/src/html/html_link_element.c @@ -15,7 +15,7 @@ #include "core/attr.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_LINK_ELEMENT }, diff --git a/src/html/html_map_element.c b/src/html/html_map_element.c index 3b10222..865d9b6 100644 --- a/src/html/html_map_element.c +++ b/src/html/html_map_element.c @@ -19,7 +19,7 @@ #include "core/attr.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_MAP_ELEMENT }, diff --git a/src/html/html_menu_element.c b/src/html/html_menu_element.c index 09eadb6..882f1f2 100644 --- a/src/html/html_menu_element.c +++ b/src/html/html_menu_element.c @@ -17,7 +17,7 @@ #include "core/attr.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_MENU_ELEMENT }, diff --git a/src/html/html_meta_element.c b/src/html/html_meta_element.c index 4098daf..39fd9e1 100644 --- a/src/html/html_meta_element.c +++ b/src/html/html_meta_element.c @@ -13,7 +13,7 @@ #include "core/node.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_META_ELEMENT }, diff --git a/src/html/html_mod_element.c b/src/html/html_mod_element.c index 20cb042..4f3331c 100644 --- a/src/html/html_mod_element.c +++ b/src/html/html_mod_element.c @@ -17,7 +17,7 @@ #include "core/attr.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_MOD_ELEMENT }, diff --git a/src/html/html_object_element.c b/src/html/html_object_element.c index b51e3a0..1359ede 100644 --- a/src/html/html_object_element.c +++ b/src/html/html_object_element.c @@ -20,7 +20,7 @@ #include "core/attr.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_OBJECT_ELEMENT }, diff --git a/src/html/html_olist_element.c b/src/html/html_olist_element.c index c89d11f..415b656 100644 --- a/src/html/html_olist_element.c +++ b/src/html/html_olist_element.c @@ -17,7 +17,7 @@ #include "core/attr.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_OLIST_ELEMENT }, diff --git a/src/html/html_opt_group_element.c b/src/html/html_opt_group_element.c index 6af0a29..a50e3de 100644 --- a/src/html/html_opt_group_element.c +++ b/src/html/html_opt_group_element.c @@ -17,7 +17,7 @@ #include "core/attr.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_OPT_GROUP_ELEMENT }, diff --git a/src/html/html_paragraph_element.c b/src/html/html_paragraph_element.c index 2b2f420..3c8f384 100644 --- a/src/html/html_paragraph_element.c +++ b/src/html/html_paragraph_element.c @@ -17,7 +17,7 @@ #include "core/attr.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_P_ELEMENT }, diff --git a/src/html/html_param_element.c b/src/html/html_param_element.c index c75e1ce..2c991ac 100644 --- a/src/html/html_param_element.c +++ b/src/html/html_param_element.c @@ -17,7 +17,7 @@ #include "core/attr.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_PARAM_ELEMENT }, diff --git a/src/html/html_pre_element.c b/src/html/html_pre_element.c index 64c8c3d..7582fde 100644 --- a/src/html/html_pre_element.c +++ b/src/html/html_pre_element.c @@ -17,7 +17,7 @@ #include "core/attr.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_PRE_ELEMENT }, diff --git a/src/html/html_quote_element.c b/src/html/html_quote_element.c index cf3e0c5..f1bc06f 100644 --- a/src/html/html_quote_element.c +++ b/src/html/html_quote_element.c @@ -17,7 +17,7 @@ #include "core/attr.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_QUOTE_ELEMENT }, diff --git a/src/html/html_script_element.c b/src/html/html_script_element.c index e8dfb1d..9acbf29 100644 --- a/src/html/html_script_element.c +++ b/src/html/html_script_element.c @@ -17,7 +17,7 @@ #include "core/attr.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_SCRIPT_ELEMENT }, diff --git a/src/html/html_select_element.c b/src/html/html_select_element.c index ff549b2..8ba78f1 100644 --- a/src/html/html_select_element.c +++ b/src/html/html_select_element.c @@ -17,7 +17,7 @@ #include "core/node.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_SELECT_ELEMENT }, @@ -213,6 +213,9 @@ dom_exception dom_html_select_element_get_selected_index( dom_html_options_collection *col; err = _dom_html_select_element_make_collection(ele, &col); + if (err != DOM_NO_ERR) { + return err; + } err = dom_html_options_collection_get_length(col, &len); if (err != DOM_NO_ERR) { @@ -266,6 +269,9 @@ dom_exception dom_html_select_element_set_selected_index( dom_html_options_collection *col; err = _dom_html_select_element_make_collection(ele, &col); + if (err != DOM_NO_ERR) { + return err; + } err = dom_html_options_collection_item(col, index, &option); diff --git a/src/html/html_style_element.c b/src/html/html_style_element.c index ae845be..4e4974f 100644 --- a/src/html/html_style_element.c +++ b/src/html/html_style_element.c @@ -13,7 +13,7 @@ #include "core/node.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_STYLE_ELEMENT }, diff --git a/src/html/html_table_element.c b/src/html/html_table_element.c index f197d07..010a6cd 100644 --- a/src/html/html_table_element.c +++ b/src/html/html_table_element.c @@ -21,7 +21,7 @@ #include "core/attr.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_TABLE_ELEMENT }, diff --git a/src/html/html_tablecaption_element.c b/src/html/html_tablecaption_element.c index cae229c..0e55e3a 100644 --- a/src/html/html_tablecaption_element.c +++ b/src/html/html_tablecaption_element.c @@ -17,7 +17,7 @@ #include "core/attr.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_TABLE_CAPTION_ELEMENT }, diff --git a/src/html/html_tablecell_element.c b/src/html/html_tablecell_element.c index 7a1f968..2fc31c8 100644 --- a/src/html/html_tablecell_element.c +++ b/src/html/html_tablecell_element.c @@ -18,7 +18,7 @@ #include "core/attr.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_TABLE_CELL_ELEMENT }, diff --git a/src/html/html_tablecol_element.c b/src/html/html_tablecol_element.c index 74169be..56bcd64 100644 --- a/src/html/html_tablecol_element.c +++ b/src/html/html_tablecol_element.c @@ -17,7 +17,7 @@ #include "core/attr.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_TABLE_COL_ELEMENT }, diff --git a/src/html/html_tablerow_element.c b/src/html/html_tablerow_element.c index fe7d929..1a6069b 100644 --- a/src/html/html_tablerow_element.c +++ b/src/html/html_tablerow_element.c @@ -20,7 +20,7 @@ #include "core/attr.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_TABLE_ROW_ELEMENT }, @@ -244,16 +244,17 @@ dom_exception dom_html_table_row_element_get_row_index( return exp; } - exp = dom_html_table_section_element_get_rows(t_head, &rows); - dom_node_unref(t_head); - if (exp != DOM_NO_ERR) { - return exp; - } - - dom_html_collection_get_length(rows, &len); - dom_html_collection_unref(rows); + if (t_head != NULL) { + exp = dom_html_table_section_element_get_rows(t_head, &rows); + dom_node_unref(t_head); + if (exp != DOM_NO_ERR) { + return exp; + } - count += len; + dom_html_collection_get_length(rows, &len); + dom_html_collection_unref(rows); + count += len; + } for (n = n->first_child;n != parent && n != NULL; n = n->next) { diff --git a/src/html/html_tablesection_element.c b/src/html/html_tablesection_element.c index f839758..dee5ae5 100644 --- a/src/html/html_tablesection_element.c +++ b/src/html/html_tablesection_element.c @@ -21,7 +21,7 @@ #include "core/attr.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_TABLE_SECTION_ELEMENT }, diff --git a/src/html/html_text_area_element.c b/src/html/html_text_area_element.c index 6117e83..db351bc 100644 --- a/src/html/html_text_area_element.c +++ b/src/html/html_text_area_element.c @@ -17,7 +17,7 @@ #include "core/attr.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_TEXT_AREA_ELEMENT }, @@ -273,7 +273,7 @@ dom_exception dom_html_text_area_element_set_value( if (ele->value != NULL) dom_string_ref(ele->value); - return DOM_NO_ERR; + return dom_node_set_text_content((dom_node *)ele, ele->value); } /*------------------------------------------------------------------------*/ diff --git a/src/html/html_title_element.c b/src/html/html_title_element.c index 39e898a..f727dfa 100644 --- a/src/html/html_title_element.c +++ b/src/html/html_title_element.c @@ -17,7 +17,7 @@ #include "core/node.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_TITLE_ELEMENT }, @@ -157,15 +157,7 @@ dom_exception _dom_html_title_element_copy_internal( dom_exception dom_html_title_element_get_text(dom_html_title_element *ele, dom_string **text) { - dom_node_internal *node = (dom_node_internal *) ele; - dom_node_internal *n = node->first_child; - - /* There should be only one child of title element */ - assert(node->first_child == node->last_child); - /* And it should be a text node */ - assert(n->type == DOM_TEXT_NODE); - - return dom_characterdata_get_data(n, text); + return dom_node_get_text_content(ele, text); } /** @@ -178,14 +170,6 @@ dom_exception dom_html_title_element_get_text(dom_html_title_element *ele, dom_exception dom_html_title_element_set_text(dom_html_title_element *ele, dom_string *text) { - dom_node_internal *node = (dom_node_internal *) ele; - dom_node_internal *n = node->first_child; - - /* There should be only one child of title element */ - assert(node->first_child == node->last_child); - /* And it should be a text node */ - assert(n->type == DOM_TEXT_NODE); - - return dom_characterdata_set_data(n, text); + return dom_node_set_text_content(ele, text); } diff --git a/src/html/html_ulist_element.c b/src/html/html_ulist_element.c index f2b87fb..48cb0c2 100644 --- a/src/html/html_ulist_element.c +++ b/src/html/html_ulist_element.c @@ -17,7 +17,7 @@ #include "core/attr.h" #include "utils/utils.h" -static struct dom_element_protected_vtable _protect_vtable = { +static const struct dom_element_protected_vtable _protect_vtable = { { DOM_NODE_PROTECT_VTABLE_HTML_U_LIST_ELEMENT }, |