<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[238278] trunk/Source</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/238278">238278</a></dd>
<dt>Author</dt> <dd>commit-queue@webkit.org</dd>
<dt>Date</dt> <dd>2018-11-16 06:09:39 -0800 (Fri, 16 Nov 2018)</dd>
</dl>

<h3>Log Message</h3>
<pre>[GStreamer][WebRTC] Add API to enable/disable device mocks
https://bugs.webkit.org/show_bug.cgi?id=191699

This basically us to test MediaStream/WebRTC support without
requiring cameras or microphones and is quite useful.

Also fix the GStreamerAudioMock by:
  - Stop setting `leaky-upstream` on the GStreamerCapturer queue,
    this was usefull when we were trying to bring the MediaStream
    sources inside the main pipeline, it is not the case anymore
    (and not doable with latest version of LibWebRTC).
  - Use a 'ticks' wave on the gstreamer audiotestsrc so the test
    stream is similar to what Apple port does.

Patch by Thibault Saunier <tsaunier@igalia.com> on 2018-11-16
Reviewed by Xabier Rodriguez-Calvar.

The mocks are already tested and the API is really simple.

Source/WebCore:

* platform/mediastream/gstreamer/GStreamerAudioCapturer.cpp:
(WebCore::GStreamerAudioCapturer::createSource):
* platform/mediastream/gstreamer/GStreamerAudioCapturer.h:
* platform/mediastream/gstreamer/GStreamerCapturer.cpp:
(WebCore::GStreamerCapturer::addSink):
* platform/mediastream/gstreamer/GStreamerCapturer.h:

Source/WebKit:

* UIProcess/API/glib/WebKitSettings.cpp:
(webKitSettingsSetProperty):
(webKitSettingsGetProperty):
(webkit_settings_class_init):
(webkit_settings_get_enable_mock_capture_devices):
(webkit_settings_set_enable_mock_capture_devices):
* UIProcess/API/gtk/WebKitSettings.h:
* UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreamgstreamerGStreamerAudioCapturercpp">trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCapturer.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreamgstreamerGStreamerAudioCapturerh">trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCapturer.h</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreamgstreamerGStreamerCapturercpp">trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerCapturer.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformmediastreamgstreamerGStreamerCapturerh">trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerCapturer.h</a></li>
<li><a href="#trunkSourceWebKitChangeLog">trunk/Source/WebKit/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitUIProcessAPIglibWebKitSettingscpp">trunk/Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp</a></li>
<li><a href="#trunkSourceWebKitUIProcessAPIgtkWebKitSettingsh">trunk/Source/WebKit/UIProcess/API/gtk/WebKitSettings.h</a></li>
<li><a href="#trunkSourceWebKitUIProcessAPIgtkdocswebkit2gtk40sectionstxt">trunk/Source/WebKit/UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt</a></li>
<li><a href="#trunkSourceWebKitUIProcessAPIwpeWebKitSettingsh">trunk/Source/WebKit/UIProcess/API/wpe/WebKitSettings.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (238277 => 238278)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog   2018-11-16 14:02:41 UTC (rev 238277)
+++ trunk/Source/WebCore/ChangeLog      2018-11-16 14:09:39 UTC (rev 238278)
</span><span class="lines">@@ -1,5 +1,32 @@
</span><span class="cx"> 2018-11-16  Thibault Saunier  <tsaunier@igalia.com>
</span><span class="cx"> 
</span><ins>+        [GStreamer][WebRTC] Add API to enable/disable device mocks
+        https://bugs.webkit.org/show_bug.cgi?id=191699
+
+        This basically us to test MediaStream/WebRTC support without
+        requiring cameras or microphones and is quite useful.
+
+        Also fix the GStreamerAudioMock by:
+          - Stop setting `leaky-upstream` on the GStreamerCapturer queue,
+            this was usefull when we were trying to bring the MediaStream
+            sources inside the main pipeline, it is not the case anymore
+            (and not doable with latest version of LibWebRTC).
+          - Use a 'ticks' wave on the gstreamer audiotestsrc so the test
+            stream is similar to what Apple port does.
+
+        Reviewed by Xabier Rodriguez-Calvar.
+
+        The mocks are already tested and the API is really simple.
+
+        * platform/mediastream/gstreamer/GStreamerAudioCapturer.cpp:
+        (WebCore::GStreamerAudioCapturer::createSource):
+        * platform/mediastream/gstreamer/GStreamerAudioCapturer.h:
+        * platform/mediastream/gstreamer/GStreamerCapturer.cpp:
+        (WebCore::GStreamerCapturer::addSink):
+        * platform/mediastream/gstreamer/GStreamerCapturer.h:
+
+2018-11-16  Thibault Saunier  <tsaunier@igalia.com>
+
</ins><span class="cx">         [GStreamer][MediaStream] Handle track addition and removal
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=191599
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreamgstreamerGStreamerAudioCapturercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCapturer.cpp (238277 => 238278)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCapturer.cpp   2018-11-16 14:02:41 UTC (rev 238277)
+++ trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCapturer.cpp      2018-11-16 14:09:39 UTC (rev 238278)
</span><span class="lines">@@ -40,6 +40,16 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+GstElement* GStreamerAudioCapturer::createSource()
+{
+    GstElement* source = GStreamerCapturer::createSource();
+
+    if (!m_device)
+        gst_util_set_object_arg(G_OBJECT(m_src.get()), "wave", "ticks");
+
+    return source;
+}
+
</ins><span class="cx"> GstElement* GStreamerAudioCapturer::createConverter()
</span><span class="cx"> {
</span><span class="cx">     auto converter = gst_parse_bin_from_description("audioconvert ! audioresample", TRUE, nullptr);
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreamgstreamerGStreamerAudioCapturerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCapturer.h (238277 => 238278)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCapturer.h     2018-11-16 14:02:41 UTC (rev 238277)
+++ trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCapturer.h        2018-11-16 14:09:39 UTC (rev 238278)
</span><span class="lines">@@ -32,6 +32,7 @@
</span><span class="cx">     GStreamerAudioCapturer(GStreamerCaptureDevice);
</span><span class="cx">     GStreamerAudioCapturer();
</span><span class="cx"> 
</span><ins>+    GstElement* createSource() final;
</ins><span class="cx">     GstElement* createConverter() final;
</span><span class="cx">     const char* name() final { return "Audio"; }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreamgstreamerGStreamerCapturercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerCapturer.cpp (238277 => 238278)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerCapturer.cpp        2018-11-16 14:02:41 UTC (rev 238277)
+++ trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerCapturer.cpp   2018-11-16 14:09:39 UTC (rev 238278)
</span><span class="lines">@@ -155,13 +155,6 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (newSink == m_sink.get()) {
-        GST_INFO_OBJECT(m_pipeline.get(), "Setting queue as leaky upstream"
-            " so that the player can set the sink to PAUSED without "
-            " setting the whole capturer to PAUSED");
-        g_object_set(queue, "leaky", 2 /* upstream */, nullptr);
-    }
-
</del><span class="cx">     GST_INFO_OBJECT(pipeline(), "Adding sink: %" GST_PTR_FORMAT, newSink);
</span><span class="cx"> 
</span><span class="cx">     GUniquePtr<char> dumpName(g_strdup_printf("%s_sink_%s_added", GST_OBJECT_NAME(pipeline()), GST_OBJECT_NAME(newSink)));
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmediastreamgstreamerGStreamerCapturerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerCapturer.h (238277 => 238278)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerCapturer.h  2018-11-16 14:02:41 UTC (rev 238277)
+++ trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerCapturer.h     2018-11-16 14:09:39 UTC (rev 238278)
</span><span class="lines">@@ -43,7 +43,7 @@
</span><span class="cx">     GstCaps* caps();
</span><span class="cx">     void addSink(GstElement *newSink);
</span><span class="cx">     GstElement* makeElement(const char* factoryName);
</span><del>-    GstElement* createSource();
</del><ins>+    virtual GstElement* createSource();
</ins><span class="cx">     GstElement* source() { return m_src.get();  }
</span><span class="cx">     virtual const char* name() = 0;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKitChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/ChangeLog (238277 => 238278)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/ChangeLog    2018-11-16 14:02:41 UTC (rev 238277)
+++ trunk/Source/WebKit/ChangeLog       2018-11-16 14:09:39 UTC (rev 238278)
</span><span class="lines">@@ -1,5 +1,34 @@
</span><span class="cx"> 2018-11-16  Thibault Saunier  <tsaunier@igalia.com>
</span><span class="cx"> 
</span><ins>+        [GStreamer][WebRTC] Add API to enable/disable device mocks
+        https://bugs.webkit.org/show_bug.cgi?id=191699
+
+        This basically us to test MediaStream/WebRTC support without
+        requiring cameras or microphones and is quite useful.
+
+        Also fix the GStreamerAudioMock by:
+          - Stop setting `leaky-upstream` on the GStreamerCapturer queue,
+            this was usefull when we were trying to bring the MediaStream
+            sources inside the main pipeline, it is not the case anymore
+            (and not doable with latest version of LibWebRTC).
+          - Use a 'ticks' wave on the gstreamer audiotestsrc so the test
+            stream is similar to what Apple port does.
+
+        Reviewed by Xabier Rodriguez-Calvar.
+
+        The mocks are already tested and the API is really simple.
+
+        * UIProcess/API/glib/WebKitSettings.cpp:
+        (webKitSettingsSetProperty):
+        (webKitSettingsGetProperty):
+        (webkit_settings_class_init):
+        (webkit_settings_get_enable_mock_capture_devices):
+        (webkit_settings_set_enable_mock_capture_devices):
+        * UIProcess/API/gtk/WebKitSettings.h:
+        * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
+
+2018-11-16  Thibault Saunier  <tsaunier@igalia.com>
+
</ins><span class="cx">         [GTK][WPE] Add "WebKitDeviceInfoPermissionRequest.h" into webkit2.h
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=191744
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKitUIProcessAPIglibWebKitSettingscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp (238277 => 238278)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp        2018-11-16 14:02:41 UTC (rev 238277)
+++ trunk/Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp   2018-11-16 14:09:39 UTC (rev 238278)
</span><span class="lines">@@ -152,6 +152,7 @@
</span><span class="cx">     PROP_ENABLE_ACCELERATED_2D_CANVAS,
</span><span class="cx">     PROP_ENABLE_WRITE_CONSOLE_MESSAGES_TO_STDOUT,
</span><span class="cx">     PROP_ENABLE_MEDIA_STREAM,
</span><ins>+    PROP_ENABLE_MOCK_CAPTURE_DEVICES,
</ins><span class="cx">     PROP_ENABLE_SPATIAL_NAVIGATION,
</span><span class="cx">     PROP_ENABLE_MEDIASOURCE,
</span><span class="cx">     PROP_ENABLE_ENCRYPTED_MEDIA,
</span><span class="lines">@@ -352,6 +353,9 @@
</span><span class="cx">     case PROP_ENABLE_MEDIA_STREAM:
</span><span class="cx">         webkit_settings_set_enable_media_stream(settings, g_value_get_boolean(value));
</span><span class="cx">         break;
</span><ins>+    case PROP_ENABLE_MOCK_CAPTURE_DEVICES:
+        webkit_settings_set_enable_mock_capture_devices(settings, g_value_get_boolean(value));
+        break;
</ins><span class="cx">     case PROP_ENABLE_SPATIAL_NAVIGATION:
</span><span class="cx">         webkit_settings_set_enable_spatial_navigation(settings, g_value_get_boolean(value));
</span><span class="cx">         break;
</span><span class="lines">@@ -528,6 +532,9 @@
</span><span class="cx">     case PROP_ENABLE_MEDIA_STREAM:
</span><span class="cx">         g_value_set_boolean(value, webkit_settings_get_enable_media_stream(settings));
</span><span class="cx">         break;
</span><ins>+    case PROP_ENABLE_MOCK_CAPTURE_DEVICES:
+        g_value_set_boolean(value, webkit_settings_get_enable_mock_capture_devices(settings));
+        break;
</ins><span class="cx">     case PROP_ENABLE_SPATIAL_NAVIGATION:
</span><span class="cx">         g_value_set_boolean(value, webkit_settings_get_enable_spatial_navigation(settings));
</span><span class="cx">         break;
</span><span class="lines">@@ -1269,6 +1276,23 @@
</span><span class="cx">             FALSE,
</span><span class="cx">             readWriteConstructParamFlags));
</span><span class="cx"> 
</span><ins>+    /**
+     * WebKitSettings:enable-mock-capture-devices:
+     *
+     * Enable or disable the Mock Capture Devices. Those are fake
+     * Microphone and Camera devices to be used as MediaStream
+     * sources.
+     *
+     * Since: 2.24
+     */
+    g_object_class_install_property(gObjectClass,
+        PROP_ENABLE_MOCK_CAPTURE_DEVICES,
+        g_param_spec_boolean("enable-mock-capture-devices",
+            _("Enable mock capture devices"),
+            _("Whether we expose mock capture devices or not"),
+            FALSE,
+            readWriteConstructParamFlags));
+
</ins><span class="cx">    /**
</span><span class="cx">      * WebKitSettings:enable-spatial-navigation:
</span><span class="cx">      *
</span><span class="lines">@@ -3128,6 +3152,45 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /**
</span><ins>+ * webkit_settings_get_enable_mock_capture_devices:
+ * @settings: a #WebKitSettings
+ *
+ * Get the #WebKitSettings:enable-mock-capture-devices property.
+ *
+ * Returns: %TRUE If mock capture devices is enabled or %FALSE otherwise.
+ *
+ * Since: 2.24
+ */
+gboolean webkit_settings_get_enable_mock_capture_devices(WebKitSettings* settings)
+{
+    g_return_val_if_fail(WEBKIT_IS_SETTINGS(settings), FALSE);
+
+    return settings->priv->preferences->mockCaptureDevicesEnabled();
+}
+
+/**
+ * webkit_settings_set_enable_mock_capture_devices:
+ * @settings: a #WebKitSettings
+ * @enabled: Value to be set
+ *
+ * Set the #WebKitSettings:enable-mock-capture-devices property.
+ *
+ * Since: 2.4
+ */
+void webkit_settings_set_enable_mock_capture_devices(WebKitSettings* settings, gboolean enabled)
+{
+    g_return_if_fail(WEBKIT_IS_SETTINGS(settings));
+
+    WebKitSettingsPrivate* priv = settings->priv;
+    bool currentValue = priv->preferences->mockCaptureDevicesEnabled();
+    if (currentValue == enabled)
+        return;
+
+    priv->preferences->setMockCaptureDevicesEnabled(enabled);
+    g_object_notify(G_OBJECT(settings), "enable-mock-capture-devices");
+}
+
+/**
</ins><span class="cx">  * webkit_settings_set_enable_spatial_navigation:
</span><span class="cx">  * @settings: a #WebKitSettings
</span><span class="cx">  * @enabled: Value to be set
</span></span></pre></div>
<a id="trunkSourceWebKitUIProcessAPIgtkWebKitSettingsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/UIProcess/API/gtk/WebKitSettings.h (238277 => 238278)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/UIProcess/API/gtk/WebKitSettings.h   2018-11-16 14:02:41 UTC (rev 238277)
+++ trunk/Source/WebKit/UIProcess/API/gtk/WebKitSettings.h      2018-11-16 14:09:39 UTC (rev 238278)
</span><span class="lines">@@ -417,6 +417,13 @@
</span><span class="cx">                                                                 gboolean        enabled);
</span><span class="cx"> 
</span><span class="cx"> WEBKIT_API gboolean
</span><ins>+webkit_settings_get_enable_mock_capture_devices                (WebKitSettings *settings);
+
+WEBKIT_API void
+webkit_settings_set_enable_mock_capture_devices                (WebKitSettings *settings,
+                                                                gboolean        enabled);
+
+WEBKIT_API gboolean
</ins><span class="cx"> webkit_settings_get_enable_spatial_navigation                  (WebKitSettings *settings);
</span><span class="cx"> 
</span><span class="cx"> WEBKIT_API void
</span></span></pre></div>
<a id="trunkSourceWebKitUIProcessAPIgtkdocswebkit2gtk40sectionstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt (238277 => 238278)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt   2018-11-16 14:02:41 UTC (rev 238277)
+++ trunk/Source/WebKit/UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt      2018-11-16 14:09:39 UTC (rev 238278)
</span><span class="lines">@@ -471,6 +471,8 @@
</span><span class="cx"> webkit_settings_set_enable_write_console_messages_to_stdout
</span><span class="cx"> webkit_settings_get_enable_media_stream
</span><span class="cx"> webkit_settings_set_enable_media_stream
</span><ins>+webkit_settings_get_enable_mock_capture_devices
+webkit_settings_set_enable_mock_capture_devices
</ins><span class="cx"> webkit_settings_get_enable_spatial_navigation
</span><span class="cx"> webkit_settings_set_enable_spatial_navigation
</span><span class="cx"> webkit_settings_get_enable_mediasource
</span></span></pre></div>
<a id="trunkSourceWebKitUIProcessAPIwpeWebKitSettingsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/UIProcess/API/wpe/WebKitSettings.h (238277 => 238278)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/UIProcess/API/wpe/WebKitSettings.h   2018-11-16 14:02:41 UTC (rev 238277)
+++ trunk/Source/WebKit/UIProcess/API/wpe/WebKitSettings.h      2018-11-16 14:09:39 UTC (rev 238278)
</span><span class="lines">@@ -394,6 +394,13 @@
</span><span class="cx">                                                                 gboolean        enabled);
</span><span class="cx"> 
</span><span class="cx"> WEBKIT_API gboolean
</span><ins>+webkit_settings_get_enable_mock_capture_devices                (WebKitSettings *settings);
+
+WEBKIT_API void
+webkit_settings_set_enable_mock_capture_devices                (WebKitSettings *settings,
+                                                                gboolean        enabled);
+
+WEBKIT_API gboolean
</ins><span class="cx"> webkit_settings_get_enable_spatial_navigation                  (WebKitSettings *settings);
</span><span class="cx"> 
</span><span class="cx"> WEBKIT_API void
</span></span></pre>
</div>
</div>

</body>
</html>