[webkit-gtk] Can't find a way to implement content blocking (filtering)
Michael Catanzaro
mcatanzaro at gnome.org
Tue May 4 06:07:27 PDT 2021
On Tue, May 4 2021 at 08:07:00 AM +0200, linuxfan at tin.it wrote:
> I noticed that there is a very similar signal also in
> webkit, but to use it one has to use an extension which, it seems to
> me, has to be an external library. Even if I could try to write and
> compile a similar library, then the dialog between the library and the
> main application would be quite complicated, I think.
This is the only way to do it. You need to use the
WebKitWebPage::send-request signal. Return TRUE to cancel the resource
load, or FALSE to continue the load. WebKitWebPage is a web process
object: you wouldn't want this API in the UI process because then the
web process to have to wait on IPC to the UI process for every single
resource to be loaded.
Writing a web process extension is easy, don't worry. Especially so
when you only have one signal to implement. There are plenty of
examples out there, e.g.:
https://gitlab.gnome.org/GNOME/epiphany/-/blob/6be2365125f7c3710635aabb1aeed420df5d84c7/embed/web-process-extension/ephy-web-process-extension.c.
Except your extension will be much simpler than that. You connect to
WebKitWebExtension::page-created in your
WebKitWebKitensionInitializeFunction, and in your page-created callback
you can connect to WebKitWebPage::send-request. And that's about it.
Compiling it into a shared object is easy too, e.g.:
https://gitlab.gnome.org/GNOME/epiphany/-/blob/6be2365125f7c3710635aabb1aeed420df5d84c7/embed/web-process-extension/meson.build#L23
Good luck,
Michael
More information about the webkit-gtk
mailing list