[webkit-gtk] Send HTTP header line for every request

Adrián Pérez de Castro aperez at igalia.com
Mon Jun 27 05:17:14 PDT 2016


Hi there,

Quoting Carlos Garcia Campos (2016-06-27 08:21:13)
> El dom, 26-06-2016 a las 18:53 +0200, Jay Strict escribió:
> > On 26.06.2016 08:20, Carlos Garcia Campos wrote:
> > > So, the answer is yes, you need a web extension, and the API you
> > > want
> > > is the signal WebKitWebPage::send-request. That signal is emitted
> > > right
> > > after the request is created and before it's sent to the network
> > > process, so that you can modify the request or even block it. The
> > > problem is how to create a web extension when using the js
> > > bindings,
> > > because a web extension is a .so loaded by the web process at
> > > startup.
> > > So at this moment I'm afraid it's not possible to do that with js,
> > > but
> > > I guess you could write the web extension in C, it will be just a
> > > few
> > > lines of code.
> > 
> > That's a pity, because Gnome shell extensions seem to support only
> > JS.
> > You can upload the extensions on extensions.gnome.org, but what .so
> > file
> > should I upload? For every platform, there must be a different .so
> > file.
> > Furthermore, I suppose the Gnome people wouldn't accept a binary file
> > uploaded there.
> > 
> > Is there any other way?
> 
> I don't think so.
> 
> > > 
> > > > Fortunately, I think you can get the behavior you want using the
> > > > UI
> > > > process API, by connecting to the resource-load-started signal of
> > > > WebKitWebView; that will give you a WebKitURIRequest that you can
> > > > modify. I haven't tried this before; hope it works for you.
> > > 
> > > No, that signal is emitted when the request has already been sent,
> > > note
> > > that the signal is named resource-load-started, it has already
> > > started,
> > > and the signal is only a notification.
> > 
> > 
> > I don't know much about WebKitGTK, but do you think there is any
> > chance
> > that the authors (is that you?) would consider accepting a feature
> > request for my use case?
> 
> Of course, we just need to fully understand the problem and decide how
> to make it possible. The easiest solution might be to add support for
> loading JS web extensions. Adri started to work on python web
> extensions, I don't know if JS support would be very different. See:
> 
> https://lists.webkit.org/pipermail/webkit-gtk/2015-August/002416.html
> 
> This would be the ideal solution in my opinion. But we could also add
> API to the UI process to provide a set of headers to be added to any
> request, for example, and use that from the web process. This would
> probably be easier, but we can't add UI process API for every single
> web extension feature required by JS apps, so adding a way to load JS
> extensions would be much better.

I do agree with Carlos here, and WebKitGTK+ should provide a way of loading
JavaScript web extensions. As for Python, I have a working proof of concept
C WebExtension which is a shim that itself loads the Python extension. You
can check it here:

  https://github.com/aperezdc/webkit2gtk-python-webextension-example

(I am aware of a couple of people using the code in there as a basis for
their Python applications which need a web extension, though in the longer
term we will have something similar shipped with WebKitGTK+.)

Having a similar proof-of-concept for JavaScript extensions would be great.
Ideally, it would be great to use JavaScriptCore for that, because it is
part of WebKitGTK+. As tempting as it might be to use GJS, it looks like
sticking to JSC (via Seed, see https://wiki.gnome.org/Projects/Seed) would
be better to have less dependencies in the case where one wants to use
WebKitGTK+ *without* having GNOME Shell installed.

Cheers,


--
 ☛ Adrián
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: signature
URL: <https://lists.webkit.org/pipermail/webkit-gtk/attachments/20160627/60403ebc/attachment.sig>


More information about the webkit-gtk mailing list