From 4e125c6e82444e5e4a08dbbe1a910551eb5b6f41 Mon Sep 17 00:00:00 2001 From: Daniel Silverstone Date: Sat, 18 Jul 2015 23:31:03 +0100 Subject: REWORK: DODGY CRAP FOR VINCE --- render/html.c | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) (limited to 'render') diff --git a/render/html.c b/render/html.c index 2bd98f8fa..c2d26f7df 100644 --- a/render/html.c +++ b/render/html.c @@ -718,6 +718,25 @@ dom_event_fetcher(dom_string *type, return NULL; } +static void +html_document_user_data_handler(dom_node_operation operation, + dom_string *key, void *data, + struct dom_node *src, + struct dom_node *dst) +{ + if (dom_string_isequal(corestring_dom___ns_key_html_content_data, + key) == false || data == NULL) { + return; + } + + switch (operation) { + default: + LOG("User data operation not handled."); + assert(0); + } +} + + static nserror html_create_html_data(html_content *c, const http_parameter *params) { @@ -725,6 +744,8 @@ html_create_html_data(html_content *c, const http_parameter *params) nserror nerror; dom_hubbub_parser_params parse_params; dom_hubbub_error error; + dom_exception err; + void *old_node_data; c->parser = NULL; c->parse_completed = false; @@ -821,9 +842,25 @@ html_create_html_data(html_content *c, const http_parameter *params) return libdom_hubbub_error_to_nserror(error); } + + err = dom_node_set_user_data(c->document, + corestring_dom___ns_key_html_content_data, + c, html_document_user_data_handler, + (void *) &old_node_data); + if (err != DOM_NO_ERR) { + dom_hubbub_parser_destroy(c->parser); + nsurl_unref(c->base_url); + c->base_url = NULL; - return NSERROR_OK; + lwc_string_unref(c->universal); + c->universal = NULL; + return libdom_hubbub_error_to_nserror(err); + } + + assert(old_node_data == NULL); + + return NSERROR_OK; } /** -- cgit v1.2.3