since: 2.40

Description [src]

final class WebKitWebProcessExtension.WebProcessExtension : GObject.Object
  /* No available fields */

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 being able 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 WebKitWebProcessExtensionInitializeFunction or webkit_web_process_extension_initialize_with_user_data() with prototype WebKitWebProcessExtensionInitializeWithUserDataFunction. 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.

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));

webkit_web_process_extension_initialize (WebKitWebProcessExtension *extension)
    g_signal_connect (extension, "page-created",
                      G_CALLBACK (web_page_created_callback),

The previous piece of code shows a trivial example of an extension that notifies when a WebKitWebPage 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_extensions_directory() function. The signal WebKitWebContext::initialize-web-extensions 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_extensions_initialization_user_data() with the desired data as parameter. You can see an example of this in the following piece of code:


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 (
  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 (),
                    G_CALLBACK (initialize_web_extensions),

  GtkWidget *view = webkit_web_view_new ();

  // ...

Available since: 2.40


hierarchy this WebKitWebProcessExtension ancestor_0 GObject ancestor_0--this


Instance methods


Get the web page of the given page_id.

since: 2.40


Send message to the WebKitWebContext corresponding to extension. If message is floating, it’s consumed.

since: 2.40


Finish an asynchronous operation started with webkit_web_process_extension_send_message_to_context().

since: 2.40

Methods inherited from GObject (43)

Please see GObject for a full list of methods.



This signal is emitted when a new WebKitWebPage is created in the Web Process.

since: 2.40


This signal is emitted when a WebKitUserMessage is received from the WebKitWebContext corresponding to extension. Messages sent by WebKitWebContext are always broadcasted to all web extensions and they can’t be replied to. Calling webkit_user_message_send_reply() will do nothing.

since: 2.40

Signals inherited from GObject (1)

The notify signal is emitted on an object when one of its properties has its value set through g_object_set_property(), g_object_set(), et al.

Class structure

struct WebKitWebProcessExtensionWebProcessExtensionClass {
  GObjectClass parent_class;

No description available.

Class members
parent_class: GObjectClass

No description available.