[ CCode ( type_id = "webkit_web_process_extension_get_type ()" ) ]
[ Version ( since = "2.40" ) ]
public sealed class WebProcessExtension : Object
Represents an extension of the web process.
WebKitWebProcessExtension is a loadable module for the web process. It allows you to execute code in the web process and to use the DOM API, to change any request or to inject custom JavaScript code, for example.
To create a WebKitWebProcessExtension you should write a module with an initialization function that could be either
webkit_web_process_extension_initialize with prototype
WebProcessExtensionInitializeFunction or
webkit_web_process_extension_initialize_with_user_data with prototype
WebProcessExtensionInitializeWithUserDataFunction
. 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 (WebKitWebProcessExtension *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_process_extension_initialize (WebKitWebProcessExtension *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 WebKitWebProcessExtension. To do so you should use the
webkit_web_context_set_web_process_extensions_directory function. The signal
WebKitWebContext::initialize-web-process-extensionss is the recommended place to call it.
To provide the initialization data used by the webkit_web_process_extension_initialize_with_user_data function, you have to
call webkit_web_context_set_web_process_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_PROCESS_EXTENSIONS_DIRECTORY // ...
static void initialize_web_process_extensions (WebKitWebContext *context, gpointer user_data) { // Web process extensions get a different ID for each web process static guint32 unique_id = 0;
webkit_web_context_set_web_process_extensions_directory ( context, WEB_PROCESS_EXTENSIONS_DIRECTORY); webkit_web_context_set_web_process_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-process-extensions", G_CALLBACK (initialize_web_process_extensions), NULL);
// With the legacy libwpe backend, WPE also needs the "backend" property WebKitWebView *view = g_object_new (WEBKIT_TYPE_WEB_VIEW, NULL) ;
// ... } ```