[epiphany] embed: Use a custom WebKitWebViewGroup for all ephy web views



commit fca6216c67cea8ac074c6af912526066aa6dd098
Author: Carlos Garcia Campos <cgarcia igalia com>
Date:   Sun Mar 17 16:22:34 2013 +0100

    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 e039957..482b979 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 f214250..c49570e 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 470d4d0..c9b8bf4 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 98b29d2..439d833 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


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]