[webkit-gtk] webkitgtk 2.14 basic Webextension skeleton code?

Adrian Perez de Castro aperez at igalia.com
Mon Mar 27 06:20:27 PDT 2017


Hi Leo,

On Fri, 24 Mar 2017 12:39:53 -0400, Leo Ufimtsev <Leonidas at redhat.com> wrote:
> Hello,
> 
> I need to inject javascript objects and thus need to use webkit extensions.
> 
> I was wondering, does anyone have some github project of a bare-bone webkit
> extension snippet that I could build upon?

It's probably not the simplest example possible, but Epiphany does add JS
functionality from its WebExtension. These are some pointers to the bits
relevant to what you want to do:

- First of all, read through the relevant documentation, and keep it under
  your pillow for reference:
  https://webkitgtk.org/reference/webkit2gtk/stable/WebKitWebExtension.html

- You have to define webkit_web_extension_initialize_with_user_data() in your
  extension. The WebKitWebProcess will call this function when it gets loaded.
  https://git.gnome.org/browse/epiphany/tree/embed/web-extension/ephy-web-extension-main.c#n33

- Connect to the WebKitWebExtension::page-created signal:
  https://git.gnome.org/browse/epiphany/tree/embed/web-extension/ephy-web-extension.c#n1596

- Now in the handler for the ::page-created signal you can obtain the main
  frame with webkit_web_page_get_main_frame()
  https://webkitgtk.org/reference/webkit2gtk/stable/WebKitWebPage.html#webkit-web-page-get-main-frame

- Once you have the main frame of a page, you can obtain its JavaScript global
  context with webkit_frame_get_javascript_global_context()
  https://webkitgtk.org/reference/webkit2gtk/stable/WebKitFrame.html#webkit-frame-get-javascript-global-context

At this point, you have a “JSGlobalContextRef”, which is a kind of
“JSContextRef”. You can peruse any online documentation (even Apple's!) which
discusses the JavaScriptCore C API — it's the same as for other platforms. For
example, you can start at the following how-to:

  https://karhm.com/JavaScriptCore_C_API/

For detailed documentation, I would recommend reading the “JS*Ref.h” headers
in the “Source/JavaScriptCore/API/” subdirectory of the WebKit source tree.
They include documentation comments of good quality. For example:

  https://trac.webkit.org/browser/webkit/trunk/Source/JavaScriptCore/API/JSContextRef.h
  https://trac.webkit.org/browser/webkit/trunk/Source/JavaScriptCore/API/JSObjectRef.h

(Documentation for the C API used to be available at the Apple Developer
DocumeDocumentation website; but nowadays they only have the Swift and
Objective-C versions of the documentation, even when the C API is supported
and well documented.)

I hope this helps.

Best regards,

--
 💻 Adrián
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: <https://lists.webkit.org/pipermail/webkit-gtk/attachments/20170327/4ecdb735/attachment.sig>


More information about the webkit-gtk mailing list