Title: [184638] trunk/Source/WebKit2
Revision
184638
Author
[email protected]
Date
2015-05-20 09:13:24 -0700 (Wed, 20 May 2015)

Log Message

[GTK] Add some documentation to WebKitWebExtension
https://bugs.webkit.org/show_bug.cgi?id=142786

Patch by Marcos Chavarría Teijeiro <[email protected]> on 2015-05-20
Reviewed by Carlos Garcia Campos.

WebKitWebExtension API documentation lacks of some details and the information
available is in some contributors blog posts. I add the section
documentation with a small guide about how to use WebExtensions.

The code examples were taken from Carlos García and Adrián Pérez blog
posts.

* WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp:

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (184637 => 184638)


--- trunk/Source/WebKit2/ChangeLog	2015-05-20 15:53:55 UTC (rev 184637)
+++ trunk/Source/WebKit2/ChangeLog	2015-05-20 16:13:24 UTC (rev 184638)
@@ -1,3 +1,19 @@
+2015-05-20  Marcos Chavarría Teijeiro  <[email protected]>
+
+        [GTK] Add some documentation to WebKitWebExtension
+        https://bugs.webkit.org/show_bug.cgi?id=142786
+
+        Reviewed by Carlos Garcia Campos.
+
+        WebKitWebExtension API documentation lacks of some details and the information
+        available is in some contributors blog posts. I add the section
+        documentation with a small guide about how to use WebExtensions.
+
+        The code examples were taken from Carlos García and Adrián Pérez blog
+        posts.
+
+        * WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp:
+
 2015-05-20  Sungmann Cho  <[email protected]>
 
         Rename WebsiteDataStore::isNonPersistent() to WebsiteDataStore::isPersistent().

Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp (184637 => 184638)


--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp	2015-05-20 15:53:55 UTC (rev 184637)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp	2015-05-20 16:13:24 UTC (rev 184638)
@@ -33,6 +33,82 @@
 
 using namespace WebKit;
 
+/**
+ * SECTION: WebKitWebExtension
+ * @Short_description: Represents a WebExtension of the WebProcess
+ * @Title: WebKitWebExtension
+ *
+ * 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 #WebKitWebExtensionInitializeFunction or
+ * webkit_web_extension_initialize_with_user_data() with prototype #WebKitWebExtensionInitializeWithUserDataFunction.
+ * 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.
+ *
+ * <informalexample><programlisting>
+ * 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);
+ * }
+ * </programlisting></informalexample>
+ *
+ * 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 WebKitWebExtension. 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_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:
+ *
+ * <informalexample><programlisting>
+ * #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 ();
+ *
+ *   /<!-- -->* ... *<!-- -->/
+ * }
+ * </programlisting></informalexample>
+ */
+
 enum {
     PAGE_CREATED,
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to