[webkit-gtk] Migrating to Webkit2 from WebKit1

Niranjan Rao nhrdls at gmail.com
Fri Dec 13 15:07:59 PST 2013

Thank you all for great answers.

I have lot to chew and need to experiment lot of things. But its a very 
good start.

Excited with the prospects of moving new platform.

On 12/13/2013 12:24 AM, Carlos Garcia Campos wrote:
> El jue, 12-12-2013 a las 12:50 -0800, Niranjan Rao escribió:
>> Hi,
>> Thank you for the response. Very helpful.
>> I am trying to understand web process separation and how it impacts our
>> code. Today we spawn multiple separate processes with web view embedded
>> and drive it. No data is shared between these processes.
>> With new architecture will this still be the case? Can I have multiple
>> processes running and still maintain data isolation between these
>> processes?
> Yes, you can continue doing the same thing, for every process you spawn
> you will have a web process spawned that you can set up with different
> cookies file, icons dir, etc.
> With WebKit2 it's also possible to share a common UI process with
> multiple web processes that don't share anything, using multiple web
> contexts, but we don't allow it yet in the GTK+ API, because we haven't
> found a use case for that. If you need it, we will add it to the API.
>>   Some of the data we get from sites visited is session based
>> and its important for us not to mix sessions when we are visiting same
>> sites using two different processes. We do especially care about cookies
>> and not mixing it. For current release we setup separate cookie jar file
>> for each process. I know they still share some HTML5 data, but not many
>> sites are using those features today.
> You can handle those things in the web context API, see
> http://webkitgtk.org/reference/webkit2gtk/stable/WebKitWebContext.html
> webkit_web_context_set_disk_cache_directory()
> webkit_web_context_set_web_extensions_directory()
> webkit_web_context_set_favicon_database_directory()
> webkit_web_context_get_cookie_manager() +
> webkit_cookie_manager_set_persistent_storage()
> If there's anything missing, please file a bug report.
>> Regards,
>> Niranjan
>> On 12/12/2013 11:42 AM, Carlos Garcia Campos wrote:
>>> El jue, 12-12-2013 a las 11:25 -0800, Niranjan Rao escribió:
>>>> Greetings,
>>> Hi,
>>>> I am trying scope efforts required to migrate to Webkit2 from Webkit1. I
>>>> came across blog entry by Carlos Garcia Campos at
>>>> http://blogs.igalia.com/carlosgc/2013/09/10/webkit2gtk-web-process-extensions/,
>>>> which answered some of questions/problems I had with newer release, it
>>>> raised some new questions as I started digging into API.
>>>> Currently we use webkit 2.0.1 release in Webkit1 mode. We would like to
>>>> move latest and greatest to use some new useful features (big thank you
>>>> for these features).
>>>> My application is in Java using JNI calls to webkit. Its a scraping
>>>> application for all practical purposes where code "understands" contents
>>>> of the page and then decides which field needs to filled, selected or
>>>> clicked. In other words it drives browser window in similar way a human
>>>> will drive, but decisions coming from code which involves heavy DOM
>>>> access and manipulation.
>>>> 1. How long webkit1 support will be active? Will there be a cutoff point
>>>> that says Webkit1 will not be supported after this point
>>> WebKit1 is in maintenance mode, we only fix bugs and some minor API
>>> additions like settings and all in a very low priority. But we don't
>>> have plans to remove WebKit1 in the short term.
>>>> 2. Can  Webkit2 be used by python libraries using introspection? While
>>>> not necessary for our code, it makes life easier to do quick test in python.
>>> Yes, with some limitations. Web Extensions can't be used for now. We are
>>> not generating the introspection files for the web extensions API (I
>>> plan to fix that soon), but the main problem is that web extensions are
>>> a shared library loaded at run time by the web process, so I don't know
>>> how to make that work in python.
>>>> 3. New window - could not locate equivalent of "create-web-view" signal
>>>> so far. If a page needs to have new window, how do I handle this?
>>> http://webkitgtk.org/reference/webkit2gtk/stable/WebKitWebView.html#WebKitWebView-create
>>>> 5. My code does lot of DOM manipulation. We have  a driver thread which
>>>> channels DOM requests to GUI thread using gtk_idle_add. With new
>>>> architecture with extensions and processes, do we need to change this
>>>> strategy?
>>> You need to move all that code to a web extension, and use a different
>>> way to communicate with the UI process. In Epiphany, we use D-Bus for
>>> such communication, see:
>>> https://git.gnome.org/browse/epiphany/tree/embed/web-extension
>>>> 6. WebKitWebPage::send-request - what exactly is treated as resource?
>>> Everything that is loaded by the frame loader, CSS, images, scripts,
>>> fonts, etc.
>>>> Any thing that will be fetched from remote server like images/css etc?
>>> Yes.
>>>> What about pdf or other files than browser won't display.
>>> This signal is emitted before the request is actually sent to the
>>> server, so that it happens before the policy checker decides whether to
>>> handle that in the web view or not.
>>>> 7. Any other notes/warnings your care to add
>>> Feel free to ask any other question :-)
>>>> Appreciate the great work and new functionality,
>>>> Niranjan
>>> Regards,

More information about the webkit-gtk mailing list