From 10c5ac459712c5491f0cda702e1debf39ecdcfa1 Mon Sep 17 00:00:00 2001 From: Christian Dywan Date: Sun, 17 Apr 2011 22:29:51 +0200 Subject: [PATCH] Use setting for old and new prefetching option So prefetching in private mode is disabled regardless of whether prefetching is done in Midori or in new WebKit versions. Menu items also adhere to that same setting now. And use the chance to correct version checks. --- midori/main.c | 9 ++++----- midori/midori-browser.c | 3 ++- midori/midori-view.c | 4 ++-- midori/midori-websettings.c | 32 ++++++++++++++++++++++++++++++++ midori/sokoke.c | 10 ++++++++-- midori/sokoke.h | 7 +++---- 6 files changed, 51 insertions(+), 14 deletions(-) diff --git a/midori/main.c b/midori/main.c index e9f27345..1d93f057 100644 --- a/midori/main.c +++ b/midori/main.c @@ -2213,15 +2213,14 @@ main (int argc, if (private) { + g_object_set (settings, #if WEBKIT_CHECK_VERSION (1, 1, 2) - g_object_set (settings, "enable-private-browsing", TRUE, NULL); + "enable-private-browsing", TRUE, #endif /* Arguably DNS prefetching is or isn't a privacy concern. For the * lack of more fine-grained control we'll go the safe route. */ - #if WEBKIT_CHECK_VERSION (1, 3, 13) - g_object_set (settings, "enable-dns-prefetching", FALSE, NULL); - #endif - g_object_set (settings, "strip-referer", TRUE, NULL); + "enable-dns-prefetching", FALSE, + "strip-referer", TRUE, NULL); midori_browser_set_action_visible (browser, "Tools", FALSE); midori_browser_set_action_visible (browser, "ClearPrivateData", FALSE); } diff --git a/midori/midori-browser.c b/midori/midori-browser.c index f51b9678..4fbb409c 100644 --- a/midori/midori-browser.c +++ b/midori/midori-browser.c @@ -2697,7 +2697,8 @@ midori_browser_menu_item_select_cb (GtkWidget* menuitem, if (item) { tooltip = g_strdup (katze_item_get_uri (item)); - sokoke_prefetch_uri (tooltip, NULL, NULL); + sokoke_prefetch_uri (midori_browser_get_settings (browser), + tooltip, NULL, NULL); } } _midori_browser_set_statusbar_text (browser, tooltip); diff --git a/midori/midori-view.c b/midori/midori-view.c index 52508d5c..8e6a350c 100644 --- a/midori/midori-view.c +++ b/midori/midori-view.c @@ -1701,8 +1701,8 @@ webkit_web_view_hovering_over_link_cb (WebKitWebView* web_view, const gchar* link_uri, MidoriView* view) { - #if !(WEBKIT_CHECK_VERSION (2, 18, 0) && defined (HAVE_LIBSOUP_2_29_3)) - sokoke_prefetch_uri (link_uri, NULL, NULL); + #if !(WEBKIT_CHECK_VERSION (1, 3, 1) && defined (HAVE_LIBSOUP_2_29_3)) + sokoke_prefetch_uri (view->settings, link_uri, NULL, NULL); #endif katze_assign (view->link_uri, g_strdup (link_uri)); diff --git a/midori/midori-websettings.c b/midori/midori-websettings.c index d0983bff..196a9cb4 100644 --- a/midori/midori-websettings.c +++ b/midori/midori-websettings.c @@ -86,6 +86,9 @@ struct _MidoriWebSettings gint clear_private_data; gchar* clear_data; + #if !WEBKIT_CHECK_VERSION (1, 3, 13) + gboolean enable_dns_prefetching; + #endif gboolean strip_referer; }; @@ -170,6 +173,7 @@ enum PROP_CLEAR_PRIVATE_DATA, PROP_CLEAR_DATA, + PROP_ENABLE_DNS_PREFETCHING, PROP_STRIP_REFERER }; @@ -1102,6 +1106,24 @@ midori_web_settings_class_init (MidoriWebSettingsClass* class) _("The data selected for deletion"), NULL, flags)); + #if !WEBKIT_CHECK_VERSION (1, 3, 13) + /** + * MidoriWebSettings:enable-dns-prefetching: + * + * Whether to resolve host names in advance. + * + * Since: 0.3.4 + */ + g_object_class_install_property (gobject_class, + PROP_ENABLE_DNS_PREFETCHING, + g_param_spec_boolean ( + "enable-dns-prefetching", + "Whether to resolve host names in advance", + "Whether host names on a website or in bookmarks should be prefetched", + TRUE, + flags)); + #endif + /** * MidoriWebSettings:strip-referer: * @@ -1537,6 +1559,11 @@ midori_web_settings_set_property (GObject* object, case PROP_CLEAR_DATA: katze_assign (web_settings->clear_data, g_value_dup_string (value)); break; + #if !WEBKIT_CHECK_VERSION (1, 3, 13) + case PROP_ENABLE_DNS_PREFETCHING: + web_settings->enable_dns_prefetching = g_value_get_boolean (value); + break; + #endif case PROP_STRIP_REFERER: web_settings->strip_referer = g_value_get_boolean (value); break; @@ -1771,6 +1798,11 @@ midori_web_settings_get_property (GObject* object, case PROP_CLEAR_DATA: g_value_set_string (value, web_settings->clear_data); break; + #if !WEBKIT_CHECK_VERSION (1, 3, 13) + case PROP_ENABLE_DNS_PREFETCHING: + g_value_set_boolean (value, web_settings->enable_dns_prefetching); + break; + #endif case PROP_STRIP_REFERER: g_value_set_boolean (value, web_settings->strip_referer); break; diff --git a/midori/sokoke.c b/midori/sokoke.c index 0c04259b..ac617f68 100644 --- a/midori/sokoke.c +++ b/midori/sokoke.c @@ -793,7 +793,7 @@ sokoke_resolve_hostname (const gchar* hostname) gint host_resolved = 0; uri = g_strconcat ("http://", hostname, NULL); - if (sokoke_prefetch_uri (uri, sokoke_resolve_hostname_cb, + if (sokoke_prefetch_uri (NULL, uri, sokoke_resolve_hostname_cb, &host_resolved)) { GTimer* timer = g_timer_new (); @@ -1957,6 +1957,7 @@ sokoke_file_chooser_dialog_new (const gchar* title, /** * sokoke_prefetch_uri: + * @settings: a #MidoriWebSettings instance, or %NULL * @uri: an URI string * * Attempts to prefetch the specified URI, that is @@ -1965,7 +1966,8 @@ sokoke_file_chooser_dialog_new (const gchar* title, * Return value: %TRUE on success **/ gboolean -sokoke_prefetch_uri (const char* uri, +sokoke_prefetch_uri (MidoriWebSettings* settings, + const char* uri, SoupAddressCallback callback, gpointer user_data) { @@ -1977,6 +1979,10 @@ sokoke_prefetch_uri (const char* uri, if (!uri) return FALSE; + + if (settings && !katze_object_get_boolean (settings, "enable-dns-prefetching")) + return FALSE; + s_uri = soup_uri_new (uri); if (!s_uri || !s_uri->host) return FALSE; diff --git a/midori/sokoke.h b/midori/sokoke.h index e76a914f..976fe91f 100644 --- a/midori/sokoke.h +++ b/midori/sokoke.h @@ -19,10 +19,8 @@ #define MIDORI_MOD_BACKGROUND(state) (state & GDK_SHIFT_MASK) #define MIDORI_MOD_SCROLL(state) (state & GDK_CONTROL_MASK) -#include - -#include #include +#include #if !GLIB_CHECK_VERSION (2, 14, 0) #define G_PARAM_STATIC_STRINGS \ @@ -254,7 +252,8 @@ sokoke_file_chooser_dialog_new (const gchar* title, GtkFileChooserAction action); gboolean -sokoke_prefetch_uri (const char* uri, +sokoke_prefetch_uri (MidoriWebSettings* settings, + const char* uri, SoupAddressCallback callback, gpointer user_data);