Title: [116541] trunk/Source/WebKit/gtk
Revision
116541
Author
[email protected]
Date
2012-05-09 10:23:24 -0700 (Wed, 09 May 2012)

Log Message

[GTK] Missing WebPreferences for media playback requiring user gestures and inline playback
https://bugs.webkit.org/show_bug.cgi?id=85194

Patch by Simon Pena <[email protected]> on 2012-05-09
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):

Modified Paths

Diff

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")) {
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to