From fca6216c67cea8ac074c6af912526066aa6dd098 Mon Sep 17 00:00:00 2001 From: Carlos Garcia Campos Date: Sun, 17 Mar 2013 16:22:34 +0100 Subject: embed: Use a custom WebKitWebViewGroup for all ephy web views Create all ephy web views with the global group that shares all the global settings. --- embed/ephy-embed-prefs.c | 35 ++++++++++++++++++++++++----------- embed/ephy-embed-prefs.h | 20 +++++++++++++------- embed/ephy-embed.c | 2 ++ embed/ephy-web-view.c | 6 +++++- 4 files changed, 44 insertions(+), 19 deletions(-) diff --git a/embed/ephy-embed-prefs.c b/embed/ephy-embed-prefs.c index e03995787..482b97934 100644 --- a/embed/ephy-embed-prefs.c +++ b/embed/ephy-embed-prefs.c @@ -48,6 +48,7 @@ typedef struct #define ENABLE_SCRIPTS_SETTING "enable-javascript" #define DEFAULT_ENCODING_SETTING "default-charset" static WebKitSettings *webkit_settings = NULL; +static WebKitWebViewGroup *web_view_group = NULL; #else #define ENABLE_SCRIPTS_SETTING "enable-scripts" #define DEFAULT_ENCODING_SETTING "default-encoding" @@ -665,28 +666,29 @@ static const PrefData webkit_pref_entries[] = webkit_pref_callback_cookie_accept_policy }, }; -#ifdef HAVE_WEBKIT2 -static void -ephy_embed_prefs_apply (EphyEmbed *embed, WebKitSettings *settings) -#else +#ifndef HAVE_WEBKIT2 static void ephy_embed_prefs_apply (EphyEmbed *embed, WebKitWebSettings *settings) -#endif { webkit_web_view_set_settings (EPHY_GET_WEBKIT_WEB_VIEW_FROM_EMBED (embed), settings); } +#endif void ephy_embed_prefs_init (void) { int i; #ifdef HAVE_WEBKIT2 - webkit_settings = webkit_settings_new_with_settings ("enable-developer-extras", TRUE, - "enable-fullscreen", TRUE, - "enable-site-specific-quirks", TRUE, - "enable-dns-prefetching", TRUE, - NULL); + web_view_group = webkit_web_view_group_new ("Ephy WebView Group"); + webkit_settings = webkit_web_view_group_get_settings (web_view_group); + + g_object_set (webkit_settings, + "enable-developer-extras", TRUE, + "enable-fullscreen", TRUE, + "enable-site-specific-quirks", TRUE, + "enable-dns-prefetching", TRUE, + NULL); #else webkit_settings = webkit_web_settings_new (); @@ -758,12 +760,23 @@ ephy_embed_prefs_init (void) void ephy_embed_prefs_shutdown (void) { +#ifdef HAVE_WEBKIT2 + g_object_unref (web_view_group); +#else g_object_unref (webkit_settings); +#endif } +#ifdef HAVE_WEBKIT2 +WebKitWebViewGroup * +ephy_embed_prefs_get_web_view_group (void) +{ + return web_view_group; +} +#else void ephy_embed_prefs_add_embed (EphyEmbed *embed) { ephy_embed_prefs_apply (embed, webkit_settings); } - +#endif diff --git a/embed/ephy-embed-prefs.h b/embed/ephy-embed-prefs.h index f214250e3..c49570e14 100644 --- a/embed/ephy-embed-prefs.h +++ b/embed/ephy-embed-prefs.h @@ -38,15 +38,21 @@ G_BEGIN_DECLS -void ephy_embed_prefs_init (void); -void ephy_embed_prefs_shutdown (void); -void ephy_embed_prefs_add_embed (EphyEmbed *embed); +void ephy_embed_prefs_init (void); +void ephy_embed_prefs_shutdown (void); + +#ifdef HAVE_WEBKIT2 +WebKitWebViewGroup *ephy_embed_prefs_get_web_view_group (void); +#else +void ephy_embed_prefs_add_embed (EphyEmbed *embed); +#endif + #ifdef HAVE_WEBKIT2 -void ephy_embed_prefs_set_cookie_accept_policy (WebKitCookieManager *cookie_manager, - const char *settings_policy); +void ephy_embed_prefs_set_cookie_accept_policy (WebKitCookieManager *cookie_manager, + const char *settings_policy); #else -void ephy_embed_prefs_set_cookie_jar_policy (SoupCookieJar *jar, - const char *gconf_policy); +void ephy_embed_prefs_set_cookie_jar_policy (SoupCookieJar *jar, + const char *gconf_policy); #endif G_END_DECLS diff --git a/embed/ephy-embed.c b/embed/ephy-embed.c index 470d4d045..c9b8bf4bd 100644 --- a/embed/ephy-embed.c +++ b/embed/ephy-embed.c @@ -1109,7 +1109,9 @@ ephy_embed_constructed (GObject *object) NULL); #endif +#ifndef HAVE_WEBKIT2 ephy_embed_prefs_add_embed (embed); +#endif } static void diff --git a/embed/ephy-web-view.c b/embed/ephy-web-view.c index 98b29d27c..439d83347 100644 --- a/embed/ephy-web-view.c +++ b/embed/ephy-web-view.c @@ -2835,7 +2835,11 @@ ephy_web_view_init (EphyWebView *web_view) GtkWidget * ephy_web_view_new (void) { - return g_object_new (EPHY_TYPE_WEB_VIEW, NULL); + return g_object_new (EPHY_TYPE_WEB_VIEW, +#ifdef HAVE_WEBKIT2 + "group", ephy_embed_prefs_get_web_view_group (), +#endif + NULL); } static gboolean -- cgit v1.2.3