summaryrefslogtreecommitdiff
path: root/content
diff options
context:
space:
mode:
authorVincent Sanders <vince@kyllikki.org>2014-11-06 22:51:46 +0000
committerVincent Sanders <vince@kyllikki.org>2014-11-06 22:51:46 +0000
commit8c2cfecfb5e83d023609914dd101c23777fd2906 (patch)
treedf076fe2b22f0ecc6ec97d32a6b59f8ffa278d9b /content
parent46f369ca9ee79af5e7a121551fe9715101d27395 (diff)
downloadnetsurf-8c2cfecfb5e83d023609914dd101c23777fd2906.tar.gz
netsurf-8c2cfecfb5e83d023609914dd101c23777fd2906.tar.bz2
Allow content handlers to have debug values set through API
Previously content handler debugging features were accessed by global variables. This allows the setting of debugging parameters via a content API giving per content control over debugging features. Currently only used by the html content handler to toggle global redraw debugging.
Diffstat (limited to 'content')
-rw-r--r--content/content.c16
-rw-r--r--content/content.h11
-rw-r--r--content/content_protected.h1
3 files changed, 27 insertions, 1 deletions
diff --git a/content/content.c b/content/content.c
index 728147f31..83fdacf78 100644
--- a/content/content.c
+++ b/content/content.c
@@ -872,6 +872,22 @@ nserror content_debug_dump(struct hlcache_handle *h, FILE *f, enum content_debug
return c->handler->debug_dump(c, f, op);
}
+/* exported interface documented in content/content.h */
+nserror content_debug(struct hlcache_handle *h, enum content_debug op)
+{
+ struct content *c = hlcache_handle_get_content(h);
+
+ if (c == NULL) {
+ return NSERROR_BAD_PARAMETER;
+ }
+
+ if (c->handler->debug == NULL) {
+ return NSERROR_NOT_IMPLEMENTED;
+ }
+
+ return c->handler->debug(c, op);
+}
+
void content_add_error(struct content *c, const char *token,
unsigned int line)
diff --git a/content/content.h b/content/content.h
index 67a519df6..bc47ffef0 100644
--- a/content/content.h
+++ b/content/content.h
@@ -90,7 +90,8 @@ typedef enum {
/** Debugging dump operations */
enum content_debug {
CONTENT_DEBUG_RENDER, /** Debug the contents rendering. */
- CONTENT_DEBUG_DOM /** Debug teh contents Document Object. */
+ CONTENT_DEBUG_DOM, /** Debug the contents Document Object. */
+ CONTENT_DEBUG_REDRAW /** Debug redraw operations. */
};
/** RFC5988 metadata link */
@@ -300,6 +301,14 @@ void content_search_clear(struct hlcache_handle *h);
*/
nserror content_debug_dump(struct hlcache_handle *h, FILE *f, enum content_debug op);
+/**
+ * Control debug con a content.
+ *
+ * \param h content handle to debug.
+ * \param op Debug operation type.
+ */
+nserror content_debug(struct hlcache_handle *h, enum content_debug op);
+
struct content_rfc5988_link *content_find_rfc5988_link(struct hlcache_handle *c,
lwc_string *rel);
diff --git a/content/content_protected.h b/content/content_protected.h
index ce161befc..af274ef5a 100644
--- a/content/content_protected.h
+++ b/content/content_protected.h
@@ -77,6 +77,7 @@ struct content_handler {
const char *string);
void (*search_clear)(struct content *c);
nserror (*debug_dump)(struct content *c, FILE *f, enum content_debug op);
+ nserror (*debug)(struct content *c, enum content_debug op);
nserror (*clone)(const struct content *old, struct content **newc);
bool (*matches_quirks)(const struct content *c, bool quirks);
const char *(*get_encoding)(const struct content *c);