WebExtension


Object Hierarchy:

WebKit.WebExtension WebKit.WebExtension WebKit.WebExtension GLib.Object GLib.Object GLib.Object->WebKit.WebExtension

Description:

[ CCode ( type_id = "webkit_web_extension_get_type ()" ) ]
public class WebExtension : Object

Represents an extension of the WebProcess.

WebKitWebExtension is a loadable module for the WebProcess. It allows you to execute code in the WebProcess and being able to use the DOM API, to change any request or to inject custom JavaScript code, for example.

To create a WebKitWebExtension you should write a module with an initialization function that could be either webkit_web_extension_initialize with prototype WebExtensionInitializeFunction or webkit_web_extension_initialize_with_user_data with prototype WebExtensionInitializeWithUserDataFunction. This function has to be public and it has to use the G_MODULE_EXPORT macro. It is called when the web process is initialized.

```c static void web_page_created_callback (WebKitWebExtension *extension, WebKitWebPage *web_page, gpointer user_data) { g_print ( "Page d created for s\n", webkit_web_page_get_id (web_page), webkit_web_page_get_uri (web_page)); }

G_MODULE_EXPORT void webkit_web_extension_initialize (WebKitWebExtension *extension) { g_signal_connect (extension, "page-created", G_CALLBACK (web_page_created_callback), NULL); } ```

The previous piece of code shows a trivial example of an extension that notifies when a WebPage is created.

WebKit has to know where it can find the created WebKitWebExtension. To do so you should use the webkit_web_context_set_web_extensions_directory function. The signal WebKitWebContext::initialize-web-extensionss is the recommended place to call it.

To provide the initialization data used by the webkit_web_extension_initialize_with_user_data function, you have to call webkit_web_context_set_web_extensions_initialization_user_data with the desired data as parameter. You can see an example of this in the following piece of code:

```c define WEB_EXTENSIONS_DIRECTORY // ...

static void initialize_web_extensions (WebKitWebContext *context, gpointer user_data) { // Web Extensions get a different ID for each Web Process static guint32 unique_id = 0;

webkit_web_context_set_web_extensions_directory ( context, WEB_EXTENSIONS_DIRECTORY); webkit_web_context_set_web_extensions_initialization_user_data ( context, g_variant_new_uint32 (unique_id++)); }

int main (int argc, char **argv) { g_signal_connect (webkit_web_context_get_default (), "initialize-web-extensions", G_CALLBACK ( initialize_web_extensions), NULL);

GtkWidget *view = webkit_web_view_new ();

// ... } ```


Namespace: WebKit

Content:

Creation methods:

Methods:

Signals:

Inherited Members:

All known members inherited from class GLib.Object



2022 vala-language.org