Modified: trunk/Source/WebKit/gtk/ChangeLog (116540 => 116541)
--- trunk/Source/WebKit/gtk/ChangeLog 2012-05-09 17:06:19 UTC (rev 116540)
+++ trunk/Source/WebKit/gtk/ChangeLog 2012-05-09 17:23:24 UTC (rev 116541)
@@ -1,3 +1,29 @@
+2012-05-09 Simon Pena <[email protected]>
+
+ [GTK] Missing WebPreferences for media playback requiring user gestures and inline playback
+ https://bugs.webkit.org/show_bug.cgi?id=85194
+
+ Reviewed by Martin Robinson.
+
+ Expose WebPreferences for media playback requires user gesture and
+ media playback allows inline to GTK side.
+
+ This adds two properties (mediaPlaybackRequiresUserGesture and
+ mediaPlaybackAllowsInline) to GTK WebKit WebSettings, and connects
+ them to the WebKit WebView, so clients can programmatically modify
+ them.
+
+ * webkit/webkitwebsettings.cpp: install new properties and update
+ setter and getter
+ (webkit_web_settings_class_init):
+ (webkit_web_settings_set_property):
+ (webkit_web_settings_get_property):
+ * webkit/webkitwebsettingsprivate.h: add media playback related
+ properties
+ * webkit/webkitwebview.cpp: connect newly added properties
+ (webkit_web_view_update_settings):
+ (webkit_web_view_settings_notify):
+
2012-05-09 Dan Winship <[email protected]>
[GTK] don't use soup_session_pause_message in webkitdownload
Modified: trunk/Source/WebKit/gtk/webkit/webkitwebsettings.cpp (116540 => 116541)
--- trunk/Source/WebKit/gtk/webkit/webkitwebsettings.cpp 2012-05-09 17:06:19 UTC (rev 116540)
+++ trunk/Source/WebKit/gtk/webkit/webkitwebsettings.cpp 2012-05-09 17:23:24 UTC (rev 116541)
@@ -121,7 +121,9 @@
PROP_ENABLE_WEBGL,
PROP_ENABLE_WEB_AUDIO,
PROP_ENABLE_ACCELERATED_COMPOSITING,
- PROP_ENABLE_SMOOTH_SCROLLING
+ PROP_ENABLE_SMOOTH_SCROLLING,
+ PROP_MEDIA_PLAYBACK_REQUIRES_USER_GESTURE,
+ PROP_MEDIA_PLAYBACK_ALLOWS_INLINE
};
// Create a default user agent string
@@ -972,6 +974,43 @@
_("Whether to enable smooth scrolling"),
FALSE,
flags));
+
+ /**
+ * WebKitWebSettings: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.
+ *
+ * Since: 1.10.0
+ */
+ g_object_class_install_property(gobject_class,
+ 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,
+ flags));
+
+ /**
+ * WebKitWebSettings: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.
+ *
+ * Since: 1.10.0
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_MEDIA_PLAYBACK_ALLOWS_INLINE,
+ g_param_spec_boolean("media-playback-allows-inline",
+ _("Media playback allows inline"),
+ _("Whether media playback allows inline"),
+ TRUE,
+ flags));
+
}
static void webkit_web_settings_init(WebKitWebSettings* web_settings)
@@ -1150,6 +1189,12 @@
case PROP_ENABLE_SMOOTH_SCROLLING:
priv->enableSmoothScrolling = g_value_get_boolean(value);
break;
+ case PROP_MEDIA_PLAYBACK_REQUIRES_USER_GESTURE:
+ priv->mediaPlaybackRequiresUserGesture = g_value_get_boolean(value);
+ break;
+ case PROP_MEDIA_PLAYBACK_ALLOWS_INLINE:
+ priv->mediaPlaybackAllowsInline = g_value_get_boolean(value);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
break;
@@ -1318,6 +1363,12 @@
case PROP_ENABLE_SMOOTH_SCROLLING:
g_value_set_boolean(value, priv->enableSmoothScrolling);
break;
+ case PROP_MEDIA_PLAYBACK_REQUIRES_USER_GESTURE:
+ g_value_set_boolean(value, priv->mediaPlaybackRequiresUserGesture);
+ break;
+ case PROP_MEDIA_PLAYBACK_ALLOWS_INLINE:
+ g_value_set_boolean(value, priv->mediaPlaybackAllowsInline);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
break;
Modified: trunk/Source/WebKit/gtk/webkit/webkitwebsettingsprivate.h (116540 => 116541)
--- trunk/Source/WebKit/gtk/webkit/webkitwebsettingsprivate.h 2012-05-09 17:06:19 UTC (rev 116540)
+++ trunk/Source/WebKit/gtk/webkit/webkitwebsettingsprivate.h 2012-05-09 17:23:24 UTC (rev 116541)
@@ -81,6 +81,8 @@
gboolean enableWebAudio;
gboolean enableAcceleratedCompositing;
gboolean enableSmoothScrolling;
+ gboolean mediaPlaybackRequiresUserGesture;
+ gboolean mediaPlaybackAllowsInline;
};
WEBKIT_API void webkit_web_settings_add_extra_plugin_directory(WebKitWebView*, const gchar* directory);
Modified: trunk/Source/WebKit/gtk/webkit/webkitwebview.cpp (116540 => 116541)
--- trunk/Source/WebKit/gtk/webkit/webkitwebview.cpp 2012-05-09 17:06:19 UTC (rev 116540)
+++ trunk/Source/WebKit/gtk/webkit/webkitwebview.cpp 2012-05-09 17:23:24 UTC (rev 116541)
@@ -3334,6 +3334,8 @@
coreSettings->setJavaEnabled(settingsPrivate->enableJavaApplet);
coreSettings->setHyperlinkAuditingEnabled(settingsPrivate->enableHyperlinkAuditing);
coreSettings->setDNSPrefetchingEnabled(settingsPrivate->enableDNSPrefetching);
+ coreSettings->setMediaPlaybackRequiresUserGesture(settingsPrivate->mediaPlaybackRequiresUserGesture);
+ coreSettings->setMediaPlaybackAllowsInline(settingsPrivate->mediaPlaybackAllowsInline);
#if ENABLE(SQL_DATABASE)
AbstractDatabase::setIsAvailable(settingsPrivate->enableHTML5Database);
@@ -3475,6 +3477,10 @@
settings->setJavaEnabled(g_value_get_boolean(&value));
else if (name == g_intern_string("enable-hyperlink-auditing"))
settings->setHyperlinkAuditingEnabled(g_value_get_boolean(&value));
+ else if (name == g_intern_string("media-playback-requires-user-gesture"))
+ settings->setMediaPlaybackRequiresUserGesture(g_value_get_boolean(&value));
+ else if (name == g_intern_string("media-playback-allows-inline"))
+ settings->setMediaPlaybackAllowsInline(g_value_get_boolean(&value));
#if ENABLE(SPELLCHECK)
else if (name == g_intern_string("spell-checking-languages")) {