[webkit-gtk] Webkit GTK 3.0: Using the DOM Tree Walker

charles at hailoo.com charles at hailoo.com
Thu Aug 2 06:09:29 PDT 2012

I'm experimenting with Webkit GTK DOM TreeWalker API.  Creating a 
TreeWalker with WebKit GTK seems pretty straightforward - except for one 
big problem: the fourth argument in the 
webkit_dom_document_create_tree_walker expects a filter object - that 
is, it wants an instance of WebKitDOMNodeFilter. Well, the 
document.createTreeWalker Javascript function also takes a filter, but 
you can pass null if you don't want to use a filter. With the Webkit 
API, passing NULL doesn't work. If you call:

WebKitDOMTreeWalker* walker = 
webkit_dom_document_create_tree_walker(doc, root, SHOW_ALL, NULL, false, 

You get an assertion failure:

** (webkit:3367): CRITICAL : WebKitDOMTreeWalker* 
WebKitDOMNode*, gulong, WebKitDOMNodeFilter*, gboolean, GError): 
assertion `filter' failed

So, the WebKit GTK API won't accept a NULL pointer for the filter 
argument. You need to pass an instance of a WebKitDOMNodeFilter. Okay, 
again - this wouldn't be a problem either, except I've searched far and 
wide through the WebKit GTK API, and I can't find anyway to create a 
WebKitDOMNodeFilter object. The header file for WebKitDOMNodeFilter.h 
doesn't expose any constructor for WebKitDOMNodeFilter. It seems like 
the API doesn't ever expose anyway to actually construct a 
WebKitDOMNodeFilter object at all.

Yet... the API exposes many functions (like 
webkit_dom_document_create_tree_walker, and 
webkit_dom_document_create_node_iterator) which require a 
WebKitDOMNodeFilter. So... is the API just incomplete right now? Or, is 
there some way to create a Filter object which I'm just not seeing?

More information about the webkit-gtk mailing list