Changeset 190262 in webkit


Ignore:
Timestamp:
Sep 25, 2015 7:23:00 PM (9 years ago)
Author:
eric.carlson@apple.com
Message:

Clean up user media request internal API
https://bugs.webkit.org/show_bug.cgi?id=149527

Reviewed by Tim Horton.

Source/WebCore:

No new tests, no functional change.

  • Modules/mediastream/UserMediaRequest.cpp:

(WebCore::UserMediaRequest::constraintsValidated): Use track persistent ID to create vectors

as that is what the platform code needs to map to a capture device.

(WebCore::UserMediaRequest::userMediaAccessGranted): m_chosenXXDeviceUID -> m_XXDeviceUIDAllowed.

Use the device IDs to create the MediaStream. Switch audio/video parameter order.

(WebCore::UserMediaRequest::didCreateStream): Don't assume constraints are valid.

  • Modules/mediastream/UserMediaRequest.h:

(WebCore::UserMediaRequest::videoDeviceUIDs):
(WebCore::UserMediaRequest::audioDeviceUIDs):
(WebCore::UserMediaRequest::allowedVideoDeviceUID):
(WebCore::UserMediaRequest::allowedAudioDeviceUID):
(WebCore::UserMediaRequest::requiresAudio): Deleted.
(WebCore::UserMediaRequest::requiresVideo): Deleted.
(WebCore::UserMediaRequest::firstVideoDeviceUID): Deleted.
(WebCore::UserMediaRequest::firstAudioDeviceUID): Deleted.

  • platform/mediastream/mac/AVMediaCaptureSource.mm:

(WebCore::AVMediaCaptureSource::AVMediaCaptureSource): Call setPersistentId.

Source/WebKit/mac:

  • WebCoreSupport/WebUserMediaClient.mm:

(WebUserMediaClient::cancelRequest): Put UserMediaRequestsMap in a local instead or calling

userMediaRequestsMap() three times.

(-[WebUserMediaPolicyListener allow]): Get rid of unneeded local variables.
(-[WebUserMediaPolicyListener allowDeviceWithVideoUID]): Deleted, unused.

Source/WebKit2:

  • UIProcess/API/C/WKUserMediaPermissionRequest.cpp:

(WKUserMediaPermissionRequestVideoDeviceUIDs): New, renamed from WKUserMediaPermissionRequestDeviceNamesVideo.
(WKUserMediaPermissionRequestAudioDeviceUIDs): New, renamed from WKUserMediaPermissionRequestDeviceNamesAudio.
(WKUserMediaPermissionRequestAllowBest): Deleted.
(WKUserMediaPermissionRequestDeviceNamesVideo): Deleted.
(WKUserMediaPermissionRequestDeviceNamesAudio): Deleted.
(WKUserMediaPermissionRequestFirstVideoDeviceUID): Deleted.
(WKUserMediaPermissionRequestFirstAudioDeviceUID): Deleted.

  • UIProcess/API/C/WKUserMediaPermissionRequest.h:
  • UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp:

(webkitUserMediaPermissionRequestAllow): Update for UserMediaRequest API change.

  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp:

(WebKit::UserMediaPermissionRequestManagerProxy::createRequest): Get rid of the bool parameters.

Switch audio/video parameter order to be consistent with everywhere else.

(WebKit::UserMediaPermissionRequestManagerProxy::didReceiveUserMediaPermissionDecision): Ditto.

  • UIProcess/UserMediaPermissionRequestManagerProxy.h:
  • UIProcess/UserMediaPermissionRequestProxy.cpp:

(WebKit::UserMediaPermissionRequestProxy::UserMediaPermissionRequestProxy): Get rid of the bool parameters.

Switch audio/video parameter order to be consistent with everywhere else.

(WebKit::UserMediaPermissionRequestProxy::allow): Switch audio/video parameter order.
(WebKit::UserMediaPermissionRequestProxy::getDeviceNameForUID): Deleted.

  • UIProcess/UserMediaPermissionRequestProxy.h:

(WebKit::UserMediaPermissionRequestProxy::create):
(WebKit::UserMediaPermissionRequestProxy::videoDeviceUIDs):
(WebKit::UserMediaPermissionRequestProxy::audioDeviceUIDs):
(WebKit::UserMediaPermissionRequestProxy::firstAudioDeviceUID):
(WebKit::UserMediaPermissionRequestProxy::requiresAudio): Deleted.
(WebKit::UserMediaPermissionRequestProxy::requiresVideo): Deleted.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::requestUserMediaPermissionForFrame): Get rid of the bool parameters.

Switch audio/video parameter order to be consistent with everywhere else.

  • UIProcess/WebPageProxy.h: Ditto.
  • UIProcess/WebPageProxy.messages.in: Ditto.
  • WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:

(WebKit::UserMediaPermissionRequestManager::startRequest): Get rid of bool params, the device

vectors have the same information.

(WebKit::UserMediaPermissionRequestManager::didReceiveUserMediaPermissionDecision): Switch audio/video

parameter order to be consistent with everywhere else. deviceUIDVideo -> videoDeviceUID,

deviceUIDAudio -> audioDeviceUID.

  • WebProcess/MediaStream/UserMediaPermissionRequestManager.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::didReceiveUserMediaPermissionDecision): Switch audio/video parameter order.

  • WebProcess/WebPage/WebPage.h:

Tools:

  • TestWebKitAPI/Tests/WebKit2/UserMedia.cpp:

(TestWebKitAPI::decidePolicyForUserMediaPermissionRequestCallBack): Update for API changes.

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::decidePolicyForUserMediaPermissionRequestIfPossible): Ditto.

Location:
trunk
Files:
28 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r190256 r190262  
     12015-09-25  Eric Carlson  <eric.carlson@apple.com>
     2
     3        Clean up user media request internal API
     4        https://bugs.webkit.org/show_bug.cgi?id=149527
     5
     6        Reviewed by Tim Horton.
     7
     8        No new tests, no functional change.
     9
     10        * Modules/mediastream/UserMediaRequest.cpp:
     11        (WebCore::UserMediaRequest::constraintsValidated): Use track persistent ID to create vectors
     12          as that is what the platform code needs to map to a capture device.
     13        (WebCore::UserMediaRequest::userMediaAccessGranted): m_chosenXXDeviceUID -> m_XXDeviceUIDAllowed.
     14          Use the device IDs to create the MediaStream. Switch audio/video parameter order.
     15        (WebCore::UserMediaRequest::didCreateStream): Don't assume constraints are valid.
     16        * Modules/mediastream/UserMediaRequest.h:
     17        (WebCore::UserMediaRequest::videoDeviceUIDs):
     18        (WebCore::UserMediaRequest::audioDeviceUIDs):
     19        (WebCore::UserMediaRequest::allowedVideoDeviceUID):
     20        (WebCore::UserMediaRequest::allowedAudioDeviceUID):
     21        (WebCore::UserMediaRequest::requiresAudio): Deleted.
     22        (WebCore::UserMediaRequest::requiresVideo): Deleted.
     23        (WebCore::UserMediaRequest::firstVideoDeviceUID): Deleted.
     24        (WebCore::UserMediaRequest::firstAudioDeviceUID): Deleted.
     25
     26        * platform/mediastream/mac/AVMediaCaptureSource.mm:
     27        (WebCore::AVMediaCaptureSource::AVMediaCaptureSource): Call setPersistentId.
     28
    1292015-09-25  Antti Koivisto  <antti@apple.com>
    230
  • trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.cpp

    r189982 r190262  
    126126{
    127127    for (auto& audioTrack : audioTracks)
    128         m_audioDeviceUIDs.append(audioTrack->id());
     128        m_audioDeviceUIDs.append(audioTrack->persistentID());
    129129    for (auto& videoTrack : videoTracks)
    130         m_videoDeviceUIDs.append(videoTrack->id());
     130        m_videoDeviceUIDs.append(videoTrack->persistentID());
     131
    131132    RefPtr<UserMediaRequest> protectedThis(this);
    132133    callOnMainThread([protectedThis] {
     
    137138}
    138139
    139 void UserMediaRequest::userMediaAccessGranted(const String& videoDeviceUID, const String& audioDeviceUID)
    140 {
    141     m_chosenVideoDeviceUID = videoDeviceUID;
    142     m_chosenAudioDeviceUID = audioDeviceUID;
     140void UserMediaRequest::userMediaAccessGranted(const String& audioDeviceUID, const String& videoDeviceUID)
     141{
     142    m_allowedVideoDeviceUID = videoDeviceUID;
     143    m_audioDeviceUIDAllowed = audioDeviceUID;
     144
    143145    RefPtr<UserMediaRequest> protectedThis(this);
    144     callOnMainThread([protectedThis] {
     146    callOnMainThread([protectedThis, audioDeviceUID, videoDeviceUID] {
    145147        // 3 - the user granted access, ask platform to create the media stream descriptors.
    146         RealtimeMediaSourceCenter::singleton().createMediaStream(protectedThis.get(), protectedThis->m_audioConstraints, protectedThis->m_videoConstraints);
     148        RealtimeMediaSourceCenter::singleton().createMediaStream(protectedThis.get(), audioDeviceUID, videoDeviceUID);
    147149    });
    148150}
     
    165167    // 4 - Create the MediaStream and pass it to the success callback.
    166168    RefPtr<MediaStream> stream = MediaStream::create(*m_scriptExecutionContext, privateStream);
    167     for (auto& track : stream->getAudioTracks())
    168         track->applyConstraints(*m_audioConstraints);
    169     for (auto& track : stream->getVideoTracks())
    170         track->applyConstraints(*m_videoConstraints);
     169    if (m_audioConstraints) {
     170        for (auto& track : stream->getAudioTracks())
     171            track->applyConstraints(*m_audioConstraints);
     172    }
     173    if (m_videoConstraints) {
     174        for (auto& track : stream->getVideoTracks())
     175            track->applyConstraints(*m_videoConstraints);
     176    }
    171177
    172178    m_promise.resolve(stream);
  • trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.h

    r189982 r190262  
    6666
    6767    void start();
    68     WEBCORE_EXPORT void userMediaAccessGranted(const String& videoDeviceUID, const String& audioDeviceUID);
     68    WEBCORE_EXPORT void userMediaAccessGranted(const String& audioDeviceUID, const String& videoDeviceUID);
    6969    WEBCORE_EXPORT void userMediaAccessDenied();
    7070
    71     bool requiresAudio() const { return m_audioConstraints; }
    72     bool requiresVideo() const { return m_videoConstraints; }
    73    
     71    bool requiresAudio() const { return m_audioDeviceUIDs.size(); }
     72    bool requiresVideo() const { return m_videoDeviceUIDs.size(); }
     73
     74    const Vector<String>& audioDeviceUIDs() const { return m_audioDeviceUIDs; }
    7475    const Vector<String>& videoDeviceUIDs() const { return m_videoDeviceUIDs; }
    75     const Vector<String>& audioDeviceUIDs() const { return m_audioDeviceUIDs; }
    76    
    77     const String& firstVideoDeviceUID() const { return !videoDeviceUIDs().isEmpty() ? videoDeviceUIDs().at(0) : emptyString(); }
    78     const String& firstAudioDeviceUID() const { return !audioDeviceUIDs().isEmpty() ? audioDeviceUIDs().at(0) : emptyString(); }
     76
     77    const String& allowedAudioDeviceUID() const { return m_audioDeviceUIDAllowed; }
     78    const String& allowedVideoDeviceUID() const { return m_allowedVideoDeviceUID; }
    7979
    8080private:
     
    9696    Vector<String> m_videoDeviceUIDs;
    9797    Vector<String> m_audioDeviceUIDs;
    98    
    99     String m_chosenVideoDeviceUID;
    100     String m_chosenAudioDeviceUID;
    101    
     98
     99    String m_allowedVideoDeviceUID;
     100    String m_audioDeviceUIDAllowed;
     101
    102102    UserMediaController* m_controller;
    103 
    104103    MediaDevices::Promise m_promise;
    105104};
  • trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp

    r190072 r190262  
    5656    if (m_id.isEmpty())
    5757        m_id = createCanonicalUUIDString();
    58     m_persistentId = m_id;
     58    m_persistentID = m_id;
    5959}
    6060
  • trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.h

    r190115 r190262  
    7171    const String& id() const { return m_id; }
    7272
    73     const String& persistentId() const { return m_persistentId; }
    74     virtual void setPersistentId(const String& persistentId) { m_persistentId = persistentId; }
     73    const String& persistentID() const { return m_persistentID; }
     74    virtual void setPersistentID(const String& persistentID) { m_persistentID = persistentID; }
    7575
    7676    enum Type { None, Audio, Video };
     
    116116private:
    117117    String m_id;
    118     String m_persistentId;
     118    String m_persistentID;
    119119    Type m_type;
    120120    String m_name;
  • trunk/Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.mm

    r190115 r190262  
    131131{
    132132    setName(device.localizedName);
     133    setPersistentID(device.uniqueID);
    133134    m_currentStates.setSourceType(type == RealtimeMediaSource::Video ? RealtimeMediaSourceStates::Camera : RealtimeMediaSourceStates::Microphone);
    134135}
  • trunk/Source/WebKit/mac/ChangeLog

    r190156 r190262  
     12015-09-25  Eric Carlson  <eric.carlson@apple.com>
     2
     3        Clean up user media request internal API
     4        https://bugs.webkit.org/show_bug.cgi?id=149527
     5
     6        Reviewed by Tim Horton.
     7
     8        * WebCoreSupport/WebUserMediaClient.mm:
     9        (WebUserMediaClient::cancelRequest): Put UserMediaRequestsMap in a local instead or calling
     10          userMediaRequestsMap() three times.
     11        (-[WebUserMediaPolicyListener allow]): Get rid of unneeded local variables.
     12        (-[WebUserMediaPolicyListener allowDeviceWithVideoUID]): Deleted, unused.
     13
    1142015-09-22  Andy Estes  <aestes@apple.com>
    215
  • trunk/Source/WebKit/mac/WebCoreSupport/WebUserMediaClient.mm

    r188385 r190262  
    4848- (id)initWithUserMediaRequest:(PassRefPtr<UserMediaRequest>)request;
    4949- (void)cancelRequest;
    50 - (void)allowDeviceWithVideoUID:(const String&)videoUID andAudioUID:(const String&)audioUID;
    5150- (void)deny;
    5251@end
     
    115114void WebUserMediaClient::cancelRequest(UserMediaRequest& request)
    116115{
    117     UserMediaRequestsMap::iterator it = userMediaRequestsMap().find(&request);
    118     if (it == userMediaRequestsMap().end())
     116    UserMediaRequestsMap& requestsMap = userMediaRequestsMap();
     117    UserMediaRequestsMap::iterator it = requestsMap.find(&request);
     118    if (it == requestsMap.end())
    119119        return;
    120120
    121121    [it->value cancelRequest];
    122     userMediaRequestsMap().remove(it);
     122    requestsMap.remove(it);
    123123}
    124124
     
    154154        return;
    155155   
    156     const String& videoUID = _request->firstVideoDeviceUID();
    157     const String& audioUID = _request->firstAudioDeviceUID();
    158    
    159     _request->userMediaAccessGranted(videoUID, audioUID);
    160     RemoveRequestFromMap(_request.get());
    161 #endif
    162 }
     156    _request->userMediaAccessGranted(_request->allowedAudioDeviceUID(), _request->allowedVideoDeviceUID());
    163157
    164 - (void)allowDeviceWithVideoUID:(const String&)videoUID andAudioUID:(const String&)audioUID
    165 {
    166 #if ENABLE(MEDIA_STREAM)
    167     if (!_request)
    168         return;
    169    
    170     _request->userMediaAccessGranted(videoUID, audioUID);
    171    
    172158    RemoveRequestFromMap(_request.get());
    173159#endif
  • trunk/Source/WebKit2/ChangeLog

    r190260 r190262  
     12015-09-25  Eric Carlson  <eric.carlson@apple.com>
     2
     3        Clean up user media request internal API
     4        https://bugs.webkit.org/show_bug.cgi?id=149527
     5
     6        Reviewed by Tim Horton.
     7
     8        * UIProcess/API/C/WKUserMediaPermissionRequest.cpp:
     9        (WKUserMediaPermissionRequestVideoDeviceUIDs): New, renamed from WKUserMediaPermissionRequestDeviceNamesVideo.
     10        (WKUserMediaPermissionRequestAudioDeviceUIDs): New, renamed from WKUserMediaPermissionRequestDeviceNamesAudio.
     11        (WKUserMediaPermissionRequestAllowBest): Deleted.
     12        (WKUserMediaPermissionRequestDeviceNamesVideo): Deleted.
     13        (WKUserMediaPermissionRequestDeviceNamesAudio): Deleted.
     14        (WKUserMediaPermissionRequestFirstVideoDeviceUID): Deleted.
     15        (WKUserMediaPermissionRequestFirstAudioDeviceUID): Deleted.
     16        * UIProcess/API/C/WKUserMediaPermissionRequest.h:
     17
     18        * UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp:
     19        (webkitUserMediaPermissionRequestAllow): Update for UserMediaRequest API change.
     20
     21        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
     22        (WebKit::UserMediaPermissionRequestManagerProxy::createRequest): Get rid of the bool parameters.
     23          Switch audio/video parameter order to be consistent with everywhere else.
     24        (WebKit::UserMediaPermissionRequestManagerProxy::didReceiveUserMediaPermissionDecision): Ditto.
     25        * UIProcess/UserMediaPermissionRequestManagerProxy.h:
     26
     27        * UIProcess/UserMediaPermissionRequestProxy.cpp:
     28        (WebKit::UserMediaPermissionRequestProxy::UserMediaPermissionRequestProxy): Get rid of the bool parameters.
     29          Switch audio/video parameter order to be consistent with everywhere else.
     30        (WebKit::UserMediaPermissionRequestProxy::allow): Switch audio/video parameter order.
     31        (WebKit::UserMediaPermissionRequestProxy::getDeviceNameForUID): Deleted.
     32        * UIProcess/UserMediaPermissionRequestProxy.h:
     33        (WebKit::UserMediaPermissionRequestProxy::create):
     34        (WebKit::UserMediaPermissionRequestProxy::videoDeviceUIDs):
     35        (WebKit::UserMediaPermissionRequestProxy::audioDeviceUIDs):
     36        (WebKit::UserMediaPermissionRequestProxy::firstAudioDeviceUID):
     37        (WebKit::UserMediaPermissionRequestProxy::requiresAudio): Deleted.
     38        (WebKit::UserMediaPermissionRequestProxy::requiresVideo): Deleted.
     39
     40        * UIProcess/WebPageProxy.cpp:
     41        (WebKit::WebPageProxy::requestUserMediaPermissionForFrame): Get rid of the bool parameters.
     42          Switch audio/video parameter order to be consistent with everywhere else.
     43        * UIProcess/WebPageProxy.h: Ditto.
     44        * UIProcess/WebPageProxy.messages.in: Ditto.
     45
     46        * WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
     47        (WebKit::UserMediaPermissionRequestManager::startRequest): Get rid of bool params, the device
     48          vectors have the same information.
     49        (WebKit::UserMediaPermissionRequestManager::didReceiveUserMediaPermissionDecision): Switch audio/video
     50          parameter order to be consistent with everywhere else. deviceUIDVideo -> videoDeviceUID,
     51        deviceUIDAudio -> audioDeviceUID.
     52        * WebProcess/MediaStream/UserMediaPermissionRequestManager.h:
     53
     54        * WebProcess/WebPage/WebPage.cpp:
     55        (WebKit::WebPage::didReceiveUserMediaPermissionDecision): Switch audio/video parameter order.
     56        * WebProcess/WebPage/WebPage.h:
     57
    1582015-09-25  Simon Fraser  <simon.fraser@apple.com>
    259
  • trunk/Source/WebKit2/UIProcess/API/C/WKUserMediaPermissionRequest.cpp

    r189015 r190262  
    3434
    3535
    36 void WKUserMediaPermissionRequestAllowBest(WKUserMediaPermissionRequestRef userMediaPermissionRequestRef)
     36void WKUserMediaPermissionRequestAllow(WKUserMediaPermissionRequestRef userMediaPermissionRequestRef, WKStringRef audioDeviceUID, WKStringRef videoDeviceUID)
    3737{
    38     const String& videoDevice = toImpl(userMediaPermissionRequestRef)->firstVideoDeviceUID();
    39     const String& audioDevice = toImpl(userMediaPermissionRequestRef)->firstAudioDeviceUID();
    40     toImpl(userMediaPermissionRequestRef)->allow(videoDevice, audioDevice);
    41 }
    42 
    43 void WKUserMediaPermissionRequestAllow(WKUserMediaPermissionRequestRef userMediaPermissionRequestRef, WKStringRef videoDeviceUID, WKStringRef audioDeviceUID)
    44 {
    45     toImpl(userMediaPermissionRequestRef)->allow(toWTFString(videoDeviceUID), toWTFString(audioDeviceUID));
     38    toImpl(userMediaPermissionRequestRef)->allow(toWTFString(audioDeviceUID), toWTFString(videoDeviceUID));
    4639}
    4740
     
    5144}
    5245
    53 WKArrayRef WKUserMediaPermissionRequestDeviceNamesVideo(WKUserMediaPermissionRequestRef userMediaPermissionRef)
     46WKArrayRef WKUserMediaPermissionRequestVideoDeviceUIDs(WKUserMediaPermissionRequestRef userMediaPermissionRef)
    5447{
    5548    WKMutableArrayRef array = WKMutableArrayCreate();
    5649#if ENABLE(MEDIA_STREAM)
    57     for (auto& name : toImpl(userMediaPermissionRef)->videoDeviceUIDs()) {
    58         String deviceName = toImpl(userMediaPermissionRef)->getDeviceNameForUID(name, WebCore::RealtimeMediaSource::Type::Video);
    59         WKArrayAppendItem(array, toAPI(API::String::create(deviceName).ptr()));
    60     }
     50    for (auto& deviceUID : toImpl(userMediaPermissionRef)->videoDeviceUIDs())
     51        WKArrayAppendItem(array, toAPI(API::String::create(deviceUID).ptr()));
    6152#endif
    6253    return array;
    6354}
    6455
    65 WKArrayRef WKUserMediaPermissionRequestDeviceNamesAudio(WKUserMediaPermissionRequestRef userMediaPermissionRef)
     56WKArrayRef WKUserMediaPermissionRequestAudioDeviceUIDs(WKUserMediaPermissionRequestRef userMediaPermissionRef)
    6657{
    6758    WKMutableArrayRef array = WKMutableArrayCreate();
    6859#if ENABLE(MEDIA_STREAM)
    69     for (auto& name : toImpl(userMediaPermissionRef)->audioDeviceUIDs()) {
    70         String deviceName = toImpl(userMediaPermissionRef)->getDeviceNameForUID(name, WebCore::RealtimeMediaSource::Type::Audio);
    71         WKArrayAppendItem(array, toAPI(API::String::create(deviceName).ptr()));
    72     }
     60    for (auto& deviceUID : toImpl(userMediaPermissionRef)->audioDeviceUIDs())
     61        WKArrayAppendItem(array, toAPI(API::String::create(deviceUID).ptr()));
    7362#endif
    7463    return array;
    7564}
    76 
    77 WKStringRef WKUserMediaPermissionRequestFirstVideoDeviceUID(WKUserMediaPermissionRequestRef userMediaPermissionRef)
    78 {
    79     return !toImpl(userMediaPermissionRef)->videoDeviceUIDs().isEmpty() ? reinterpret_cast<WKStringRef>(WKArrayGetItemAtIndex(WKUserMediaPermissionRequestDeviceNamesVideo(userMediaPermissionRef), 0)) : reinterpret_cast<WKStringRef>(WKStringCreateWithUTF8CString(""));
    80 }
    81 
    82 WKStringRef WKUserMediaPermissionRequestFirstAudioDeviceUID(WKUserMediaPermissionRequestRef userMediaPermissionRef)
    83 {
    84     return !toImpl(userMediaPermissionRef)->audioDeviceUIDs().isEmpty() ? reinterpret_cast<WKStringRef>(WKArrayGetItemAtIndex(WKUserMediaPermissionRequestDeviceNamesAudio(userMediaPermissionRef), 0)) : reinterpret_cast<WKStringRef>(WKStringCreateWithUTF8CString(""));
    85 }
  • trunk/Source/WebKit2/UIProcess/API/C/WKUserMediaPermissionRequest.h

    r188385 r190262  
    2828WK_EXPORT WKTypeID WKUserMediaPermissionRequestGetTypeID();
    2929
    30 WK_EXPORT void WKUserMediaPermissionRequestAllowBest(WKUserMediaPermissionRequestRef);
    31 WK_EXPORT void WKUserMediaPermissionRequestAllow(WKUserMediaPermissionRequestRef, WKStringRef videoDeviceUID, WKStringRef audioDeviceUID);
     30WK_EXPORT void WKUserMediaPermissionRequestAllow(WKUserMediaPermissionRequestRef, WKStringRef audioDeviceUID, WKStringRef videoDeviceUID);
    3231WK_EXPORT void WKUserMediaPermissionRequestDeny(WKUserMediaPermissionRequestRef);
    3332
    34 WK_EXPORT WKArrayRef WKUserMediaPermissionRequestDeviceNamesVideo(WKUserMediaPermissionRequestRef);
    35 WK_EXPORT WKArrayRef WKUserMediaPermissionRequestDeviceNamesAudio(WKUserMediaPermissionRequestRef);
    36    
    37 WK_EXPORT WKStringRef WKUserMediaPermissionRequestFirstVideoDeviceUID(WKUserMediaPermissionRequestRef);
    38 WK_EXPORT WKStringRef WKUserMediaPermissionRequestFirstAudioDeviceUID(WKUserMediaPermissionRequestRef);
     33WK_EXPORT WKArrayRef WKUserMediaPermissionRequestVideoDeviceUIDs(WKUserMediaPermissionRequestRef);
     34WK_EXPORT WKArrayRef WKUserMediaPermissionRequestAudioDeviceUIDs(WKUserMediaPermissionRequestRef);
    3935
    4036#ifdef __cplusplus
  • trunk/Source/WebKit2/UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp

    r188471 r190262  
    7272    priv->madeDecision = true;
    7373
    74     const String& videoDevice = priv->request->firstVideoDeviceUID();
    75     const String& audioDevice = priv->request->firstAudioDeviceUID();
     74    auto videoDeviceUIDs = priv->request->videoDeviceUIDs();
     75    auto audioDeviceUIDs = priv->request->audioDeviceUIDs();
     76
     77    auto videoDevice = !videoDeviceUIDs.isEmpty() ? videoDeviceUIDs[0] : emptyString();
     78    auto audioDevice = !audioDeviceUIDs.isEmpty() ? audioDeviceUIDs[0] : emptyString();
    7679   
    77     priv->request->allow(videoDevice, audioDevice);
     80    priv->request->allow(audioDevice, videoDevice);
    7881}
    7982
  • trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.cpp

    r188385 r190262  
    3939}
    4040
    41 PassRefPtr<UserMediaPermissionRequestProxy> UserMediaPermissionRequestManagerProxy::createRequest(uint64_t userMediaID, bool requiresAudio, bool requiresVideo, const Vector<String>& deviceUIDsVideo, const Vector<String>& deviceUIDsAudio)
     41PassRefPtr<UserMediaPermissionRequestProxy> UserMediaPermissionRequestManagerProxy::createRequest(uint64_t userMediaID, const Vector<String>& audioDeviceUIDs, const Vector<String>& videoDeviceUIDs)
    4242{
    43     RefPtr<UserMediaPermissionRequestProxy> request = UserMediaPermissionRequestProxy::create(*this, userMediaID, requiresAudio, requiresVideo, deviceUIDsVideo, deviceUIDsAudio);
     43    RefPtr<UserMediaPermissionRequestProxy> request = UserMediaPermissionRequestProxy::create(*this, userMediaID, audioDeviceUIDs, videoDeviceUIDs);
    4444    m_pendingRequests.add(userMediaID, request.get());
    4545    return request.release();
    4646}
    4747
    48 void UserMediaPermissionRequestManagerProxy::didReceiveUserMediaPermissionDecision(uint64_t userMediaID, bool allowed, const String& videoDeviceUID, const String& audioDeviceUID)
     48void UserMediaPermissionRequestManagerProxy::didReceiveUserMediaPermissionDecision(uint64_t userMediaID, bool allowed, const String& audioDeviceUID, const String& videoDeviceUID)
    4949{
    5050    if (!m_page.isValid())
     
    5555
    5656#if ENABLE(MEDIA_STREAM)
    57     m_page.process().send(Messages::WebPage::DidReceiveUserMediaPermissionDecision(userMediaID, allowed, videoDeviceUID, audioDeviceUID), m_page.pageID());
     57    m_page.process().send(Messages::WebPage::DidReceiveUserMediaPermissionDecision(userMediaID, allowed, audioDeviceUID, videoDeviceUID), m_page.pageID());
    5858#else
    5959    UNUSED_PARAM(allowed);
  • trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.h

    r188385 r190262  
    3434
    3535    // Create a request to be presented to the user.
    36     PassRefPtr<UserMediaPermissionRequestProxy> createRequest(uint64_t userMediaID, bool audio, bool video, const Vector<String>& deviceUIDsVideo, const Vector<String>& deviceUIDsAudio);
     36    PassRefPtr<UserMediaPermissionRequestProxy> createRequest(uint64_t userMediaID, const Vector<String>& audioDeviceUIDs, const Vector<String>& videoDeviceUIDs);
    3737
    3838    // Called by UserMediaPermissionRequestProxy when a decision is made by the user.
    39     void didReceiveUserMediaPermissionDecision(uint64_t, bool allow, const String& videoDeviceUID, const String& audioDeviceUID);
     39    void didReceiveUserMediaPermissionDecision(uint64_t, bool allow, const String& audioDeviceUID, const String& videoDeviceUID);
    4040
    4141private:
  • trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestProxy.cpp

    r188385 r190262  
    2727namespace WebKit {
    2828
    29 UserMediaPermissionRequestProxy::UserMediaPermissionRequestProxy(UserMediaPermissionRequestManagerProxy& manager, uint64_t userMediaID, bool requiresAudio, bool requiresVideo, const Vector<String>& deviceUIDsVideo, const Vector<String>& deviceUIDsAudio)
     29UserMediaPermissionRequestProxy::UserMediaPermissionRequestProxy(UserMediaPermissionRequestManagerProxy& manager, uint64_t userMediaID, const Vector<String>& audioDeviceUIDs, const Vector<String>& videoDeviceUIDs)
    3030    : m_manager(manager)
    3131    , m_userMediaID(userMediaID)
    32     , m_requiresAudio(requiresAudio)
    33     , m_requiresVideo(requiresVideo)
    34     , m_videoDeviceUIDs(deviceUIDsVideo)
    35     , m_audiodeviceUIDs(deviceUIDsAudio)
     32    , m_videoDeviceUIDs(videoDeviceUIDs)
     33    , m_audioDeviceUIDs(audioDeviceUIDs)
    3634{
    3735}
    3836
    39 void UserMediaPermissionRequestProxy::allow(const String& videoDeviceUID, const String& audioDeviceUID)
     37void UserMediaPermissionRequestProxy::allow(const String& audioDeviceUID, const String& videoDeviceUID)
    4038{
    41     m_manager.didReceiveUserMediaPermissionDecision(m_userMediaID, true, videoDeviceUID, audioDeviceUID);
     39    m_manager.didReceiveUserMediaPermissionDecision(m_userMediaID, true, audioDeviceUID, videoDeviceUID);
    4240}
    4341
     
    5250}
    5351
    54 #if ENABLE(MEDIA_STREAM)
    55 const String& UserMediaPermissionRequestProxy::getDeviceNameForUID(const String& UID, WebCore::RealtimeMediaSource::Type type)
    56 {
    57     return WebCore::RealtimeMediaSourceCenter::singleton().sourceWithUID(UID, type, nullptr)->label();
    58 }
    59 #endif
    60 
    6152} // namespace WebKit
    6253
  • trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestProxy.h

    r188385 r190262  
    3232class UserMediaPermissionRequestProxy : public API::ObjectImpl<API::Object::Type::UserMediaPermissionRequest> {
    3333public:
    34     static PassRefPtr<UserMediaPermissionRequestProxy> create(UserMediaPermissionRequestManagerProxy& manager, uint64_t userMediaID, bool requiresAudio, bool requiresVideo, const Vector<String>& deviceUIDsVideo, const Vector<String>& deviceUIDsAudio)
     34    static PassRefPtr<UserMediaPermissionRequestProxy> create(UserMediaPermissionRequestManagerProxy& manager, uint64_t userMediaID, const Vector<String>& videoDeviceUIDs, const Vector<String>& audioDeviceUIDs)
    3535    {
    36         return adoptRef(new UserMediaPermissionRequestProxy(manager, userMediaID, requiresAudio, requiresVideo, deviceUIDsVideo, deviceUIDsAudio));
     36        return adoptRef(new UserMediaPermissionRequestProxy(manager, userMediaID, videoDeviceUIDs, audioDeviceUIDs));
    3737    }
    3838
     
    4242    void invalidate();
    4343
    44 #if ENABLE(MEDIA_STREAM)
    45     const String& getDeviceNameForUID(const String&, WebCore::RealtimeMediaSource::Type);
    46 #endif
     44    bool requiresAudio() const { return m_audioDeviceUIDs.size(); }
     45    bool requiresVideo() const { return m_videoDeviceUIDs.size(); }
    4746
    48     bool requiresAudio() const { return m_requiresAudio; }
    49     bool requiresVideo() const { return m_requiresVideo; }
    50    
    5147    const Vector<String>& videoDeviceUIDs() const { return m_videoDeviceUIDs; }
    52     const Vector<String>& audioDeviceUIDs() const { return m_audiodeviceUIDs; }
     48    const Vector<String>& audioDeviceUIDs() const { return m_audioDeviceUIDs; }
    5349   
    5450    const String& firstVideoDeviceUID() const { return !videoDeviceUIDs().isEmpty() ? videoDeviceUIDs().at(0) : emptyString(); }
     
    5652
    5753private:
    58     UserMediaPermissionRequestProxy(UserMediaPermissionRequestManagerProxy&, uint64_t userMediaID, bool requiresAudio, bool requiresVideo, const Vector<String>& deviceUIDsVideo, const Vector<String>& deviceUIDsAudio);
     54    UserMediaPermissionRequestProxy(UserMediaPermissionRequestManagerProxy&, uint64_t userMediaID, const Vector<String>& videoDeviceUIDs, const Vector<String>& audioDeviceUIDs);
    5955
    6056    UserMediaPermissionRequestManagerProxy& m_manager;
    6157    uint64_t m_userMediaID;
    62     bool m_requiresAudio;
    63     bool m_requiresVideo;
    6458    Vector<String> m_videoDeviceUIDs;
    65     Vector<String> m_audiodeviceUIDs;
     59    Vector<String> m_audioDeviceUIDs;
    6660};
    6761
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp

    r190260 r190262  
    52805280}
    52815281
    5282 void WebPageProxy::requestUserMediaPermissionForFrame(uint64_t userMediaID, uint64_t frameID, String originIdentifier, bool audio, bool video, const Vector<String>& deviceUIDsVideo, const Vector<String>& deviceUIDsAudio)
     5282void WebPageProxy::requestUserMediaPermissionForFrame(uint64_t userMediaID, uint64_t frameID, String originIdentifier, const Vector<String>& audioDeviceUIDs, const Vector<String>& videoDeviceUIDs)
    52835283{
    52845284    WebFrameProxy* frame = m_process->webFrame(frameID);
     
    52865286
    52875287    RefPtr<API::SecurityOrigin> origin = API::SecurityOrigin::create(SecurityOrigin::createFromDatabaseIdentifier(originIdentifier));
    5288     RefPtr<UserMediaPermissionRequestProxy> request = m_userMediaPermissionRequestManager.createRequest(userMediaID, audio, video, deviceUIDsVideo, deviceUIDsAudio);
     5288    RefPtr<UserMediaPermissionRequestProxy> request = m_userMediaPermissionRequestManager.createRequest(userMediaID, audioDeviceUIDs, videoDeviceUIDs);
    52895289
    52905290    if (!m_uiClient->decidePolicyForUserMediaPermissionRequest(*this, *frame, *origin.get(), *request.get()))
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.h

    r190260 r190262  
    11851185    void requestGeolocationPermissionForFrame(uint64_t geolocationID, uint64_t frameID, String originIdentifier);
    11861186
    1187     void requestUserMediaPermissionForFrame(uint64_t userMediaID, uint64_t frameID, String originIdentifier, bool audio, bool video, const Vector<String>& deviceUIDsVideo, const Vector<String>& deviceUIDsAudio);
     1187    void requestUserMediaPermissionForFrame(uint64_t userMediaID, uint64_t frameID, String originIdentifier, const Vector<String>& audioDeviceUIDs, const Vector<String>& videoDeviceUIDs);
    11881188
    11891189    void runModal();
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in

    r190064 r190262  
    268268#if ENABLE(MEDIA_STREAM)
    269269    # MediaSteam messages
    270     RequestUserMediaPermissionForFrame(uint64_t userMediaID, uint64_t frameID, String originIdentifier, bool audio, bool video, Vector<String> deviceUIDsVideo, Vector<String> deviceUIDsAudio)
     270    RequestUserMediaPermissionForFrame(uint64_t userMediaID, uint64_t frameID, String originIdentifier, Vector<String> audioDeviceUIDs, Vector<String> videoDeviceUIDs)
    271271#endif
    272272
  • trunk/Source/WebKit2/WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp

    r188385 r190262  
    6464
    6565    SecurityOrigin* origin = request.securityOrigin();
    66     m_page.send(Messages::WebPageProxy::RequestUserMediaPermissionForFrame(requestID, webFrame->frameID(), origin->databaseIdentifier(), request.requiresAudio(), request.requiresVideo(), request.videoDeviceUIDs(), request.audioDeviceUIDs()));
     66    m_page.send(Messages::WebPageProxy::RequestUserMediaPermissionForFrame(requestID, webFrame->frameID(), origin->databaseIdentifier(), request.audioDeviceUIDs(), request.videoDeviceUIDs()));
    6767}
    6868
     
    7575}
    7676
    77 void UserMediaPermissionRequestManager::didReceiveUserMediaPermissionDecision(uint64_t requestID, bool allowed, const String& deviceUIDVideo, const String& deviceUIDAudio)
     77void UserMediaPermissionRequestManager::didReceiveUserMediaPermissionDecision(uint64_t requestID, bool allowed, const String& audioDeviceUID, const String& videoDeviceUID)
    7878{
    7979    RefPtr<UserMediaRequest> request = m_idToRequestMap.take(requestID);
     
    8383
    8484    if (allowed)
    85         request->userMediaAccessGranted(deviceUIDVideo, deviceUIDAudio);
     85        request->userMediaAccessGranted(audioDeviceUID, videoDeviceUID);
    8686    else
    8787        request->userMediaAccessDenied();
  • trunk/Source/WebKit2/WebProcess/MediaStream/UserMediaPermissionRequestManager.h

    r187258 r190262  
    3838    void cancelRequest(WebCore::UserMediaRequest&);
    3939
    40     void didReceiveUserMediaPermissionDecision(uint64_t userMediaID, bool allowed, const String& deviceUIDVideo, const String& deviceUIDAudio);
     40    void didReceiveUserMediaPermissionDecision(uint64_t userMediaID, bool allowed, const String& audioDeviceUID, const String& videoDeviceUID);
    4141
    4242private:
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp

    r190152 r190262  
    33133313
    33143314#if ENABLE(MEDIA_STREAM)
    3315 void WebPage::didReceiveUserMediaPermissionDecision(uint64_t userMediaID, bool allowed, const String& deviceUIDVideo, const String& deviceUIDAudio)
    3316 {
    3317     m_userMediaPermissionRequestManager.didReceiveUserMediaPermissionDecision(userMediaID, allowed, deviceUIDVideo, deviceUIDAudio);
     3315void WebPage::didReceiveUserMediaPermissionDecision(uint64_t userMediaID, bool allowed, const String& audioDeviceUID, const String& videoDeviceUID)
     3316{
     3317    m_userMediaPermissionRequestManager.didReceiveUserMediaPermissionDecision(userMediaID, allowed, audioDeviceUID, videoDeviceUID);
    33183318}
    33193319#endif
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h

    r190064 r190262  
    11081108
    11091109#if ENABLE(MEDIA_STREAM)
    1110     WK_EXPORT void didReceiveUserMediaPermissionDecision(uint64_t userMediaID, bool allowed, const String& deviceUIDVideo, const String& deviceUIDAudio);
     1110    WK_EXPORT void didReceiveUserMediaPermissionDecision(uint64_t userMediaID, bool allowed, const String& audioDeviceUID, const String& videoDeviceUID);
    11111111#endif
    11121112
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in

    r189105 r190262  
    282282#if ENABLE(MEDIA_STREAM)
    283283    # MediaSteam
    284     DidReceiveUserMediaPermissionDecision(uint64_t userMediaID, bool allowed, String deviceUIDVideo, String deviceUIDAudio)
     284    DidReceiveUserMediaPermissionDecision(uint64_t userMediaID, bool allowed, String audioDeviceUID, String videoDeviceUID)
    285285#endif
    286286
  • trunk/Source/WebKit2/WebProcess/com.apple.WebProcess.sb.in

    r188365 r190262  
    313313    (global-name "com.apple.coremedia.endpointplaybacksession.xpc")
    314314    (global-name "com.apple.coremedia.endpointpicker.xpc"))
     315
     316
     317;; Camera access
     318(allow device-camera)
     319(allow file-read*
     320    (literal "/Library/Preferences/com.apple.coremedia")
     321    (home-literal "/Library/Preferences/com.apple.coremedia"))
     322(allow mach-lookup (extension "com.apple.app-sandbox.mach"))
     323(allow mach-lookup
     324    (global-name "com.apple.cmio.AppleCameraAssistant")
     325    ;; Apple DAL assistants
     326    (global-name "com.apple.cmio.VDCAssistant")
     327    (global-name "com.apple.cmio.AVCAssistant")
     328    (global-name "com.apple.cmio.IIDCVideoAssistant")
     329    ;; QuickTimeIIDCDigitizer assistant
     330    (global-name "com.apple.IIDCAssistant"))
     331(allow iokit-open
     332    ;; QuickTimeUSBVDCDigitizer
     333    (iokit-user-client-class "IOUSBDeviceUserClientV2")
     334    (iokit-user-client-class "IOUSBInterfaceUserClientV2"))
     335
     336;; Microphone
     337(allow device-microphone)
  • trunk/Tools/ChangeLog

    r190260 r190262  
     12015-09-25  Eric Carlson  <eric.carlson@apple.com>
     2
     3        Clean up user media request internal API
     4        https://bugs.webkit.org/show_bug.cgi?id=149527
     5
     6        Reviewed by Tim Horton.
     7
     8        * TestWebKitAPI/Tests/WebKit2/UserMedia.cpp:
     9        (TestWebKitAPI::decidePolicyForUserMediaPermissionRequestCallBack): Update for API changes.
     10
     11        * WebKitTestRunner/TestController.cpp:
     12        (WTR::TestController::decidePolicyForUserMediaPermissionRequestIfPossible): Ditto.
     13
    1142015-09-25  Simon Fraser  <simon.fraser@apple.com>
    215
  • trunk/Tools/TestWebKitAPI/Tests/WebKit2/UserMedia.cpp

    r188385 r190262  
    3535void decidePolicyForUserMediaPermissionRequestCallBack(WKPageRef, WKFrameRef, WKSecurityOriginRef, WKUserMediaPermissionRequestRef permissionRequest, const void* /* clientInfo */)
    3636{
    37     WKUserMediaPermissionRequestAllowBest(permissionRequest);
     37    WKRetainPtr<WKArrayRef> audioDeviceUIDs = WKUserMediaPermissionRequestAudioDeviceUIDs(permissionRequest);
     38    WKRetainPtr<WKArrayRef> videoDeviceUIDs = WKUserMediaPermissionRequestVideoDeviceUIDs(permissionRequest);
     39
     40    if (WKArrayGetSize(videoDeviceUIDs.get()) || WKArrayGetSize(audioDeviceUIDs.get())) {
     41        WKRetainPtr<WKStringRef> videoDeviceUID;
     42        if (WKArrayGetSize(videoDeviceUIDs.get()))
     43            videoDeviceUID = reinterpret_cast<WKStringRef>(WKArrayGetItemAtIndex(videoDeviceUIDs.get(), 0));
     44        else
     45            videoDeviceUID = WKStringCreateWithUTF8CString("");
     46
     47        WKRetainPtr<WKStringRef> audioDeviceUID;
     48        if (WKArrayGetSize(audioDeviceUIDs.get()))
     49            audioDeviceUID = reinterpret_cast<WKStringRef>(WKArrayGetItemAtIndex(audioDeviceUIDs.get(), 0));
     50        else
     51            audioDeviceUID = WKStringCreateWithUTF8CString("");
     52
     53        WKUserMediaPermissionRequestAllow(permissionRequest, videoDeviceUID.get(), audioDeviceUID.get());
     54    }
     55
    3856    done = true;
    3957}
  • trunk/Tools/WebKitTestRunner/TestController.cpp

    r190065 r190262  
    16201620
    16211621    for (auto& request : m_userMediaPermissionRequests) {
    1622         if (m_isUserMediaPermissionAllowed) {
    1623             if (WKArrayGetSize(WKUserMediaPermissionRequestDeviceNamesVideo(request.get())) || WKArrayGetSize(WKUserMediaPermissionRequestDeviceNamesAudio(request.get())))
    1624                 WKUserMediaPermissionRequestAllow(request.get(), WKUserMediaPermissionRequestFirstVideoDeviceUID(request.get()), WKUserMediaPermissionRequestFirstAudioDeviceUID(request.get()));
     1622        WKRetainPtr<WKArrayRef> audioDeviceUIDs = WKUserMediaPermissionRequestAudioDeviceUIDs(request.get());
     1623        WKRetainPtr<WKArrayRef> videoDeviceUIDs = WKUserMediaPermissionRequestVideoDeviceUIDs(request.get());
     1624
     1625        if (m_isUserMediaPermissionAllowed && (WKArrayGetSize(videoDeviceUIDs.get()) || WKArrayGetSize(audioDeviceUIDs.get()))) {
     1626            WKRetainPtr<WKStringRef> videoDeviceUID;
     1627            if (WKArrayGetSize(videoDeviceUIDs.get()))
     1628                videoDeviceUID = reinterpret_cast<WKStringRef>(WKArrayGetItemAtIndex(videoDeviceUIDs.get(), 0));
     1629            else
     1630                videoDeviceUID = WKStringCreateWithUTF8CString("");
     1631
     1632            WKRetainPtr<WKStringRef> audioDeviceUID;
     1633            if (WKArrayGetSize(audioDeviceUIDs.get()))
     1634                audioDeviceUID = reinterpret_cast<WKStringRef>(WKArrayGetItemAtIndex(audioDeviceUIDs.get(), 0));
     1635            else
     1636                audioDeviceUID = WKStringCreateWithUTF8CString("");
     1637
     1638            WKUserMediaPermissionRequestAllow(request.get(), videoDeviceUID.get(), audioDeviceUID.get());
     1639
    16251640        } else
    16261641            WKUserMediaPermissionRequestDeny(request.get());
Note: See TracChangeset for help on using the changeset viewer.