Title: [116652] trunk/Source/WebKit2
Revision
116652
Author
[email protected]
Date
2012-05-10 09:38:13 -0700 (Thu, 10 May 2012)

Log Message

[GTK] WK2 misses WebKitSettings for media playback requiring user gestures and inline playback
https://bugs.webkit.org/show_bug.cgi?id=85999

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

Modified Paths

Diff

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/docs/webkit2gtk-sections.txt (116651 => 116652)


--- trunk/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt	2012-05-10 16:33:28 UTC (rev 116651)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt	2012-05-10 16:38:13 UTC (rev 116652)
@@ -251,6 +251,10 @@
 webkit_settings_set_zoom_text_only
 webkit_settings_get_javascript_can_access_clipboard
 webkit_settings_set_javascript_can_access_clipboard
+webkit_settings_get_media_playback_requires_user_gesture
+webkit_settings_set_media_playback_requires_user_gesture
+webkit_settings_get_media_playback_allows_inline
+webkit_settings_set_media_playback_allows_inline
 
 <SUBSECTION Standard>
 WebKitSettingsClass

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

Reply via email to