Modified: trunk/Source/WebKit2/ChangeLog (121975 => 121976)
--- trunk/Source/WebKit2/ChangeLog 2012-07-06 16:01:33 UTC (rev 121975)
+++ trunk/Source/WebKit2/ChangeLog 2012-07-06 16:04:25 UTC (rev 121976)
@@ -1,3 +1,21 @@
+2012-07-06 Carlos Garcia Campos <[email protected]>
+
+ [GTK] Add site specific quirks setting to WebKit2 GTK+ API
+ https://bugs.webkit.org/show_bug.cgi?id=90663
+
+ Reviewed by Martin Robinson.
+
+ * UIProcess/API/gtk/WebKitSettings.cpp:
+ (webKitSettingsSetProperty):
+ (webKitSettingsGetProperty):
+ (webkit_settings_class_init):
+ (webkit_settings_get_enable_site_specific_quirks):
+ (webkit_settings_set_enable_site_specific_quirks):
+ * UIProcess/API/gtk/WebKitSettings.h:
+ * UIProcess/API/gtk/docs/webkit2gtk-sections.txt:
+ * UIProcess/API/gtk/tests/TestWebKitSettings.cpp:
+ (testWebKitSettings):
+
2012-07-06 Dominik Röttsches <[email protected]>
ProcessLauncher's WorkQueue's name is too long on Windows
Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp (121975 => 121976)
--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp 2012-07-06 16:01:33 UTC (rev 121975)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp 2012-07-06 16:04:25 UTC (rev 121976)
@@ -112,7 +112,8 @@
PROP_JAVASCRIPT_CAN_ACCESS_CLIPBOARD,
PROP_MEDIA_PLAYBACK_REQUIRES_USER_GESTURE,
PROP_MEDIA_PLAYBACK_ALLOWS_INLINE,
- PROP_DRAW_COMPOSITING_INDICATORS
+ PROP_DRAW_COMPOSITING_INDICATORS,
+ PROP_ENABLE_SITE_SPECIFIC_QUIRKS
};
static void webKitSettingsSetProperty(GObject* object, guint propId, const GValue* value, GParamSpec* paramSpec)
@@ -237,6 +238,9 @@
case PROP_DRAW_COMPOSITING_INDICATORS:
webkit_settings_set_draw_compositing_indicators(settings, g_value_get_boolean(value));
break;
+ case PROP_ENABLE_SITE_SPECIFIC_QUIRKS:
+ webkit_settings_set_enable_site_specific_quirks(settings, g_value_get_boolean(value));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, paramSpec);
break;
@@ -365,6 +369,9 @@
case PROP_DRAW_COMPOSITING_INDICATORS:
g_value_set_boolean(value, webkit_settings_get_draw_compositing_indicators(settings));
break;
+ case PROP_ENABLE_SITE_SPECIFIC_QUIRKS:
+ g_value_set_boolean(value, webkit_settings_get_enable_site_specific_quirks(settings));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, paramSpec);
break;
@@ -957,6 +964,24 @@
FALSE,
readWriteConstructParamFlags));
+ /**
+ * WebKitSettings::enable-site-specific-quirks:
+ *
+ * Whether to turn on site-specific quirks. Turning this on will
+ * tell WebKit to use some site-specific workarounds for
+ * better web compatibility. For example, older versions of
+ * MediaWiki will incorrectly send to WebKit a css file with KHTML
+ * workarounds. By turning on site-specific quirks, WebKit will
+ * special-case this and other cases to make some specific sites work.
+ */
+ g_object_class_install_property(gObjectClass,
+ PROP_ENABLE_SITE_SPECIFIC_QUIRKS,
+ g_param_spec_boolean("enable-site-specific-quirks",
+ _("Enable Site Specific Quirks"),
+ _("Enables the site-specific compatibility workarounds"),
+ FALSE,
+ readWriteConstructParamFlags));
+
g_type_class_add_private(klass, sizeof(WebKitSettingsPrivate));
}
@@ -2432,3 +2457,38 @@
return WKPreferencesGetCompositingBordersVisible(settings->priv->preferences.get())
&& WKPreferencesGetCompositingRepaintCountersVisible(settings->priv->preferences.get());
}
+
+/**
+ * webkit_settings_get_enable_site_specific_quirks:
+ * @settings: a #WebKitSettings
+ *
+ * Get the #WebKitSettings:enable-site-specific-quirks property.
+ *
+ * Returns: %TRUE if site specific quirks are enabled or %FALSE otherwise.
+ */
+gboolean webkit_settings_get_enable_site_specific_quirks(WebKitSettings* settings)
+{
+ g_return_val_if_fail(WEBKIT_IS_SETTINGS(settings), FALSE);
+
+ return WKPreferencesGetNeedsSiteSpecificQuirks(settings->priv->preferences.get());
+}
+
+/**
+ * webkit_settings_set_enable_site_specific_quirks:
+ * @settings: a #WebKitSettings
+ * @enabled: Value to be set
+ *
+ * Set the #WebKitSettings:enable-site-specific-quirks property.
+ */
+void webkit_settings_set_enable_site_specific_quirks(WebKitSettings* settings, gboolean enabled)
+{
+ g_return_if_fail(WEBKIT_IS_SETTINGS(settings));
+
+ WebKitSettingsPrivate* priv = settings->priv;
+ bool currentValue = WKPreferencesGetNeedsSiteSpecificQuirks(priv->preferences.get());
+ if (currentValue == enabled)
+ return;
+
+ WKPreferencesSetNeedsSiteSpecificQuirks(priv->preferences.get(), enabled);
+ g_object_notify(G_OBJECT(settings), "enable-site-specific-quirks");
+}
Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.h (121975 => 121976)
--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.h 2012-07-06 16:01:33 UTC (rev 121975)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.h 2012-07-06 16:04:25 UTC (rev 121976)
@@ -347,6 +347,14 @@
WEBKIT_API void
webkit_settings_set_draw_compositing_indicators (WebKitSettings *settings,
gboolean enabled);
+
+WEBKIT_API gboolean
+webkit_settings_get_enable_site_specific_quirks (WebKitSettings *settings);
+
+WEBKIT_API void
+webkit_settings_set_enable_site_specific_quirks (WebKitSettings *settings,
+ gboolean enabled);
+
G_END_DECLS
#endif /* WebKitSettings_h */
Modified: trunk/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt (121975 => 121976)
--- trunk/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt 2012-07-06 16:01:33 UTC (rev 121975)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt 2012-07-06 16:04:25 UTC (rev 121976)
@@ -268,6 +268,8 @@
webkit_settings_set_media_playback_allows_inline
webkit_settings_get_draw_compositing_indicators
webkit_settings_set_draw_compositing_indicators
+webkit_settings_get_enable_site_specific_quirks
+webkit_settings_set_enable_site_specific_quirks
<SUBSECTION Standard>
WebKitSettingsClass
Modified: trunk/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitSettings.cpp (121975 => 121976)
--- trunk/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitSettings.cpp 2012-07-06 16:01:33 UTC (rev 121975)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitSettings.cpp 2012-07-06 16:04:25 UTC (rev 121976)
@@ -229,6 +229,11 @@
webkit_settings_set_draw_compositing_indicators(settings, TRUE);
g_assert(webkit_settings_get_draw_compositing_indicators(settings));
+ // By default, site specific quirks are disabled.
+ g_assert(!webkit_settings_get_enable_site_specific_quirks(settings));
+ webkit_settings_set_enable_site_specific_quirks(settings, TRUE);
+ g_assert(webkit_settings_get_enable_site_specific_quirks(settings));
+
g_object_unref(G_OBJECT(settings));
}