Strasbourg, July 27th, 2014
+
=
by Adrian Perez
screenshot by Alex Diavatis

gsettings set org.gnome.Epiphany \
process-model one-secondary-process-per-web-view // or 'shared-secondary-process'
int main(int argc, char **argv)
{
webkit_web_context_set_process_model (
webkit_web_context_get_default (),
WEBKIT_PROCESS_MODEL_MULTIPLE_SECONDARY_PROCESSES);
/* The rest of the application code, unmodified */
}
by Adrian Perez
GtkWidget *view, *related_view, *unrelated_view;
void create_views ()
{
/* Create two views which share a Web Process */
view = webkit_web_view_new ();
related_view =
webkit_web_view_new_with_related_view (WEBKIT_WEB_VIEW (view));
/* This view will spawn a new Web Process */
unrelated_view = webkit_web_view_new ();
}
#define WEB_EXTENSIONS_DIRECTORY /* ... */
int main (int argc, char **argv)
{
WebKitWebContext *context = webkit_web_context_get_default ();
GVariant *data = get_data_for_web_extensions ();
webkit_web_context_set_web_extensions_directory (
context, WEB_EXTENSIONS_DIRECTORY);
webkit_web_context_set_web_extensions_initialization_user_data (
context, data);
GtkWidget *view = webkit_web_view_new ();
/* ... */
}
void webkit_web_extension_initialize_with_user_data (
WebKitWebExtension *extension, GVariant *user_data)
{
/* Initialize the extension, using “user_data” */
}
#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 ();
/* ... */
}
screencast by Carlos Garnacho
screencast by Claudio Saavedra
screencast by Claudio Saavedra
screenshot by Claudio Saavedra
screenshot by Claudio Saavedra