summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Silverstone <dsilvers@netsurf-browser.org>2012-03-24 19:55:01 +0000
committerDaniel Silverstone <dsilvers@netsurf-browser.org>2012-03-24 19:55:01 +0000
commite8949416b4a1f7102cd4d8bf3e6003e946b97c43 (patch)
tree21619653850f62878ed944930c4f6679fc0ff466
parent7e5fc5d1da1e38fb7bc47781b76ca10b84ab110c (diff)
downloadlibdom-e8949416b4a1f7102cd4d8bf3e6003e946b97c43.tar.gz
libdom-e8949416b4a1f7102cd4d8bf3e6003e946b97c43.tar.bz2
Rudimentary API for dom_html_document_{get,set}_quirks_mode -- Replete with exception API for orthogonality if not happiness
svn path=/trunk/libdom/; revision=13614
-rw-r--r--include/dom/html/html_document.h22
-rw-r--r--src/html/html_document.c17
-rw-r--r--src/html/html_document.h10
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);