Modified: trunk/Source/WebKit2/ChangeLog (111398 => 111399)
--- trunk/Source/WebKit2/ChangeLog 2012-03-20 15:31:16 UTC (rev 111398)
+++ trunk/Source/WebKit2/ChangeLog 2012-03-20 15:38:40 UTC (rev 111399)
@@ -1,3 +1,23 @@
+2012-03-20 Antaryami Pandia <[email protected]>
+
+ [GTK] [WK2] Add _javascript_ clipboard functionality settings to WebKit2 GTK+ API.
+ https://bugs.webkit.org/show_bug.cgi?id=80981
+
+ Reviewed by Martin Robinson.
+
+ Add WebSettings to enable/disable _javascript_ clipboard functionality.
+
+ * UIProcess/API/gtk/WebKitSettings.cpp:
+ (webKitSettingsSetProperty):
+ (webKitSettingsGetProperty):
+ (webkit_settings_class_init):
+ (webkit_settings_get_javascript_can_access_clipboard):
+ (webkit_settings_set_javascript_can_access_clipboard):
+ * UIProcess/API/gtk/WebKitSettings.h:
+ * UIProcess/API/gtk/docs/webkit2gtk-sections.txt:
+ * UIProcess/API/gtk/tests/TestWebKitSettings.cpp:
+ (testWebKitSettings):
+
2012-03-19 Adam Barth <[email protected]>
Remove support for "magic" iframe
Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp (111398 => 111399)
--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp 2012-03-20 15:31:16 UTC (rev 111398)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp 2012-03-20 15:38:40 UTC (rev 111399)
@@ -105,7 +105,8 @@
PROP_PRINT_BACKGROUNDS,
PROP_ENABLE_WEBAUDIO,
PROP_ENABLE_WEBGL,
- PROP_ZOOM_TEXT_ONLY
+ PROP_ZOOM_TEXT_ONLY,
+ PROP_JAVASCRIPT_CAN_ACCESS_CLIPBOARD
};
static void webKitSettingsSetProperty(GObject* object, guint propId, const GValue* value, GParamSpec* paramSpec)
@@ -215,6 +216,9 @@
case PROP_ZOOM_TEXT_ONLY:
webkit_settings_set_zoom_text_only(settings, g_value_get_boolean(value));
break;
+ case PROP_JAVASCRIPT_CAN_ACCESS_CLIPBOARD:
+ webkit_settings_set_javascript_can_access_clipboard(settings, g_value_get_boolean(value));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, paramSpec);
break;
@@ -328,6 +332,9 @@
case PROP_ZOOM_TEXT_ONLY:
g_value_set_boolean(value, webkit_settings_get_zoom_text_only(settings));
break;
+ case PROP_JAVASCRIPT_CAN_ACCESS_CLIPBOARD:
+ g_value_set_boolean(value, webkit_settings_get_javascript_can_access_clipboard(settings));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, paramSpec);
break;
@@ -840,6 +847,21 @@
FALSE,
readWriteConstructParamFlags));
+ /**
+ * WebKitSettings:_javascript_-can-access-clipboard:
+ *
+ * Whether _javascript_ can access the clipboard. The default value is %FALSE. If
+ * set to %TRUE, document.execCommand() allows cut, copy and paste commands.
+ *
+ */
+ g_object_class_install_property(gObjectClass,
+ PROP_JAVASCRIPT_CAN_ACCESS_CLIPBOARD,
+ g_param_spec_boolean("_javascript_-can-access-clipboard",
+ _("_javascript_ can access clipboard"),
+ _("Whether _javascript_ can access Clipboard"),
+ FALSE,
+ readWriteConstructParamFlags));
+
g_type_class_add_private(klass, sizeof(WebKitSettingsPrivate));
}
@@ -2133,3 +2155,41 @@
return settings->priv->zoomTextOnly;
}
+/**
+ * webkit_settings_get_javascript_can_access_clipboard:
+ * @settings: a #WebKitSettings
+ *
+ * Get the #WebKitSettings:_javascript_-can-access-clipboard property.
+ *
+ * Returns: %TRUE If _javascript_-can-access-clipboard is enabled or %FALSE otherwise.
+ */
+gboolean webkit_settings_get_javascript_can_access_clipboard(WebKitSettings* settings)
+{
+ g_return_val_if_fail(WEBKIT_IS_SETTINGS(settings), FALSE);
+
+ return WKPreferencesGetJavaScriptCanAccessClipboard(settings->priv->preferences.get())
+ && WKPreferencesGetDOMPasteAllowed(settings->priv->preferences.get());
+}
+
+/**
+ * webkit_settings_set_javascript_can_access_clipboard:
+ * @settings: a #WebKitSettings
+ * @enabled: Value to be set
+ *
+ * Set the #WebKitSettings:_javascript_-can-access-clipboard property.
+ */
+void webkit_settings_set_javascript_can_access_clipboard(WebKitSettings* settings, gboolean enabled)
+{
+ g_return_if_fail(WEBKIT_IS_SETTINGS(settings));
+
+ WebKitSettingsPrivate* priv = settings->priv;
+ bool currentValue = WKPreferencesGetJavaScriptCanAccessClipboard(priv->preferences.get())
+ && WKPreferencesGetDOMPasteAllowed(priv->preferences.get());
+ if (currentValue == enabled)
+ return;
+
+ WKPreferencesSetJavaScriptCanAccessClipboard(priv->preferences.get(), enabled);
+ WKPreferencesSetDOMPasteAllowed(priv->preferences.get(), enabled);
+
+ g_object_notify(G_OBJECT(settings), "_javascript_-can-access-clipboard");
+}
Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.h (111398 => 111399)
--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.h 2012-03-20 15:31:16 UTC (rev 111398)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.h 2012-03-20 15:38:40 UTC (rev 111399)
@@ -314,6 +314,13 @@
WEBKIT_API gboolean
webkit_settings_get_zoom_text_only (WebKitSettings *settings);
+WEBKIT_API gboolean
+webkit_settings_get_javascript_can_access_clipboard (WebKitSettings *settings);
+
+WEBKIT_API void
+webkit_settings_set_javascript_can_access_clipboard (WebKitSettings *settings,
+ gboolean enabled);
+
G_END_DECLS
#endif /* WebKitSettings_h */
Modified: trunk/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt (111398 => 111399)
--- trunk/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt 2012-03-20 15:31:16 UTC (rev 111398)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt 2012-03-20 15:38:40 UTC (rev 111399)
@@ -232,6 +232,8 @@
webkit_settings_set_enable_webgl
webkit_settings_get_zoom_text_only
webkit_settings_set_zoom_text_only
+webkit_settings_get_javascript_can_access_clipboard
+webkit_settings_set_javascript_can_access_clipboard
<SUBSECTION Standard>
WebKitSettingsClass
Modified: trunk/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitSettings.cpp (111398 => 111399)
--- trunk/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitSettings.cpp 2012-03-20 15:31:16 UTC (rev 111398)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitSettings.cpp 2012-03-20 15:38:40 UTC (rev 111399)
@@ -204,6 +204,11 @@
webkit_settings_set_zoom_text_only(settings, TRUE);
g_assert(webkit_settings_get_zoom_text_only(settings));
+ // By default, _javascript_ cannot access the clipboard.
+ g_assert(!webkit_settings_get_javascript_can_access_clipboard(settings));
+ webkit_settings_set_javascript_can_access_clipboard(settings, TRUE);
+ g_assert(webkit_settings_get_javascript_can_access_clipboard(settings));
+
g_object_unref(G_OBJECT(settings));
}