Modified: trunk/Source/WebKit2/ChangeLog (116651 => 116652)
--- trunk/Source/WebKit2/ChangeLog 2012-05-10 16:33:28 UTC (rev 116651)
+++ trunk/Source/WebKit2/ChangeLog 2012-05-10 16:38:13 UTC (rev 116652)
@@ -1,5 +1,37 @@
2012-05-10 Simon Pena <[email protected]>
+ [GTK] WK2 misses WebKitSettings for media playback requiring user gestures and inline playback
+ https://bugs.webkit.org/show_bug.cgi?id=85999
+
+ Reviewed by Martin Robinson.
+
+ Expose WebKitSettings for media playback requiring user gesture and
+ media playback allows inline to GTK side.
+
+ This adds two properties (mediaPlaybackRequiresUserGesture and
+ mediaPlaybackAllowsInline), with their setters and getters, to
+ WebKitSettings. It also updates the WebKitSettings tests so these
+ two properties are checked, and includes the new methods in the
+ documentation.
+
+ * UIProcess/API/gtk/WebKitSettings.cpp: added the new properties and
+ their accessors
+ (webKitSettingsSetProperty):
+ (webKitSettingsGetProperty):
+ (webkit_settings_class_init):
+ (webkit_settings_set_media_playback_requires_user_gesture):
+ (webkit_settings_get_media_playback_requires_user_gesture):
+ (webkit_settings_set_media_playback_allows_inline):
+ (webkit_settings_get_media_playback_allows_inline):
+ * UIProcess/API/gtk/WebKitSettings.h:
+ * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: included the new
+ methods in the documentation
+ * UIProcess/API/gtk/tests/TestWebKitSettings.cpp: tested the newly
+ added methods
+ (testWebKitSettings):
+
+2012-05-10 Simon Pena <[email protected]>
+
[GTK] Missing field initializers for WKPageLoaderClient
https://bugs.webkit.org/show_bug.cgi?id=86005
Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp (116651 => 116652)
--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp 2012-05-10 16:33:28 UTC (rev 116651)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp 2012-05-10 16:38:13 UTC (rev 116652)
@@ -106,7 +106,9 @@
PROP_ENABLE_WEBAUDIO,
PROP_ENABLE_WEBGL,
PROP_ZOOM_TEXT_ONLY,
- PROP_JAVASCRIPT_CAN_ACCESS_CLIPBOARD
+ PROP_JAVASCRIPT_CAN_ACCESS_CLIPBOARD,
+ PROP_MEDIA_PLAYBACK_REQUIRES_USER_GESTURE,
+ PROP_MEDIA_PLAYBACK_ALLOWS_INLINE
};
static void webKitSettingsSetProperty(GObject* object, guint propId, const GValue* value, GParamSpec* paramSpec)
@@ -219,6 +221,12 @@
case PROP_JAVASCRIPT_CAN_ACCESS_CLIPBOARD:
webkit_settings_set_javascript_can_access_clipboard(settings, g_value_get_boolean(value));
break;
+ case PROP_MEDIA_PLAYBACK_REQUIRES_USER_GESTURE:
+ webkit_settings_set_media_playback_requires_user_gesture(settings, g_value_get_boolean(value));
+ break;
+ case PROP_MEDIA_PLAYBACK_ALLOWS_INLINE:
+ webkit_settings_set_media_playback_allows_inline(settings, g_value_get_boolean(value));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, paramSpec);
break;
@@ -335,6 +343,12 @@
case PROP_JAVASCRIPT_CAN_ACCESS_CLIPBOARD:
g_value_set_boolean(value, webkit_settings_get_javascript_can_access_clipboard(settings));
break;
+ case PROP_MEDIA_PLAYBACK_REQUIRES_USER_GESTURE:
+ g_value_set_boolean(value, webkit_settings_get_media_playback_requires_user_gesture(settings));
+ break;
+ case PROP_MEDIA_PLAYBACK_ALLOWS_INLINE:
+ g_value_set_boolean(value, webkit_settings_get_media_playback_allows_inline(settings));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, paramSpec);
break;
@@ -862,6 +876,38 @@
FALSE,
readWriteConstructParamFlags));
+ /**
+ * WebKitSettings:media-playback-requires-user-gesture:
+ *
+ * Whether a user gesture (such as clicking the play button)
+ * would be required to start media playback or load media. This is off
+ * by default, so media playback could start automatically.
+ * Setting it on requires a gesture by the user to start playback, or to
+ * load the media.
+ */
+ g_object_class_install_property(gObjectClass,
+ PROP_MEDIA_PLAYBACK_REQUIRES_USER_GESTURE,
+ g_param_spec_boolean("media-playback-requires-user-gesture",
+ _("Media playback requires user gesture"),
+ _("Whether media playback requires user gesture"),
+ FALSE,
+ readWriteConstructParamFlags));
+
+ /**
+ * WebKitSettings:media-playback-allows-inline
+ *
+ * Whether media playback is full-screen only or inline playback is allowed.
+ * This is %TRUE by default, so media playback can be inline. Setting it to
+ * %FALSE allows specifying that media playback should be always fullscreen.
+ */
+ g_object_class_install_property(gObjectClass,
+ PROP_MEDIA_PLAYBACK_ALLOWS_INLINE,
+ g_param_spec_boolean("media-playback-allows-inline",
+ _("Media playback allows inline"),
+ _("Whether media playback allows inline"),
+ TRUE,
+ readWriteConstructParamFlags));
+
g_type_class_add_private(klass, sizeof(WebKitSettingsPrivate));
}
@@ -2193,3 +2239,77 @@
g_object_notify(G_OBJECT(settings), "_javascript_-can-access-clipboard");
}
+
+/**
+ * webkit_settings_set_media_playback_requires_user_gesture:
+ * @settings: a #WebKitSettings
+ * @enabled: Value to be set
+ *
+ * Set the #WebKitSettings:media-playback-requires-user-gesture property.
+ */
+void webkit_settings_set_media_playback_requires_user_gesture(WebKitSettings* settings, gboolean enabled)
+{
+ g_return_if_fail(WEBKIT_IS_SETTINGS(settings));
+
+ WebKitSettingsPrivate* priv = settings->priv;
+ bool currentValue = WKPreferencesGetMediaPlaybackRequiresUserGesture(priv->preferences.get());
+ if (currentValue == enabled)
+ return;
+
+ WKPreferencesSetMediaPlaybackRequiresUserGesture(priv->preferences.get(), enabled);
+
+ g_object_notify(G_OBJECT(settings), "media-playback-requires-user-gesture");
+}
+
+/**
+ * webkit_settings_get_media_playback_requires_user_gesture:
+ * @settings: a #WebKitSettings
+ *
+ * Get the #WebKitSettings:media-playback-requires-user-gesture property.
+ *
+ * Returns: %TRUE If an user gesture is needed to play or load media
+ * or %FALSE if no user gesture is needed.
+ */
+gboolean webkit_settings_get_media_playback_requires_user_gesture(WebKitSettings* settings)
+{
+ g_return_val_if_fail(WEBKIT_IS_SETTINGS(settings), FALSE);
+
+ return WKPreferencesGetMediaPlaybackRequiresUserGesture(settings->priv->preferences.get());
+}
+
+/**
+ * webkit_settings_set_media_playback_allows_inline:
+ * @settings: a #WebKitSettings
+ * @enabled: Value to be set
+ *
+ * Set the #WebKitSettings:media-playback-allows-inline property.
+ */
+void webkit_settings_set_media_playback_allows_inline(WebKitSettings* settings, gboolean enabled)
+{
+ g_return_if_fail(WEBKIT_IS_SETTINGS(settings));
+
+ WebKitSettingsPrivate* priv = settings->priv;
+ bool currentValue = WKPreferencesGetMediaPlaybackAllowsInline(priv->preferences.get());
+ if (currentValue == enabled)
+ return;
+
+ WKPreferencesSetMediaPlaybackAllowsInline(priv->preferences.get(), enabled);
+
+ g_object_notify(G_OBJECT(settings), "media-playback-allows-inline");
+}
+
+/**
+ * webkit_settings_get_media_playback_allows_inline:
+ * @settings: a #WebKitSettings
+ *
+ * Get the #WebKitSettings:media-playback-allows-inline property.
+ *
+ * Returns: %TRUE If inline playback is allowed for media
+ * or %FALSE if only fullscreen playback is allowed.
+ */
+gboolean webkit_settings_get_media_playback_allows_inline(WebKitSettings* settings)
+{
+ g_return_val_if_fail(WEBKIT_IS_SETTINGS(settings), TRUE);
+
+ return WKPreferencesGetMediaPlaybackAllowsInline(settings->priv->preferences.get());
+}
Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.h (116651 => 116652)
--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.h 2012-05-10 16:33:28 UTC (rev 116651)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.h 2012-05-10 16:38:13 UTC (rev 116652)
@@ -321,6 +321,19 @@
webkit_settings_set_javascript_can_access_clipboard (WebKitSettings *settings,
gboolean enabled);
+WEBKIT_API gboolean
+webkit_settings_get_media_playback_requires_user_gesture (WebKitSettings *settings);
+
+WEBKIT_API void
+webkit_settings_set_media_playback_requires_user_gesture (WebKitSettings *settings,
+ gboolean enabled);
+
+WEBKIT_API gboolean
+webkit_settings_get_media_playback_allows_inline (WebKitSettings *settings);
+
+WEBKIT_API void
+webkit_settings_set_media_playback_allows_inline (WebKitSettings *settings,
+ gboolean enabled);
G_END_DECLS
#endif /* WebKitSettings_h */
Modified: trunk/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitSettings.cpp (116651 => 116652)
--- trunk/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitSettings.cpp 2012-05-10 16:33:28 UTC (rev 116651)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitSettings.cpp 2012-05-10 16:38:13 UTC (rev 116652)
@@ -209,6 +209,16 @@
webkit_settings_set_javascript_can_access_clipboard(settings, TRUE);
g_assert(webkit_settings_get_javascript_can_access_clipboard(settings));
+ // By default, media playback doesn't require user gestures.
+ g_assert(!webkit_settings_get_media_playback_requires_user_gesture(settings));
+ webkit_settings_set_media_playback_requires_user_gesture(settings, TRUE);
+ g_assert(webkit_settings_get_media_playback_requires_user_gesture(settings));
+
+ // By default, inline media playback is allowed
+ g_assert(webkit_settings_get_media_playback_allows_inline(settings));
+ webkit_settings_set_media_playback_allows_inline(settings, FALSE);
+ g_assert(!webkit_settings_get_media_playback_allows_inline(settings));
+
g_object_unref(G_OBJECT(settings));
}