[Xfce4-commits] <midori:master> Introduce Automatic user agent and allow quirks
Christian Dywan
noreply at xfce.org
Sun Oct 9 12:26:01 CEST 2011
Updating branch refs/heads/master
to 3e60f4424b97cae7c460759bf10591e46b2342de (commit)
from 76a9bc38ff872d4825cbb5777e4a758362d2ff0c (commit)
commit 3e60f4424b97cae7c460759bf10591e46b2342de
Author: Christian Dywan <christian at twotoasts.de>
Date: Sun Oct 9 12:20:13 2011 +0200
Introduce Automatic user agent and allow quirks
The new Automatic user agent is meant to pick the string
that websites most likely check for. Right now this is
Safari. Quirks built-in to WebKit are also used.
The separate Midori identification has no quirks.
Fixes: https://bugs.launchpad.net/midori/+bug/865503
katze/katze-utils.c | 5 ++++-
midori/midori-websettings.c | 19 ++++++++++++++-----
midori/midori-websettings.h | 3 ++-
3 files changed, 20 insertions(+), 7 deletions(-)
diff --git a/katze/katze-utils.c b/katze/katze-utils.c
index dccc09e..d2e2aaf 100644
--- a/katze/katze-utils.c
+++ b/katze/katze-utils.c
@@ -496,6 +496,7 @@ g_icon_to_string (GIcon *icon)
* "custom-PROPERTY": the last value of an enumeration will be the "custom"
* value, where the user may enter text freely, which then updates
* the property PROPERTY instead. This applies only to enumerations.
+ * Since 0.4.2 mnemonics are automatically stripped.
* Since 0.2.9 the following hints are also supported:
* "languages": the widget will be particularly suitable for choosing
* multiple language codes, ie. "de,en_GB".
@@ -880,12 +881,14 @@ katze_property_proxy (gpointer object,
#endif
for (i = 0; i < enum_class->n_values; i++)
{
- const gchar* label = gettext (enum_class->values[i].value_nick);
+ const gchar* raw_label = gettext (enum_class->values[i].value_nick);
+ gchar* label = katze_strip_mnemonics (raw_label);
#ifdef HAVE_HILDON_2_2
hildon_touch_selector_append_text (HILDON_TOUCH_SELECTOR (selector), label);
#else
gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (widget), label);
#endif
+ g_free (label);
}
#ifdef HAVE_HILDON_2_2
hildon_touch_selector_set_active (HILDON_TOUCH_SELECTOR (selector), 0, value);
diff --git a/midori/midori-websettings.c b/midori/midori-websettings.c
index 670c42b..ba06916 100644
--- a/midori/midori-websettings.c
+++ b/midori/midori-websettings.c
@@ -290,7 +290,8 @@ midori_identity_get_type (void)
if (!type)
{
static const GEnumValue values[] = {
- { MIDORI_IDENT_MIDORI, "MIDORI_IDENT_MIDORI", N_("Midori") },
+ { MIDORI_IDENT_MIDORI, "MIDORI_IDENT_MIDORI", N_("_Automatic") },
+ { MIDORI_IDENT_GENUINE, "MIDORI_IDENT_GENUINE", N_("Midori") },
{ MIDORI_IDENT_SAFARI, "MIDORI_IDENT_SAFARI", N_("Safari") },
{ MIDORI_IDENT_IPHONE, "MIDORI_IDENT_IPHONE", N_("iPhone") },
{ MIDORI_IDENT_FIREFOX, "MIDORI_IDENT_FIREFOX", N_("Firefox") },
@@ -1096,7 +1097,8 @@ get_sys_name (void)
#endif
static gchar*
-generate_ident_string (MidoriIdentity identify_as)
+generate_ident_string (MidoriWebSettings* web_settings,
+ MidoriIdentity identify_as)
{
const gchar* platform =
#if HAVE_HILDON
@@ -1133,12 +1135,19 @@ generate_ident_string (MidoriIdentity identify_as)
const int webcore_major = WEBKIT_USER_AGENT_MAJOR_VERSION;
const int webcore_minor = WEBKIT_USER_AGENT_MINOR_VERSION;
+ #if WEBKIT_CHECK_VERSION (1, 1, 18)
+ g_object_set (web_settings, "enable-site-specific-quirks",
+ identify_as != MIDORI_IDENT_GENUINE, NULL);
+ #endif
+
switch (identify_as)
{
- case MIDORI_IDENT_MIDORI:
+ case MIDORI_IDENT_GENUINE:
return g_strdup_printf ("Mozilla/5.0 (%s %s) AppleWebKit/%d.%d+ %s",
platform, os, webcore_major, webcore_minor, appname);
+ case MIDORI_IDENT_MIDORI:
case MIDORI_IDENT_SAFARI:
+ g_object_set (web_settings, "enable-site-specific-quirks", TRUE, NULL);
return g_strdup_printf ("Mozilla/5.0 (Macintosh; U; Intel Mac OS X; %s) "
"AppleWebKit/%d+ (KHTML, like Gecko) Version/5.0 Safari/%d.%d+ %s",
lang, webcore_major, webcore_major, webcore_minor, appname);
@@ -1365,7 +1374,7 @@ midori_web_settings_set_property (GObject* object,
web_settings->identify_as = g_value_get_enum (value);
if (web_settings->identify_as != MIDORI_IDENT_CUSTOM)
{
- gchar* string = generate_ident_string (web_settings->identify_as);
+ gchar* string = generate_ident_string (web_settings, web_settings->identify_as);
katze_assign (web_settings->ident_string, string);
g_object_set (web_settings, "user-agent", string, NULL);
}
@@ -1625,7 +1634,7 @@ midori_web_settings_get_property (GObject* object,
case PROP_USER_AGENT:
if (!g_strcmp0 (web_settings->ident_string, ""))
{
- gchar* string = generate_ident_string (web_settings->identify_as);
+ gchar* string = generate_ident_string (web_settings, web_settings->identify_as);
katze_assign (web_settings->ident_string, string);
}
g_value_set_string (value, web_settings->ident_string);
diff --git a/midori/midori-websettings.h b/midori/midori-websettings.h
index 1809425..0b16ed2 100644
--- a/midori/midori-websettings.h
+++ b/midori/midori-websettings.h
@@ -137,7 +137,8 @@ midori_proxy_get_type (void) G_GNUC_CONST;
typedef enum
{
- MIDORI_IDENT_MIDORI,
+ MIDORI_IDENT_MIDORI /* Automatic */,
+ MIDORI_IDENT_GENUINE /* Midori */,
MIDORI_IDENT_SAFARI,
MIDORI_IDENT_IPHONE,
MIDORI_IDENT_FIREFOX,
More information about the Xfce4-commits
mailing list