From 7f46d9136b2356e910f20429ec3ec7bfa265c29c Mon Sep 17 00:00:00 2001 From: Daniel Silverstone Date: Sat, 24 Mar 2012 22:16:06 +0000 Subject: Migrate quirks from html_document to document svn path=/trunk/libdom/; revision=13633 --- bindings/hubbub/parser.c | 12 ++++++------ include/dom/core/document.h | 32 ++++++++++++++++++++++++++++++++ include/dom/html/html_document.h | 32 -------------------------------- src/core/document.c | 17 +++++++++++++++++ src/core/document.h | 14 ++++++++++++-- src/html/html_document.c | 17 ----------------- src/html/html_document.h | 14 ++++---------- 7 files changed, 71 insertions(+), 67 deletions(-) diff --git a/bindings/hubbub/parser.c b/bindings/hubbub/parser.c index 7b41c92..ab6fbbf 100644 --- a/bindings/hubbub/parser.c +++ b/bindings/hubbub/parser.c @@ -755,16 +755,16 @@ static hubbub_error set_quirks_mode(void *parser, hubbub_quirks_mode mode) switch (mode) { case HUBBUB_QUIRKS_MODE_NONE: - dom_html_document_set_quirks_mode(dom_parser->doc, - DOM_HTML_DOCUMENT_QUIRKS_MODE_NONE); + dom_document_set_quirks_mode(dom_parser->doc, + DOM_DOCUMENT_QUIRKS_MODE_NONE); break; case HUBBUB_QUIRKS_MODE_LIMITED: - dom_html_document_set_quirks_mode(dom_parser->doc, - DOM_HTML_DOCUMENT_QUIRKS_MODE_LIMITED); + dom_document_set_quirks_mode(dom_parser->doc, + DOM_DOCUMENT_QUIRKS_MODE_LIMITED); break; case HUBBUB_QUIRKS_MODE_FULL: - dom_html_document_set_quirks_mode(dom_parser->doc, - DOM_HTML_DOCUMENT_QUIRKS_MODE_FULL); + dom_document_set_quirks_mode(dom_parser->doc, + DOM_DOCUMENT_QUIRKS_MODE_FULL); break; } diff --git a/include/dom/core/document.h b/include/dom/core/document.h index 58d4639..31a46b3 100644 --- a/include/dom/core/document.h +++ b/include/dom/core/document.h @@ -34,6 +34,16 @@ struct lwc_string_s; typedef struct dom_document dom_document; +/** + * Quirks mode flag + */ +typedef enum dom_document_quirks_mode { + DOM_DOCUMENT_QUIRKS_MODE_NONE, + DOM_DOCUMENT_QUIRKS_MODE_LIMITED, + DOM_DOCUMENT_QUIRKS_MODE_FULL +} dom_document_quirks_mode; + + /* DOM Document vtable */ typedef struct dom_document_vtable { struct dom_node_vtable base; @@ -114,6 +124,10 @@ typedef struct dom_document_vtable { dom_exception (*dom_document_rename_node)(struct dom_document *doc, struct dom_node *node, dom_string *namespace, dom_string *qname, struct dom_node **result); + dom_exception (*get_quirks_mode)(dom_document *doc, + dom_document_quirks_mode *result); + dom_exception (*set_quirks_mode)(dom_document *doc, + dom_document_quirks_mode quirks); } dom_document_vtable; static inline dom_exception dom_document_get_doctype(struct dom_document *doc, @@ -440,4 +454,22 @@ static inline dom_exception dom_document_rename_node(struct dom_document *doc, (dom_document *) (d), (dom_string *) (ns), \ (dom_string *) (q), (dom_node **) (r)) +static inline dom_exception dom_document_get_quirks_mode( + dom_document *doc, dom_document_quirks_mode *result) +{ + return ((dom_document_vtable *) ((dom_node *) doc)->vtable)-> + get_quirks_mode(doc, result); +} +#define dom_document_get_quirks_mode(d, r) \ + dom_document_get_quirks_mode((dom_document *) (d), (r)) + +static inline dom_exception dom_document_set_quirks_mode( + dom_document *doc, dom_document_quirks_mode quirks) +{ + return ((dom_document_vtable *) ((dom_node *) doc)->vtable)-> + set_quirks_mode(doc, quirks); +} +#define dom_document_set_quirks_mode(d, q) \ + dom_document_set_quirks_mode((dom_document *) (d), (q)) + #endif diff --git a/include/dom/html/html_document.h b/include/dom/html/html_document.h index 0f23bfa..6270f47 100644 --- a/include/dom/html/html_document.h +++ b/include/dom/html/html_document.h @@ -20,16 +20,6 @@ struct dom_nodelist; typedef struct dom_html_document dom_html_document; -/** - * Quirks mode flag - */ -typedef enum dom_html_document_quirks_mode { - DOM_HTML_DOCUMENT_QUIRKS_MODE_NONE, - DOM_HTML_DOCUMENT_QUIRKS_MODE_LIMITED, - DOM_HTML_DOCUMENT_QUIRKS_MODE_FULL -} dom_html_document_quirks_mode; - - typedef struct dom_html_document_vtable { struct dom_document_vtable base; @@ -70,10 +60,6 @@ typedef struct dom_html_document_vtable { dom_string *text); dom_exception (*get_elements_by_name)(dom_html_document *doc, dom_string *name, struct dom_nodelist **list); - dom_exception (*get_quirks_mode)(dom_html_document *doc, - dom_html_document_quirks_mode *result); - dom_exception (*set_quirks_mode)(dom_html_document *doc, - dom_html_document_quirks_mode quirks); } dom_html_document_vtable; static inline dom_exception dom_html_document_get_title( @@ -264,23 +250,5 @@ static inline dom_exception dom_html_document_get_elements_by_name(dom_html_docu dom_html_document_get_element_by_name((dom_html_document *) (d), \ (dom_string *) (n), (struct dom_nodelist **) (l)) -static inline dom_exception dom_html_document_get_quirks_mode( - dom_html_document *doc, dom_html_document_quirks_mode *result) -{ - return ((dom_html_document_vtable *) ((dom_node *) doc)->vtable)-> - get_quirks_mode(doc, result); -} -#define dom_html_document_get_quirks_mode(d, r) \ - dom_html_document_get_quirks_mode((dom_html_document *) (d), (r)) - -static inline dom_exception dom_html_document_set_quirks_mode( - dom_html_document *doc, dom_html_document_quirks_mode quirks) -{ - return ((dom_html_document_vtable *) ((dom_node *) doc)->vtable)-> - set_quirks_mode(doc, quirks); -} -#define dom_html_document_set_quirks_mode(d, q) \ - dom_html_document_set_quirks_mode((dom_html_document *) (d), (q)) - #endif diff --git a/src/core/document.c b/src/core/document.c index fbdaa7a..ef2a54e 100644 --- a/src/core/document.c +++ b/src/core/document.c @@ -131,6 +131,7 @@ dom_exception _dom_document_initialise(dom_document *doc, list_init(&doc->pending_nodes); doc->id_name = NULL; + doc->quirks = DOM_DOCUMENT_QUIRKS_MODE_NONE; err = dom_string_create_interned((const uint8_t *) "class", SLEN("class"), &doc->class_string); @@ -1374,3 +1375,19 @@ void _dom_document_set_id_name(dom_document *doc, dom_string *name) doc->id_name = dom_string_ref(name); } +/*-----------------------------------------------------------------------*/ +/* Semi-internal API extensions for NetSurf */ + +dom_exception _dom_document_get_quirks_mode(dom_document *doc, + dom_document_quirks_mode *result) +{ + *result = doc->quirks; + return DOM_NO_ERR; +} + +dom_exception _dom_document_set_quirks_mode(dom_document *doc, + dom_document_quirks_mode quirks) +{ + doc->quirks = quirks; + return DOM_NO_ERR; +} diff --git a/src/core/document.h b/src/core/document.h index a53c358..d8e6945 100644 --- a/src/core/document.h +++ b/src/core/document.h @@ -55,7 +55,9 @@ struct dom_document { dom_string *class_string; /**< The string "class". */ dom_document_event_internal dei; - /**< The DocumentEVent interface */ + /**< The DocumentEvent interface */ + dom_document_quirks_mode quirks; + /**< Document is in quirks mode */ }; /* Create a DOM document */ @@ -139,6 +141,11 @@ dom_exception _dom_document_rename_node(dom_document *doc, dom_node *node, dom_string *namespace, dom_string *qname, dom_node **result); +dom_exception _dom_document_get_quirks_mode(dom_document *doc, + dom_document_quirks_mode *result); +dom_exception _dom_document_set_quirks_mode(dom_document *doc, + dom_document_quirks_mode result); + dom_exception _dom_document_get_text_content(dom_node_internal *node, dom_string **result); @@ -176,7 +183,10 @@ dom_exception _dom_document_set_text_content(dom_node_internal *node, _dom_document_adopt_node, \ _dom_document_get_dom_config, \ _dom_document_normalize, \ - _dom_document_rename_node + _dom_document_rename_node, \ + _dom_document_get_quirks_mode, \ + _dom_document_set_quirks_mode + /* End of vtable */ #define DOM_NODE_VTABLE_DOCUMENT \ diff --git a/src/html/html_document.c b/src/html/html_document.c index 9bce128..52e0b9c 100644 --- a/src/html/html_document.c +++ b/src/html/html_document.c @@ -73,7 +73,6 @@ dom_exception _dom_html_document_initialise(dom_html_document *doc, doc->domain = NULL; doc->url = NULL; doc->cookie = NULL; - doc->quirks = false; return DOM_NO_ERR; } @@ -348,19 +347,3 @@ dom_exception _dom_html_document_get_elements_by_name(dom_html_document *doc, return DOM_NOT_SUPPORTED_ERR; } -/*-----------------------------------------------------------------------*/ -/* Semi-internal API extensions for NetSurf */ - -dom_exception _dom_html_document_get_quirks_mode(dom_html_document *doc, - dom_html_document_quirks_mode *result) -{ - *result = doc->quirks; - return DOM_NO_ERR; -} - -dom_exception _dom_html_document_set_quirks_mode(dom_html_document *doc, - dom_html_document_quirks_mode quirks) -{ - doc->quirks = quirks; - return DOM_NO_ERR; -} diff --git a/src/html/html_document.h b/src/html/html_document.h index 6d60aa5..3b7ed58 100644 --- a/src/html/html_document.h +++ b/src/html/html_document.h @@ -23,8 +23,6 @@ struct dom_html_document { dom_string *domain; /**< HTML document domain */ dom_string *url; /**< HTML document URL */ dom_string *cookie; /**< HTML document cookie */ - dom_html_document_quirks_mode quirks; - /**< HTML document is in quirks mode */ }; /* Create a HTMLDocument */ @@ -82,10 +80,6 @@ dom_exception _dom_html_document_writeln(dom_html_document *doc, dom_string *text); dom_exception _dom_html_document_get_elements_by_name(dom_html_document *doc, dom_string *name, struct dom_nodelist **list); -dom_exception _dom_html_document_get_quirks_mode(dom_html_document *doc, - dom_html_document_quirks_mode *result); -dom_exception _dom_html_document_set_quirks_mode(dom_html_document *doc, - dom_html_document_quirks_mode result); #define DOM_HTML_DOCUMENT_VTABLE \ @@ -107,9 +101,7 @@ dom_exception _dom_html_document_set_quirks_mode(dom_html_document *doc, _dom_html_document_close, \ _dom_html_document_write, \ _dom_html_document_writeln, \ - _dom_html_document_get_elements_by_name, \ - _dom_html_document_get_quirks_mode, \ - _dom_html_document_set_quirks_mode + _dom_html_document_get_elements_by_name dom_exception _dom_html_document_create_element(dom_document *doc, dom_string *tag_name, dom_element **result); @@ -148,7 +140,9 @@ dom_exception _dom_html_document_create_element_ns(dom_document *doc, _dom_document_adopt_node, \ _dom_document_get_dom_config, \ _dom_document_normalize, \ - _dom_document_rename_node + _dom_document_rename_node, \ + _dom_document_get_quirks_mode, \ + _dom_document_set_quirks_mode #endif -- cgit v1.2.3