[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