Implement new libsoup cache for >= WebKitGTK+ 1.3.11
The web cache extension is automatically hidden/ disabled if WebKitGTK+ is new enough, the new cache is a core feature. By default 100 MB of pages can be cached on disk. The 'Applications' preference tab is resurrected. The same folder ~/.cache/midori/web is used for old and new cache.
This commit is contained in:
parent
ad99d10433
commit
47437114c7
5 changed files with 95 additions and 16 deletions
|
@ -21,6 +21,8 @@
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if !WEBKIT_CHECK_VERSION (1, 3, 11)
|
||||||
|
|
||||||
#define MAXLENGTH 1024 * 1024
|
#define MAXLENGTH 1024 * 1024
|
||||||
|
|
||||||
static gchar*
|
static gchar*
|
||||||
|
@ -464,10 +466,14 @@ web_cache_clear_cache_cb (void)
|
||||||
{
|
{
|
||||||
sokoke_remove_path (web_cache_get_cache_dir (), TRUE);
|
sokoke_remove_path (web_cache_get_cache_dir (), TRUE);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
MidoriExtension*
|
MidoriExtension*
|
||||||
extension_init (void)
|
extension_init (void)
|
||||||
{
|
{
|
||||||
|
#if WEBKIT_CHECK_VERSION (1, 3, 11)
|
||||||
|
return NULL;
|
||||||
|
#else
|
||||||
MidoriExtension* extension = g_object_new (MIDORI_TYPE_EXTENSION,
|
MidoriExtension* extension = g_object_new (MIDORI_TYPE_EXTENSION,
|
||||||
"name", _("Web Cache"),
|
"name", _("Web Cache"),
|
||||||
"description", _("Cache HTTP communication on disk"),
|
"description", _("Cache HTTP communication on disk"),
|
||||||
|
@ -482,4 +488,5 @@ extension_init (void)
|
||||||
G_CALLBACK (web_cache_clear_cache_cb));
|
G_CALLBACK (web_cache_clear_cache_cb));
|
||||||
|
|
||||||
return extension;
|
return extension;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,6 +34,11 @@
|
||||||
#include <webkit/webkit.h>
|
#include <webkit/webkit.h>
|
||||||
#include <sqlite3.h>
|
#include <sqlite3.h>
|
||||||
|
|
||||||
|
#if WEBKIT_CHECK_VERSION (1, 3, 11)
|
||||||
|
#define LIBSOUP_USE_UNSTABLE_REQUEST_API
|
||||||
|
#include <libsoup/soup-cache.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#if ENABLE_NLS
|
#if ENABLE_NLS
|
||||||
#include <libintl.h>
|
#include <libintl.h>
|
||||||
#include <locale.h>
|
#include <locale.h>
|
||||||
|
@ -1236,6 +1241,17 @@ midori_load_soup_session_full (gpointer settings)
|
||||||
soup_session_add_feature (session, feature);
|
soup_session_add_feature (session, feature);
|
||||||
g_object_unref (feature);
|
g_object_unref (feature);
|
||||||
|
|
||||||
|
#if WEBKIT_CHECK_VERSION (1, 3, 11)
|
||||||
|
config_file = g_build_filename (g_get_user_cache_dir (),
|
||||||
|
PACKAGE_NAME, "web", NULL);
|
||||||
|
feature = SOUP_SESSION_FEATURE (soup_cache_new (config_file, 0));
|
||||||
|
g_free (config_file);
|
||||||
|
soup_session_add_feature (session, feature);
|
||||||
|
soup_cache_set_max_size (SOUP_CACHE (feature),
|
||||||
|
katze_object_get_int (settings, "maximum-cache-size") * 1024 * 1024);
|
||||||
|
soup_cache_load (SOUP_CACHE (feature));
|
||||||
|
#endif
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1315,6 +1331,10 @@ midori_load_extensions (gpointer data)
|
||||||
|
|
||||||
if (!extension)
|
if (!extension)
|
||||||
{
|
{
|
||||||
|
/* No extension, no error: not available, not shown */
|
||||||
|
if (g_module_error () == NULL)
|
||||||
|
continue;
|
||||||
|
|
||||||
extension = g_object_new (MIDORI_TYPE_EXTENSION,
|
extension = g_object_new (MIDORI_TYPE_EXTENSION,
|
||||||
"name", filename,
|
"name", filename,
|
||||||
"description", g_module_error (),
|
"description", g_module_error (),
|
||||||
|
@ -1887,6 +1907,21 @@ midori_clear_html5_databases_cb (void)
|
||||||
webkit_remove_all_web_databases ();
|
webkit_remove_all_web_databases ();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if WEBKIT_CHECK_VERSION (1, 3, 11)
|
||||||
|
static void
|
||||||
|
midori_clear_web_cache_cb (void)
|
||||||
|
{
|
||||||
|
SoupSession* session = webkit_get_default_session ();
|
||||||
|
SoupSessionFeature* feature = soup_session_get_feature (session, SOUP_TYPE_CACHE);
|
||||||
|
gchar* path = g_build_filename (g_get_user_cache_dir (), PACKAGE_NAME, "web", NULL);
|
||||||
|
soup_cache_clear (SOUP_CACHE (feature));
|
||||||
|
soup_cache_flush (SOUP_CACHE (feature));
|
||||||
|
sokoke_remove_path (path, TRUE);
|
||||||
|
g_free (path);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#if WEBKIT_CHECK_VERSION (1, 3, 13)
|
#if WEBKIT_CHECK_VERSION (1, 3, 13)
|
||||||
static void
|
static void
|
||||||
midori_clear_offline_appcache_cb (void)
|
midori_clear_offline_appcache_cb (void)
|
||||||
|
@ -2155,6 +2190,10 @@ main (int argc,
|
||||||
sokoke_register_privacy_item ("html5-databases", _("HTML5 _Databases"),
|
sokoke_register_privacy_item ("html5-databases", _("HTML5 _Databases"),
|
||||||
G_CALLBACK (midori_clear_html5_databases_cb));
|
G_CALLBACK (midori_clear_html5_databases_cb));
|
||||||
#endif
|
#endif
|
||||||
|
#if WEBKIT_CHECK_VERSION (1, 3, 11)
|
||||||
|
sokoke_register_privacy_item ("web-cache", _("Web Cache"),
|
||||||
|
G_CALLBACK (midori_clear_web_cache_cb));
|
||||||
|
#endif
|
||||||
#if WEBKIT_CHECK_VERSION (1, 3, 13)
|
#if WEBKIT_CHECK_VERSION (1, 3, 13)
|
||||||
sokoke_register_privacy_item ("offline-appcache", _("Offline Application Cache"),
|
sokoke_register_privacy_item ("offline-appcache", _("Offline Application Cache"),
|
||||||
G_CALLBACK (midori_clear_offline_appcache_cb));
|
G_CALLBACK (midori_clear_offline_appcache_cb));
|
||||||
|
|
|
@ -435,11 +435,19 @@ midori_preferences_set_settings (MidoriPreferences* preferences,
|
||||||
INDENTED_ADD (button);
|
INDENTED_ADD (button);
|
||||||
button = katze_property_proxy (settings, "open-tabs-in-the-background", NULL);
|
button = katze_property_proxy (settings, "open-tabs-in-the-background", NULL);
|
||||||
SPANNED_ADD (button);
|
SPANNED_ADD (button);
|
||||||
|
|
||||||
|
/* Page "Applications" */
|
||||||
#if !HAVE_HILDON
|
#if !HAVE_HILDON
|
||||||
|
PAGE_NEW (GTK_STOCK_CONVERT, _("Applications"));
|
||||||
|
FRAME_NEW (_("External applications"));
|
||||||
label = katze_property_label (settings, "text-editor");
|
label = katze_property_label (settings, "text-editor");
|
||||||
INDENTED_ADD (label);
|
INDENTED_ADD (label);
|
||||||
entry = katze_property_proxy (settings, "text-editor", "application-text/plain");
|
entry = katze_property_proxy (settings, "text-editor", "application-text/plain");
|
||||||
SPANNED_ADD (entry);
|
SPANNED_ADD (entry);
|
||||||
|
label = katze_property_label (settings, "news-aggregator");
|
||||||
|
INDENTED_ADD (label);
|
||||||
|
entry = katze_property_proxy (settings, "news-aggregator", "application-News");
|
||||||
|
SPANNED_ADD (entry);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Page "Network" */
|
/* Page "Network" */
|
||||||
|
@ -458,14 +466,16 @@ midori_preferences_set_settings (MidoriPreferences* preferences,
|
||||||
G_CALLBACK (midori_preferences_notify_proxy_type_cb), entry);
|
G_CALLBACK (midori_preferences_notify_proxy_type_cb), entry);
|
||||||
midori_preferences_notify_proxy_type_cb (settings, NULL, entry);
|
midori_preferences_notify_proxy_type_cb (settings, NULL, entry);
|
||||||
#endif
|
#endif
|
||||||
|
#if WEBKIT_CHECK_VERSION (1, 3, 11)
|
||||||
|
label = katze_property_label (settings, "maximum-cache-size");
|
||||||
|
INDENTED_ADD (label);
|
||||||
|
button = katze_property_proxy (settings, "maximum-cache-size", NULL);
|
||||||
|
SPANNED_ADD (button);
|
||||||
|
label = gtk_label_new (_("MB"));
|
||||||
|
SPANNED_ADD (label);
|
||||||
|
#endif
|
||||||
label = katze_property_label (settings, "identify-as");
|
label = katze_property_label (settings, "identify-as");
|
||||||
INDENTED_ADD (label);
|
INDENTED_ADD (label);
|
||||||
button = katze_property_proxy (settings, "identify-as", "custom-user-agent");
|
button = katze_property_proxy (settings, "identify-as", "custom-user-agent");
|
||||||
SPANNED_ADD (button);
|
SPANNED_ADD (button);
|
||||||
#if !HAVE_HILDON
|
|
||||||
label = katze_property_label (settings, "news-aggregator");
|
|
||||||
INDENTED_ADD (label);
|
|
||||||
entry = katze_property_proxy (settings, "news-aggregator", "application-News");
|
|
||||||
SPANNED_ADD (entry);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -89,7 +89,6 @@ struct _MidoriView
|
||||||
GtkWidget* thumb_view;
|
GtkWidget* thumb_view;
|
||||||
KatzeArray* news_feeds;
|
KatzeArray* news_feeds;
|
||||||
|
|
||||||
gchar* news_aggregator;
|
|
||||||
gboolean middle_click_opens_selection;
|
gboolean middle_click_opens_selection;
|
||||||
gboolean open_tabs_in_the_background;
|
gboolean open_tabs_in_the_background;
|
||||||
gboolean close_buttons_on_tabs;
|
gboolean close_buttons_on_tabs;
|
||||||
|
@ -3292,7 +3291,6 @@ midori_view_init (MidoriView* view)
|
||||||
view->scrollh = view->scrollv = -2;
|
view->scrollh = view->scrollv = -2;
|
||||||
view->back_forward_set = FALSE;
|
view->back_forward_set = FALSE;
|
||||||
|
|
||||||
view->news_aggregator = NULL;
|
|
||||||
view->web_view = NULL;
|
view->web_view = NULL;
|
||||||
/* Adjustments are not created initially, but overwritten later */
|
/* Adjustments are not created initially, but overwritten later */
|
||||||
view->scrolled_window = katze_scrolled_new (NULL, NULL);
|
view->scrolled_window = katze_scrolled_new (NULL, NULL);
|
||||||
|
@ -3348,8 +3346,6 @@ midori_view_finalize (GObject* object)
|
||||||
katze_object_assign (view->settings, NULL);
|
katze_object_assign (view->settings, NULL);
|
||||||
katze_object_assign (view->item, NULL);
|
katze_object_assign (view->item, NULL);
|
||||||
|
|
||||||
katze_assign (view->news_aggregator, NULL);
|
|
||||||
|
|
||||||
G_OBJECT_CLASS (midori_view_parent_class)->finalize (object);
|
G_OBJECT_CLASS (midori_view_parent_class)->finalize (object);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3491,10 +3487,7 @@ _midori_view_set_settings (MidoriView* view,
|
||||||
|
|
||||||
g_object_set (view->web_view, "settings", settings, NULL);
|
g_object_set (view->web_view, "settings", settings, NULL);
|
||||||
|
|
||||||
g_free (view->news_aggregator);
|
|
||||||
|
|
||||||
g_object_get (view->settings,
|
g_object_get (view->settings,
|
||||||
"news-aggregator", &view->news_aggregator,
|
|
||||||
"zoom-text-and-images", &zoom_text_and_images,
|
"zoom-text-and-images", &zoom_text_and_images,
|
||||||
"kinetic-scrolling", &kinetic_scrolling,
|
"kinetic-scrolling", &kinetic_scrolling,
|
||||||
"close-buttons-on-tabs", &view->close_buttons_on_tabs,
|
"close-buttons-on-tabs", &view->close_buttons_on_tabs,
|
||||||
|
@ -3549,9 +3542,7 @@ midori_view_settings_notify_cb (MidoriWebSettings* settings,
|
||||||
g_value_init (&value, pspec->value_type);
|
g_value_init (&value, pspec->value_type);
|
||||||
g_object_get_property (G_OBJECT (view->settings), name, &value);
|
g_object_get_property (G_OBJECT (view->settings), name, &value);
|
||||||
|
|
||||||
if (name == g_intern_string ("news-aggregator"))
|
if (name == g_intern_string ("zoom-text-and-images"))
|
||||||
katze_assign (view->news_aggregator, g_value_dup_string (&value));
|
|
||||||
else if (name == g_intern_string ("zoom-text-and-images"))
|
|
||||||
{
|
{
|
||||||
if (view->web_view)
|
if (view->web_view)
|
||||||
g_object_set (view->web_view, "full-content-zoom",
|
g_object_set (view->web_view, "full-content-zoom",
|
||||||
|
|
|
@ -81,6 +81,9 @@ struct _MidoriWebSettings
|
||||||
gchar* news_aggregator;
|
gchar* news_aggregator;
|
||||||
gchar* location_entry_search;
|
gchar* location_entry_search;
|
||||||
gchar* http_proxy;
|
gchar* http_proxy;
|
||||||
|
#if WEBKIT_CHECK_VERSION (1, 3, 11)
|
||||||
|
gint maximum_cache_size;
|
||||||
|
#endif
|
||||||
gchar* http_accept_language;
|
gchar* http_accept_language;
|
||||||
gchar* ident_string;
|
gchar* ident_string;
|
||||||
|
|
||||||
|
@ -167,6 +170,7 @@ enum
|
||||||
|
|
||||||
PROP_PROXY_TYPE,
|
PROP_PROXY_TYPE,
|
||||||
PROP_HTTP_PROXY,
|
PROP_HTTP_PROXY,
|
||||||
|
PROP_MAXIMUM_CACHE_SIZE,
|
||||||
PROP_IDENTIFY_AS,
|
PROP_IDENTIFY_AS,
|
||||||
PROP_USER_AGENT,
|
PROP_USER_AGENT,
|
||||||
PROP_PREFERRED_LANGUAGES,
|
PROP_PREFERRED_LANGUAGES,
|
||||||
|
@ -1038,6 +1042,24 @@ midori_web_settings_class_init (MidoriWebSettingsClass* class)
|
||||||
NULL,
|
NULL,
|
||||||
flags));
|
flags));
|
||||||
|
|
||||||
|
#if WEBKIT_CHECK_VERSION (1, 3, 11)
|
||||||
|
/**
|
||||||
|
* MidoriWebSettings:maximum-cache-size:
|
||||||
|
*
|
||||||
|
* The maximum size of cached pages on disk.
|
||||||
|
*
|
||||||
|
* Since: 0.3.4
|
||||||
|
*/
|
||||||
|
g_object_class_install_property (gobject_class,
|
||||||
|
PROP_MAXIMUM_CACHE_SIZE,
|
||||||
|
g_param_spec_int (
|
||||||
|
"maximum-cache-size",
|
||||||
|
_("Web Cache"),
|
||||||
|
_("The maximum size of cached pages on disk"),
|
||||||
|
0, G_MAXINT, 100,
|
||||||
|
flags));
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* MidoriWebSettings:identify-as:
|
* MidoriWebSettings:identify-as:
|
||||||
*
|
*
|
||||||
|
@ -1538,6 +1560,11 @@ midori_web_settings_set_property (GObject* object,
|
||||||
case PROP_HTTP_PROXY:
|
case PROP_HTTP_PROXY:
|
||||||
katze_assign (web_settings->http_proxy, g_value_dup_string (value));
|
katze_assign (web_settings->http_proxy, g_value_dup_string (value));
|
||||||
break;
|
break;
|
||||||
|
#if WEBKIT_CHECK_VERSION (1, 3, 11)
|
||||||
|
case PROP_MAXIMUM_CACHE_SIZE:
|
||||||
|
web_settings->maximum_cache_size = g_value_get_int (value);
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
case PROP_IDENTIFY_AS:
|
case PROP_IDENTIFY_AS:
|
||||||
web_settings->identify_as = g_value_get_enum (value);
|
web_settings->identify_as = g_value_get_enum (value);
|
||||||
if (web_settings->identify_as != MIDORI_IDENT_CUSTOM)
|
if (web_settings->identify_as != MIDORI_IDENT_CUSTOM)
|
||||||
|
@ -1791,6 +1818,11 @@ midori_web_settings_get_property (GObject* object,
|
||||||
case PROP_HTTP_PROXY:
|
case PROP_HTTP_PROXY:
|
||||||
g_value_set_string (value, web_settings->http_proxy);
|
g_value_set_string (value, web_settings->http_proxy);
|
||||||
break;
|
break;
|
||||||
|
#if WEBKIT_CHECK_VERSION (1, 3, 11)
|
||||||
|
case PROP_MAXIMUM_CACHE_SIZE:
|
||||||
|
g_value_set_int (value, web_settings->maximum_cache_size);
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
case PROP_IDENTIFY_AS:
|
case PROP_IDENTIFY_AS:
|
||||||
g_value_set_enum (value, web_settings->identify_as);
|
g_value_set_enum (value, web_settings->identify_as);
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in a new issue