summaryrefslogtreecommitdiff
path: root/src/dom/watcher.h
diff options
context:
space:
mode:
authorMichael Drake <tlsa@netsurf-browser.org>2017-02-05 22:41:04 +0000
committerMichael Drake <tlsa@netsurf-browser.org>2017-02-05 22:41:04 +0000
commitf18b7ad86fe25e32cac7d9bca1abe92c46437535 (patch)
tree6ec3bf938c0b7a20600151085325b04ea349f173 /src/dom/watcher.h
parent39f7357b388d2e00d307419ccd2d761180eb5c5c (diff)
downloadlibnslayout-f18b7ad86fe25e32cac7d9bca1abe92c46437535.tar.gz
libnslayout-f18b7ad86fe25e32cac7d9bca1abe92c46437535.tar.bz2
dom watcher: Add callback for dom mutation watching.
Diffstat (limited to 'src/dom/watcher.h')
-rw-r--r--src/dom/watcher.h36
1 files changed, 35 insertions, 1 deletions
diff --git a/src/dom/watcher.h b/src/dom/watcher.h
index a6f2568..0883fd2 100644
--- a/src/dom/watcher.h
+++ b/src/dom/watcher.h
@@ -15,15 +15,49 @@ struct dom_document;
struct nsl_dom_watcher;
/**
+ * DOM watcher's mutation types
+ */
+enum nsl_dom_watcher_type {
+ NSL_DOM_WATCHER_NODE_INSERTED,
+ NSL_DOM_WATCHER_NODE_REMOVED,
+ NSL_DOM_WATCHER_SUBTREE_MODIFIED,
+ NSL_DOM_WATCHER_ATTR_MODIFIED,
+ NSL_DOM_WATCHER_CHAR_DATA_MODIFIED,
+ NSL_DOM_WATCHER__COUNT,
+};
+
+
+/**
+ * Callback function for dom modifications.
+ *
+ * \param[in] type The mutation type.
+ * \param[in] node The target node. (Caller yields ownership.)
+ * \param[in] node_type The type of node.
+ * \param[in] pw The dom watcher owner's private data.
+ * \return NSLAYOUT_OK on success, appropriate error otherwise.
+ */
+typedef nslayout_error (*nsl_dom_watcher_cb)(
+ enum nsl_dom_watcher_type type,
+ dom_event_target *node,
+ dom_node_type node_type,
+ void *pw);
+
+
+/**
* Create DOM change watcher for a DOM document.
*
* \param[out] watcher_out Returns a dom watcher object for layout.
* \param[in] document DOM document to create watcher for.
+ * \param[in] watcher_cb Function to call when dom modification happens.
+ * \param[in] pw Private data passed back to `watcher_cb`.
* \return NSLAYOUT_OK on success, appropriate error otherwise.
*/
nslayout_error nsl_dom_watcher_create(
struct nsl_dom_watcher **watcher_out,
- dom_document *document);
+ dom_document *document,
+ nsl_dom_watcher_cb watcher_cb,
+ void *pw);
+
/**
* Destroy a document change DOM change watcher.