diff options
author | Michael Drake <tlsa@netsurf-browser.org> | 2017-02-05 22:41:04 +0000 |
---|---|---|
committer | Michael Drake <tlsa@netsurf-browser.org> | 2017-02-05 22:41:04 +0000 |
commit | f18b7ad86fe25e32cac7d9bca1abe92c46437535 (patch) | |
tree | 6ec3bf938c0b7a20600151085325b04ea349f173 /src/dom/watcher.h | |
parent | 39f7357b388d2e00d307419ccd2d761180eb5c5c (diff) | |
download | libnslayout-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.h | 36 |
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. |