Changeset 176952 in webkit


Ignore:
Timestamp:
Dec 8, 2014 10:14:19 AM (9 years ago)
Author:
Philippe Normand
Message:

[GTK] UserMedia Permission Request API
https://bugs.webkit.org/show_bug.cgi?id=136449

Reviewed by Carlos Garcia Campos.

Source/WebCore:

Very basic constraints validation support in the GStreamer
MediaStreamCenter. This is needed so the GTK C API tests using the
getUserMedia() API would not time out.

  • platform/mediastream/gstreamer/MediaStreamCenterGStreamer.cpp:

(WebCore::MediaStreamCenterGStreamer::~MediaStreamCenterGStreamer):
(WebCore::MediaStreamCenterGStreamer::validateRequestConstraints):
(WebCore::MediaStreamCenterGStreamer::createMediaStream):

Source/WebKit2:

  • PlatformGTK.cmake: GTK-specific new files.
  • UIProcess/API/gtk/WebKitUIClient.cpp: DecidePolicy handler

implementation for UserMediaPermissionRequest.

  • UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp: Added,

WebKitGTK API for UserMediaPermissionRequest, very similar to the
one used for Geolocation.
(webkitUserMediaPermissionRequestAllow):
(webkitUserMediaPermissionRequestDeny):
(webkit_permission_request_interface_init):
(webkitUserMediaPermissionRequestDispose):
(webkit_user_media_permission_get_media_types):
(webkitUserMediaPermissionRequestGetProperty):
(webkit_user_media_permission_request_class_init):
(webkitUserMediaPermissionRequestCreate):

  • UIProcess/API/gtk/WebKitUserMediaPermissionRequest.h: Added.
  • UIProcess/API/gtk/WebKitUserMediaPermissionRequestPrivate.h: Added.
  • UIProcess/API/gtk/docs/webkit2gtk-docs.sgml: Expose new API

in documentation.

  • UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Ditto.
  • UIProcess/API/gtk/webkit2.h: Expose UserMediaPermissionRequest API.

Tools:

The GTK version of the MiniBrowser has gained UserMedia permission
request support.

  • MiniBrowser/gtk/BrowserWindow.c: Show a popup when the page

requires user permission to access audio/video devices.
(permissionRequestDialogCallback):
(webViewDecidePermissionRequest):
(geolocationRequestDialogCallback): Deleted.

Location:
trunk
Files:
3 added
16 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r176949 r176952  
     12014-12-08  Philippe Normand  <pnormand@igalia.com>
     2
     3        [GTK] UserMedia Permission Request API
     4        https://bugs.webkit.org/show_bug.cgi?id=136449
     5
     6        Reviewed by Carlos Garcia Campos.
     7
     8        Very basic constraints validation support in the GStreamer
     9        MediaStreamCenter. This is needed so the GTK C API tests using the
     10        getUserMedia() API would not time out.
     11
     12        * platform/mediastream/gstreamer/MediaStreamCenterGStreamer.cpp:
     13        (WebCore::MediaStreamCenterGStreamer::~MediaStreamCenterGStreamer):
     14        (WebCore::MediaStreamCenterGStreamer::validateRequestConstraints):
     15        (WebCore::MediaStreamCenterGStreamer::createMediaStream):
     16
    1172014-12-08  Anders Carlsson  <andersca@apple.com>
    218
  • trunk/Source/WebCore/platform/mediastream/gstreamer/MediaStreamCenterGStreamer.cpp

    r165607 r176952  
    6060}
    6161
    62 void MediaStreamCenterGStreamer::validateRequestConstraints(PassRefPtr<MediaStreamCreationClient>, PassRefPtr<MediaConstraints>, PassRefPtr<MediaConstraints>)
     62void MediaStreamCenterGStreamer::validateRequestConstraints(PassRefPtr<MediaStreamCreationClient> prpQueryClient, PassRefPtr<MediaConstraints>, PassRefPtr<MediaConstraints>)
    6363{
    64     notImplemented();
     64    RefPtr<MediaStreamCreationClient> client = prpQueryClient;
     65    // FIXME: Actually do constraints validation. The MediaConstraints
     66    // need to comply with the available audio/video device(s)
     67    // capabilities. See bug #123345.
     68    client->constraintsValidated();
    6569}
    6670   
    67 void MediaStreamCenterGStreamer::createMediaStream(PassRefPtr<MediaStreamCreationClient>, PassRefPtr<MediaConstraints>, PassRefPtr<MediaConstraints>)
     71void MediaStreamCenterGStreamer::createMediaStream(PassRefPtr<MediaStreamCreationClient> prpQueryClient, PassRefPtr<MediaConstraints>, PassRefPtr<MediaConstraints>)
    6872{
    69     notImplemented();
     73    RefPtr<MediaStreamCreationClient> client = prpQueryClient;
     74    ASSERT(client);
     75
     76    Vector<RefPtr<MediaStreamSource>> audioSources;
     77    Vector<RefPtr<MediaStreamSource>> videoSources;
     78    // FIXME: fill source vectors, see bug #110150.
     79    client->didCreateStream(MediaStreamPrivate::create(audioSources, videoSources));
     80
    7081}
    7182
  • trunk/Source/WebKit2/ChangeLog

    r176951 r176952  
     12014-12-08  Philippe Normand  <pnormand@igalia.com>
     2
     3        [GTK] UserMedia Permission Request API
     4        https://bugs.webkit.org/show_bug.cgi?id=136449
     5
     6        Reviewed by Carlos Garcia Campos.
     7
     8        * PlatformGTK.cmake: GTK-specific new files.
     9        * UIProcess/API/gtk/WebKitUIClient.cpp:  DecidePolicy handler
     10        implementation for UserMediaPermissionRequest.
     11        * UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp: Added,
     12        WebKitGTK API for UserMediaPermissionRequest, very similar to the
     13        one used for Geolocation.
     14        (webkitUserMediaPermissionRequestAllow):
     15        (webkitUserMediaPermissionRequestDeny):
     16        (webkit_permission_request_interface_init):
     17        (webkitUserMediaPermissionRequestDispose):
     18        (webkit_user_media_permission_get_media_types):
     19        (webkitUserMediaPermissionRequestGetProperty):
     20        (webkit_user_media_permission_request_class_init):
     21        (webkitUserMediaPermissionRequestCreate):
     22        * UIProcess/API/gtk/WebKitUserMediaPermissionRequest.h: Added.
     23        * UIProcess/API/gtk/WebKitUserMediaPermissionRequestPrivate.h: Added.
     24        * UIProcess/API/gtk/docs/webkit2gtk-docs.sgml: Expose new API
     25        in documentation.
     26        * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Ditto.
     27        * UIProcess/API/gtk/webkit2.h: Expose UserMediaPermissionRequest API.
     28
    1292014-12-08  Anders Carlsson  <andersca@apple.com>
    230
  • trunk/Source/WebKit2/PlatformGTK.cmake

    r176540 r176952  
    207207    UIProcess/API/gtk/WebKitUserContentManagerPrivate.h
    208208    UIProcess/API/gtk/WebKitUserContentManager.cpp
     209    UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp
     210    UIProcess/API/gtk/WebKitUserMediaPermissionRequest.h
     211    UIProcess/API/gtk/WebKitUserMediaPermissionRequestPrivate.h
    209212    UIProcess/API/gtk/WebKitVersion.cpp
    210213    UIProcess/API/gtk/WebKitVersion.h.in
     
    362365    ${WEBKIT2_DIR}/UIProcess/API/gtk/WebKitUserContent.h
    363366    ${WEBKIT2_DIR}/UIProcess/API/gtk/WebKitUserContentManager.h
     367    ${WEBKIT2_DIR}/UIProcess/API/gtk/WebKitUserMediaPermissionRequest.h
    364368    ${WEBKIT2_DIR}/UIProcess/API/gtk/WebKitWebContext.h
    365369    ${WEBKIT2_DIR}/UIProcess/API/gtk/WebKitWebInspector.h
  • trunk/Source/WebKit2/UIProcess/API/gtk/WebKitPrivate.h

    r170702 r176952  
    4343#include <WebKit/WKString.h>
    4444#include <WebKit/WKTextChecker.h>
     45#include <WebKit/WKUserMediaPermissionRequest.h>
    4546#include <WebKit/WebKit2_C.h>
    4647#include <glib.h>
  • trunk/Source/WebKit2/UIProcess/API/gtk/WebKitUIClient.cpp

    r170702 r176952  
    2727#include "WebKitPrivate.h"
    2828#include "WebKitURIRequestPrivate.h"
     29#include "WebKitUserMediaPermissionRequestPrivate.h"
    2930#include "WebKitWebViewBasePrivate.h"
    3031#include "WebKitWebViewPrivate.h"
     
    159160    }
    160161
     162    virtual bool decidePolicyForUserMediaPermissionRequest(WebPageProxy&, WebFrameProxy&, WebSecurityOrigin& securityOrigin, UserMediaPermissionRequestProxy& permissionRequest) override
     163    {
     164        GRefPtr<WebKitUserMediaPermissionRequest> userMediaPermissionRequest = adoptGRef(webkitUserMediaPermissionRequestCreate(permissionRequest, securityOrigin));
     165        webkitWebViewMakePermissionRequest(m_webView, WEBKIT_PERMISSION_REQUEST(userMediaPermissionRequest.get()));
     166        return true;
     167    }
     168
    161169    virtual void printFrame(WebPageProxy*, WebFrameProxy* frame) override
    162170    {
  • trunk/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-docs.sgml

    r175694 r176952  
    2525    <xi:include href="xml/WebKitGeolocationPermissionRequest.xml"/>
    2626    <xi:include href="xml/WebKitNavigationAction.xml"/>
     27    <xi:include href="xml/WebKitUserMediaPermissionRequest.xml"/>
    2728    <xi:include href="xml/WebKitPolicyDecision.xml"/>
    2829    <xi:include href="xml/WebKitNavigationPolicyDecision.xml"/>
  • trunk/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt

    r176256 r176952  
    597597
    598598<SECTION>
     599<FILE>WebKitUserMediaPermissionRequest</FILE>
     600WebKitUserMediaPermissionRequest
     601webkit_user_media_permission_is_for_audio_device
     602webkit_user_media_permission_is_for_video_device
     603
     604<SUBSECTION Standard>
     605WebKitUserMediaPermissionRequestClass
     606WEBKIT_TYPE_USER_MEDIA_PERMISSION_REQUEST
     607WEBKIT_USER_MEDIA_PERMISSION_REQUEST
     608WEBKIT_IS_USER_MEDIA_PERMISSION_REQUEST
     609WEBKIT_USER_MEDIA_PERMISSION_REQUEST_CLASS
     610WEBKIT_IS_USER_MEDIA_PERMISSION_REQUEST_CLASS
     611WEBKIT_USER_MEDIA_PERMISSION_REQUEST_GET_CLASS
     612
     613<SUBSECTION Private>
     614WebKitUserMediaPermissionRequestPrivate
     615webkit_user_media_permission_request_get_type
     616</SECTION>
     617
     618<SECTION>
    599619<FILE>WebKitPolicyDecision</FILE>
    600620WebKitPolicyDecision
  • trunk/Source/WebKit2/UIProcess/API/gtk/webkit2.h

    r171792 r176952  
    6363#include <webkit2/WebKitUserContent.h>
    6464#include <webkit2/WebKitUserContentManager.h>
     65#include <webkit2/WebKitUserMediaPermissionRequest.h>
    6566#include <webkit2/WebKitVersion.h>
    6667#include <webkit2/WebKitWebContext.h>
  • trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.cpp

    r176011 r176952  
    3939}
    4040
    41 PassRefPtr<UserMediaPermissionRequestProxy> UserMediaPermissionRequestManagerProxy::createRequest(uint64_t userMediaID, bool audio, bool video)
     41PassRefPtr<UserMediaPermissionRequestProxy> UserMediaPermissionRequestManagerProxy::createRequest(uint64_t userMediaID, bool requiresAudio, bool requiresVideo)
    4242{
    43     RefPtr<UserMediaPermissionRequestProxy> request = UserMediaPermissionRequestProxy::create(*this, userMediaID, audio, video);
     43    RefPtr<UserMediaPermissionRequestProxy> request = UserMediaPermissionRequestProxy::create(*this, userMediaID, requiresAudio, requiresVideo);
    4444    m_pendingRequests.add(userMediaID, request.get());
    4545    return request.release();
  • trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestProxy.cpp

    r176011 r176952  
    2020#include "UserMediaPermissionRequestProxy.h"
    2121
    22 #include "APINumber.h"
    2322#include "UserMediaPermissionRequestManagerProxy.h"
    2423#include <wtf/text/StringHash.h>
     
    2625namespace WebKit {
    2726
    28 UserMediaPermissionRequestProxy::UserMediaPermissionRequestProxy(UserMediaPermissionRequestManagerProxy& manager, uint64_t userMediaID, bool audio, bool video)
     27UserMediaPermissionRequestProxy::UserMediaPermissionRequestProxy(UserMediaPermissionRequestManagerProxy& manager, uint64_t userMediaID, bool requiresAudio, bool requiresVideo)
    2928    : m_manager(manager)
    3029    , m_userMediaID(userMediaID)
     30    , m_requiresAudio(requiresAudio)
     31    , m_requiresVideo(requiresVideo)
    3132{
    32     HashMap<String, RefPtr<API::Object>> parametersMap;
    33     parametersMap.add(ASCIILiteral("audio"), API::Boolean::create(audio));
    34     parametersMap.add(ASCIILiteral("video"), API::Boolean::create(video));
    35     m_mediaParameters = ImmutableDictionary::create(WTF::move(parametersMap));
    3633}
    3734
  • trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestProxy.h

    r176011 r176952  
    2121
    2222#include "APIObject.h"
    23 #include "ImmutableDictionary.h"
    2423#include <wtf/PassRefPtr.h>
    2524
     
    3029class UserMediaPermissionRequestProxy : public API::ObjectImpl<API::Object::Type::UserMediaPermissionRequest> {
    3130public:
    32     static PassRefPtr<UserMediaPermissionRequestProxy> create(UserMediaPermissionRequestManagerProxy& manager, uint64_t userMediaID, bool audio, bool video)
     31    static PassRefPtr<UserMediaPermissionRequestProxy> create(UserMediaPermissionRequestManagerProxy& manager, uint64_t userMediaID, bool requiresAudio, bool requiresVideo)
    3332    {
    34         return adoptRef(new UserMediaPermissionRequestProxy(manager, userMediaID, audio, video));
     33        return adoptRef(new UserMediaPermissionRequestProxy(manager, userMediaID, requiresAudio, requiresVideo));
    3534    }
    3635
     
    4039    void invalidate();
    4140
    42     PassRefPtr<ImmutableDictionary> mediaParameters() const { return m_mediaParameters; }
     41    bool requiresAudio() const { return m_requiresAudio; }
     42    bool requiresVideo() const { return m_requiresVideo; }
    4343
    4444private:
    45     UserMediaPermissionRequestProxy(UserMediaPermissionRequestManagerProxy&, uint64_t userMediaID, bool audio, bool video);
     45    UserMediaPermissionRequestProxy(UserMediaPermissionRequestManagerProxy&, uint64_t userMediaID, bool requiresAudio, bool requiresVideo);
    4646
    4747    UserMediaPermissionRequestManagerProxy& m_manager;
    4848    uint64_t m_userMediaID;
    49     RefPtr<ImmutableDictionary> m_mediaParameters;
     49    bool m_requiresAudio;
     50    bool m_requiresVideo;
    5051};
    5152
  • trunk/Tools/ChangeLog

    r176951 r176952  
     12014-12-08  Philippe Normand  <pnormand@igalia.com>
     2
     3        [GTK] UserMedia Permission Request API
     4        https://bugs.webkit.org/show_bug.cgi?id=136449
     5
     6        Reviewed by Carlos Garcia Campos.
     7
     8        The GTK version of the MiniBrowser has gained UserMedia permission
     9        request support.
     10
     11        * MiniBrowser/gtk/BrowserWindow.c: Show a popup when the page
     12        requires user permission to access audio/video devices.
     13        (permissionRequestDialogCallback):
     14        (webViewDecidePermissionRequest):
     15        (geolocationRequestDialogCallback): Deleted.
     16
    1172014-12-08  Anders Carlsson  <andersca@apple.com>
    218
  • trunk/Tools/MiniBrowser/gtk/BrowserWindow.c

    r176539 r176952  
    256256}
    257257
    258 static void geolocationRequestDialogCallback(GtkDialog *dialog, gint response, WebKitPermissionRequest *request)
     258static void permissionRequestDialogCallback(GtkDialog *dialog, gint response, WebKitPermissionRequest *request)
    259259{
    260260    switch (response) {
     
    409409static gboolean webViewDecidePermissionRequest(WebKitWebView *webView, WebKitPermissionRequest *request, BrowserWindow *window)
    410410{
    411     if (!WEBKIT_IS_GEOLOCATION_PERMISSION_REQUEST(request))
     411    const gchar *dialog_title = NULL;
     412    const gchar *dialog_message = NULL;
     413    const gchar *dialog_message_format = NULL;
     414
     415    if (WEBKIT_IS_GEOLOCATION_PERMISSION_REQUEST(request)) {
     416        dialog_title = "Geolocation request";
     417        dialog_message_format = "%s";
     418        dialog_message = "Allow geolocation request?";
     419    } else if (WEBKIT_IS_USER_MEDIA_PERMISSION_REQUEST(request)) {
     420        dialog_message_format = "Allow access to %s device?";
     421        gboolean is_for_audio_device = webkit_user_media_permission_is_for_audio_device(WEBKIT_USER_MEDIA_PERMISSION_REQUEST(request));
     422        gboolean is_for_video_device = webkit_user_media_permission_is_for_video_device(WEBKIT_USER_MEDIA_PERMISSION_REQUEST(request));
     423        dialog_title = "UserMedia request";
     424        if (is_for_audio_device) {
     425            if (is_for_video_device)
     426                dialog_message = "audio/video";
     427            else
     428                dialog_message = "audio";
     429        } else if (is_for_video_device)
     430            dialog_message = "video";
     431    } else
    412432        return FALSE;
    413433
    414434    GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(window),
    415                                                GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
    416                                                GTK_MESSAGE_QUESTION,
    417                                                GTK_BUTTONS_YES_NO,
    418                                                "Geolocation request");
    419 
    420     gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog), "Allow geolocation request?");
    421     g_signal_connect(dialog, "response", G_CALLBACK(geolocationRequestDialogCallback), g_object_ref(request));
     435        GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
     436        GTK_MESSAGE_QUESTION,
     437        GTK_BUTTONS_YES_NO,
     438        "%s", dialog_title);
     439
     440    gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog), dialog_message_format, dialog_message);
     441    g_signal_connect(dialog, "response", G_CALLBACK(permissionRequestDialogCallback), g_object_ref(request));
    422442    gtk_widget_show(dialog);
    423 
    424443    return TRUE;
    425444}
  • trunk/Tools/Scripts/run-gtk-tests

    r176020 r176952  
    8282        SkippedTest("WebKit2/TestWebKit2", "WebKit2.GeolocationTransitionToHighAccuracy", "Test causes crash on the next test", 125068),
    8383        SkippedTest("WebKit2/TestWebKit2", "WebKit2.GeolocationTransitionToLowAccuracy", "Test causes crash on the next test", 125068),
    84         SkippedTest("WebKit2/TestWebKit2", "WebKit2.UserMediaBasic", "Test times out because constraints validation support is missing", 136449),
    8584    ]
    8685
  • trunk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestUIClient.cpp

    r175160 r176952  
    198198        test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(request));
    199199
     200        if (test->m_verifyMediaTypes && WEBKIT_IS_USER_MEDIA_PERMISSION_REQUEST(request)) {
     201            WebKitUserMediaPermissionRequest* userMediaRequest = WEBKIT_USER_MEDIA_PERMISSION_REQUEST(request);
     202            g_assert(webkit_user_media_permission_is_for_audio_device(userMediaRequest) == test->m_expectedAudioMedia);
     203            g_assert(webkit_user_media_permission_is_for_video_device(userMediaRequest) == test->m_expectedVideoMedia);
     204        }
     205
    200206        if (test->m_allowPermissionRequests)
    201207            webkit_permission_request_allow(request);
     
    210216        , m_scriptDialogConfirmed(true)
    211217        , m_allowPermissionRequests(false)
     218        , m_verifyMediaTypes(false)
     219        , m_expectedAudioMedia(false)
     220        , m_expectedVideoMedia(false)
    212221        , m_mouseTargetModifiers(0)
    213222    {
     
    289298    bool m_scriptDialogConfirmed;
    290299    bool m_allowPermissionRequests;
     300    gboolean m_verifyMediaTypes;
     301    gboolean m_expectedAudioMedia;
     302    gboolean m_expectedVideoMedia;
    291303    WindowProperties m_windowProperties;
    292304    HashSet<WTF::String> m_windowPropertiesChanged;
     
    621633}
    622634
    623 static void testWebViewPermissionRequests(UIClientTest* test, gconstpointer)
     635static void testWebViewGeolocationPermissionRequests(UIClientTest* test, gconstpointer)
    624636{
    625637    // Some versions of geoclue give a runtime warning because it tries
     
    662674}
    663675
     676static void testWebViewUserMediaPermissionRequests(UIClientTest* test, gconstpointer)
     677{
     678    WebKitSettings* settings = webkit_web_view_get_settings(test->m_webView);
     679    gboolean enabled = webkit_settings_get_enable_media_stream(settings);
     680    webkit_settings_set_enable_media_stream(settings, TRUE);
     681
     682    test->showInWindowAndWaitUntilMapped();
     683    static const char* userMediaRequestHTML =
     684        "<html>"
     685        "  <script>"
     686        "  function runTest()"
     687        "  {"
     688        "    navigator.webkitGetUserMedia({audio: true, video: true},"
     689        "                                 function(s) { document.title = \"OK\" },"
     690        "                                 function(e) { document.title = e.name });"
     691        "  }"
     692        "  </script>"
     693        "  <body onload='runTest();'></body>"
     694        "</html>";
     695
     696    test->m_verifyMediaTypes = TRUE;
     697    test->m_expectedAudioMedia = TRUE;
     698    test->m_expectedVideoMedia = TRUE;
     699
     700    // Test denying a permission request.
     701    test->m_allowPermissionRequests = false;
     702    test->loadHtml(userMediaRequestHTML, nullptr);
     703    test->waitUntilTitleChangedTo("PermissionDeniedError");
     704
     705    // Test allowing a permission request.
     706    test->m_allowPermissionRequests = true;
     707    test->loadHtml(userMediaRequestHTML, nullptr);
     708    test->waitUntilTitleChangedTo("OK");
     709
     710    webkit_settings_set_enable_media_stream(settings, enabled);
     711}
     712
     713static void testWebViewAudioOnlyUserMediaPermissionRequests(UIClientTest* test, gconstpointer)
     714{
     715    WebKitSettings* settings = webkit_web_view_get_settings(test->m_webView);
     716    gboolean enabled = webkit_settings_get_enable_media_stream(settings);
     717    webkit_settings_set_enable_media_stream(settings, TRUE);
     718
     719    test->showInWindowAndWaitUntilMapped();
     720    static const char* userMediaRequestHTML =
     721        "<html>"
     722        "  <script>"
     723        "  function runTest()"
     724        "  {"
     725        "    navigator.webkitGetUserMedia({audio: true, video: false},"
     726        "                                 function(s) { document.title = \"OK\" },"
     727        "                                 function(e) { document.title = e.name });"
     728        "  }"
     729        "  </script>"
     730        "  <body onload='runTest();'></body>"
     731        "</html>";
     732
     733    test->m_verifyMediaTypes = TRUE;
     734    test->m_expectedAudioMedia = TRUE;
     735    test->m_expectedVideoMedia = FALSE;
     736
     737    // Test denying a permission request.
     738    test->m_allowPermissionRequests = false;
     739    test->loadHtml(userMediaRequestHTML, nullptr);
     740    test->waitUntilTitleChangedTo("PermissionDeniedError");
     741
     742    webkit_settings_set_enable_media_stream(settings, enabled);
     743}
     744
    664745class FileChooserTest: public UIClientTest {
    665746public:
     
    786867    UIClientTest::add("WebKitWebView", "window-properties", testWebViewWindowProperties);
    787868    UIClientTest::add("WebKitWebView", "mouse-target", testWebViewMouseTarget);
    788     UIClientTest::add("WebKitWebView", "permission-requests", testWebViewPermissionRequests);
     869    UIClientTest::add("WebKitWebView", "geolocation-permission-requests", testWebViewGeolocationPermissionRequests);
     870    UIClientTest::add("WebKitWebView", "usermedia-permission-requests", testWebViewUserMediaPermissionRequests);
     871    UIClientTest::add("WebKitWebView", "audio-usermedia-permission-request", testWebViewAudioOnlyUserMediaPermissionRequests);
    789872    FileChooserTest::add("WebKitWebView", "file-chooser-request", testWebViewFileChooserRequest);
    790873}
Note: See TracChangeset for help on using the changeset viewer.