From 394357b7c991fb2d5eb8aa035d28ab5d570fca0a Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Sat, 14 Jul 2012 09:13:21 -0600 Subject: fix quirks mode setting with libdom hubbub parser --- render/box_construct.c | 4 ++-- render/box_normalise.c | 14 +++++++------- render/html.c | 13 ++++++++++--- render/html.h | 6 ------ render/html_internal.h | 2 +- 5 files changed, 20 insertions(+), 19 deletions(-) (limited to 'render') diff --git a/render/box_construct.c b/render/box_construct.c index 0776a7e86..c09b40530 100644 --- a/render/box_construct.c +++ b/render/box_construct.c @@ -1445,7 +1445,7 @@ css_select_results *box_get_style(html_content *c, dom_string_byte_length(s), c->encoding, nsurl_access(content_get_url(&c->base)), - c->quirks != BINDING_QUIRKS_MODE_NONE, + c->quirks != DOM_DOCUMENT_QUIRKS_MODE_NONE, box_style_alloc, NULL); dom_string_unref(s); @@ -1456,7 +1456,7 @@ css_select_results *box_get_style(html_content *c, /* Populate selection context */ ctx.ctx = c->select_ctx; - ctx.quirks = (c->quirks == BINDING_QUIRKS_MODE_FULL); + ctx.quirks = (c->quirks == DOM_DOCUMENT_QUIRKS_MODE_FULL); ctx.base_url = c->base_url; ctx.universal = c->universal; diff --git a/render/box_normalise.c b/render/box_normalise.c index fb378d3e7..19a1cbc25 100644 --- a/render/box_normalise.c +++ b/render/box_normalise.c @@ -152,7 +152,7 @@ bool box_normalise_block(struct box *block, html_content *c) assert(block->style != NULL); ctx.ctx = c->select_ctx; - ctx.quirks = (c->quirks == BINDING_QUIRKS_MODE_FULL); + ctx.quirks = (c->quirks == DOM_DOCUMENT_QUIRKS_MODE_FULL); ctx.base_url = c->base_url; ctx.universal = c->universal; @@ -254,7 +254,7 @@ bool box_normalise_table(struct box *table, html_content * c) assert(table->style != NULL); ctx.ctx = c->select_ctx; - ctx.quirks = (c->quirks == BINDING_QUIRKS_MODE_FULL); + ctx.quirks = (c->quirks == DOM_DOCUMENT_QUIRKS_MODE_FULL); ctx.base_url = c->base_url; ctx.universal = c->universal; @@ -341,7 +341,7 @@ bool box_normalise_table(struct box *table, html_content * c) assert(table->style != NULL); ctx.ctx = c->select_ctx; - ctx.quirks = (c->quirks == BINDING_QUIRKS_MODE_FULL); + ctx.quirks = (c->quirks == DOM_DOCUMENT_QUIRKS_MODE_FULL); ctx.base_url = c->base_url; ctx.universal = c->universal; @@ -477,7 +477,7 @@ bool box_normalise_table_spans(struct box *table, struct span_info *spans, ctx.ctx = c->select_ctx; ctx.quirks = (c->quirks == - BINDING_QUIRKS_MODE_FULL); + DOM_DOCUMENT_QUIRKS_MODE_FULL); ctx.base_url = c->base_url; ctx.universal = c->universal; @@ -587,7 +587,7 @@ bool box_normalise_table_row_group(struct box *row_group, assert(row_group->style != NULL); ctx.ctx = c->select_ctx; - ctx.quirks = (c->quirks == BINDING_QUIRKS_MODE_FULL); + ctx.quirks = (c->quirks == DOM_DOCUMENT_QUIRKS_MODE_FULL); ctx.base_url = c->base_url; ctx.universal = c->universal; @@ -662,7 +662,7 @@ bool box_normalise_table_row_group(struct box *row_group, assert(row_group->style != NULL); ctx.ctx = c->select_ctx; - ctx.quirks = (c->quirks == BINDING_QUIRKS_MODE_FULL); + ctx.quirks = (c->quirks == DOM_DOCUMENT_QUIRKS_MODE_FULL); ctx.base_url = c->base_url; ctx.universal = c->universal; @@ -732,7 +732,7 @@ bool box_normalise_table_row(struct box *row, assert(row->style != NULL); ctx.ctx = c->select_ctx; - ctx.quirks = (c->quirks == BINDING_QUIRKS_MODE_FULL); + ctx.quirks = (c->quirks == DOM_DOCUMENT_QUIRKS_MODE_FULL); ctx.base_url = c->base_url; ctx.universal = c->universal; diff --git a/render/html.c b/render/html.c index 015b5b9ae..2f11d6b35 100644 --- a/render/html.c +++ b/render/html.c @@ -306,7 +306,7 @@ html_create_html_data(html_content *c, const http_parameter *params) c->parser = NULL; c->document = NULL; - c->quirks = BINDING_QUIRKS_MODE_NONE; + c->quirks = DOM_DOCUMENT_QUIRKS_MODE_NONE; c->encoding = NULL; c->base_url = nsurl_ref(content_get_url(&c->base)); c->base_target = NULL; @@ -1850,7 +1850,7 @@ static bool html_find_stylesheets(html_content *c, dom_node *html) c->base.active++; LOG(("%d fetches active", c->base.active)); - if (c->quirks == BINDING_QUIRKS_MODE_FULL) { + if (c->quirks == DOM_DOCUMENT_QUIRKS_MODE_FULL) { ns_error = hlcache_handle_retrieve(html_quirks_stylesheet_url, 0, content_get_url(&c->base), NULL, html_convert_css_callback, c, &child, @@ -1940,7 +1940,6 @@ static bool html_convert(struct content *c) return false; } - /** @todo quirks used to be set here too */ htmlc->document = dom_hubbub_parser_get_document(htmlc->parser); if (htmlc->document == NULL) { @@ -1950,6 +1949,14 @@ static bool html_convert(struct content *c) return false; } + exc = dom_document_get_quirks_mode(htmlc->document, &htmlc->quirks); + if (exc != DOM_NO_ERR) { + LOG(("error retrieving quirks")); + } + + LOG(("quirks set to %d", htmlc->quirks)); + + if (htmlc->encoding == NULL) { const char *encoding; encoding = dom_hubbub_parser_get_encoding(htmlc->parser, diff --git a/render/html.h b/render/html.h index 0aa45d308..64548f810 100644 --- a/render/html.h +++ b/render/html.h @@ -49,12 +49,6 @@ struct plotters; struct scrollbar; struct scrollbar_msg_data; -typedef enum binding_quirks_mode { - BINDING_QUIRKS_MODE_NONE, - BINDING_QUIRKS_MODE_LIMITED, - BINDING_QUIRKS_MODE_FULL -} binding_quirks_mode; - /** * Container for stylesheets used by an HTML document */ diff --git a/render/html_internal.h b/render/html_internal.h index 89b90c8e2..049b648b3 100644 --- a/render/html_internal.h +++ b/render/html_internal.h @@ -36,7 +36,7 @@ typedef struct html_content { /** Document tree */ dom_document *document; /** Quirkyness of document */ - binding_quirks_mode quirks; + dom_document_quirks_mode quirks; /** Encoding of source, NULL if unknown. */ char *encoding; -- cgit v1.2.3