diff options
-rw-r--r-- | include/dom/html/html_document.h | 22 | ||||
-rw-r--r-- | src/html/html_document.c | 17 | ||||
-rw-r--r-- | src/html/html_document.h | 10 |
3 files changed, 48 insertions, 1 deletions
diff --git a/include/dom/html/html_document.h b/include/dom/html/html_document.h index 6270f47..1d48cdf 100644 --- a/include/dom/html/html_document.h +++ b/include/dom/html/html_document.h @@ -60,6 +60,10 @@ 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, + bool *result); + dom_exception (*set_quirks_mode)(dom_html_document *doc, + bool quirks); } dom_html_document_vtable; static inline dom_exception dom_html_document_get_title( @@ -250,5 +254,23 @@ 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, bool *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, bool 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/html/html_document.c b/src/html/html_document.c index 52e0b9c..8909743 100644 --- a/src/html/html_document.c +++ b/src/html/html_document.c @@ -73,6 +73,7 @@ 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; } @@ -347,3 +348,19 @@ 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, + bool *result) +{ + *result = doc->quirks; + return DOM_NO_ERR; +} + +dom_exception _dom_html_document_set_quirks_mode(dom_html_document *doc, + bool quirks) +{ + doc->quirks = quirks; + return DOM_NO_ERR; +} diff --git a/src/html/html_document.h b/src/html/html_document.h index f27de20..289f7a2 100644 --- a/src/html/html_document.h +++ b/src/html/html_document.h @@ -23,6 +23,7 @@ struct dom_html_document { dom_string *domain; /**< HTML document domain */ dom_string *url; /**< HTML document URL */ dom_string *cookie; /**< HTML document cookie */ + bool quirks; /**< HTML document is in quirks mode */ }; /* Create a HTMLDocument */ @@ -80,6 +81,11 @@ 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, + bool *result); +dom_exception _dom_html_document_set_quirks_mode(dom_html_document *doc, + bool result); + #define DOM_HTML_DOCUMENT_VTABLE \ _dom_html_document_get_title, \ @@ -100,7 +106,9 @@ dom_exception _dom_html_document_get_elements_by_name(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_elements_by_name, \ + _dom_html_document_get_quirks_mode, \ + _dom_html_document_set_quirks_mode dom_exception _dom_html_document_create_element(dom_document *doc, dom_string *tag_name, dom_element **result); |