Title: [187258] trunk/Source
Revision
187258
Author
[email protected]
Date
2015-07-23 15:15:22 -0700 (Thu, 23 Jul 2015)

Log Message

Bridged passing lists of devices between the UIProcess and the WebProcess
https://bugs.webkit.org/show_bug.cgi?id=147056
<rdar://problem/21883094>

Patch by Matthew Daiter <[email protected]> on 2015-07-23
Reviewed by Brent Fulgham.

Source/WebCore:

* Modules/mediastream/UserMediaRequest.h: Added fields to store and
retrieve lists of devices
(WebCore::UserMediaRequest::deviceUIDsVideo):
(WebCore::UserMediaRequest::deviceUIDsAudio):

Source/WebKit2:

* UIProcess/UserMediaPermissionRequestManagerProxy.cpp: Modified file
to reflect changes made to the header in the .messages.in file
(WebKit::UserMediaPermissionRequestManagerProxy::createRequest): Ditto
(WebKit::UserMediaPermissionRequestManagerProxy::didReceiveUserMediaPermissionDecision):
* UIProcess/UserMediaPermissionRequestManagerProxy.h: Ditto
* UIProcess/UserMediaPermissionRequestProxy.cpp: Ditto
(WebKit::UserMediaPermissionRequestProxy::UserMediaPermissionRequestProxy):
* UIProcess/UserMediaPermissionRequestProxy.h:
(WebKit::UserMediaPermissionRequestProxy::create):
(WebKit::UserMediaPermissionRequestProxy::deviceUIDsVideo):
(WebKit::UserMediaPermissionRequestProxy::deviceUIDsAudio):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::requestUserMediaPermissionForFrame):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in: Changed heading
* WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
(WebKit::UserMediaPermissionRequestManager::startRequest):
(WebKit::UserMediaPermissionRequestManager::didReceiveUserMediaPermissionDecision):
* WebProcess/MediaStream/UserMediaPermissionRequestManager.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::didReceiveUserMediaPermissionDecision):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in: Changed heading

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (187257 => 187258)


--- trunk/Source/WebCore/ChangeLog	2015-07-23 22:06:56 UTC (rev 187257)
+++ trunk/Source/WebCore/ChangeLog	2015-07-23 22:15:22 UTC (rev 187258)
@@ -1,3 +1,16 @@
+2015-07-23  Matthew Daiter  <[email protected]>
+
+        Bridged passing lists of devices between the UIProcess and the WebProcess
+        https://bugs.webkit.org/show_bug.cgi?id=147056
+        <rdar://problem/21883094>
+
+        Reviewed by Brent Fulgham.
+
+        * Modules/mediastream/UserMediaRequest.h: Added fields to store and
+        retrieve lists of devices
+        (WebCore::UserMediaRequest::deviceUIDsVideo):
+        (WebCore::UserMediaRequest::deviceUIDsAudio):
+
 2015-07-19  Matt Rajca  <[email protected]>
 
         Media Session: add support for ducking media elements

Modified: trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.h (187257 => 187258)


--- trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.h	2015-07-23 22:06:56 UTC (rev 187257)
+++ trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.h	2015-07-23 22:15:22 UTC (rev 187258)
@@ -73,6 +73,8 @@
     const Vector<String>& videoDeviceUIDs() const { return m_videoDeviceUIDs; }
     const Vector<String>& audioDeviceUIDs() const { return m_audioDeviceUIDs; }
 
+    const Vector<String>& deviceUIDsVideo() const { return m_deviceUIDsVideo; }
+    const Vector<String>& deviceUIDsAudio() const { return m_deviceUIDsAudio; }
 private:
     UserMediaRequest(ScriptExecutionContext*, UserMediaController*, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints, MediaDevices::Promise&&);
 
@@ -88,6 +90,9 @@
     
     RefPtr<MediaConstraints> m_audioConstraints;
     RefPtr<MediaConstraints> m_videoConstraints;
+    
+    Vector<String> m_deviceUIDsVideo;
+    Vector<String> m_deviceUIDsAudio;
 
     Vector<String> m_videoDeviceUIDs;
     Vector<String> m_audioDeviceUIDs;

Modified: trunk/Source/WebKit2/ChangeLog (187257 => 187258)


--- trunk/Source/WebKit2/ChangeLog	2015-07-23 22:06:56 UTC (rev 187257)
+++ trunk/Source/WebKit2/ChangeLog	2015-07-23 22:15:22 UTC (rev 187258)
@@ -1,3 +1,35 @@
+2015-07-23  Matthew Daiter  <[email protected]>
+
+        Bridged passing lists of devices between the UIProcess and the WebProcess
+        https://bugs.webkit.org/show_bug.cgi?id=147056
+        <rdar://problem/21883094>
+
+        Reviewed by Brent Fulgham.
+
+        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp: Modified file
+        to reflect changes made to the header in the .messages.in file
+        (WebKit::UserMediaPermissionRequestManagerProxy::createRequest): Ditto
+        (WebKit::UserMediaPermissionRequestManagerProxy::didReceiveUserMediaPermissionDecision):
+        * UIProcess/UserMediaPermissionRequestManagerProxy.h: Ditto
+        * UIProcess/UserMediaPermissionRequestProxy.cpp: Ditto
+        (WebKit::UserMediaPermissionRequestProxy::UserMediaPermissionRequestProxy):
+        * UIProcess/UserMediaPermissionRequestProxy.h:
+        (WebKit::UserMediaPermissionRequestProxy::create):
+        (WebKit::UserMediaPermissionRequestProxy::deviceUIDsVideo):
+        (WebKit::UserMediaPermissionRequestProxy::deviceUIDsAudio):
+        * UIProcess/WebPageProxy.cpp:
+        (WebKit::WebPageProxy::requestUserMediaPermissionForFrame):
+        * UIProcess/WebPageProxy.h:
+        * UIProcess/WebPageProxy.messages.in: Changed heading
+        * WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
+        (WebKit::UserMediaPermissionRequestManager::startRequest):
+        (WebKit::UserMediaPermissionRequestManager::didReceiveUserMediaPermissionDecision):
+        * WebProcess/MediaStream/UserMediaPermissionRequestManager.h:
+        * WebProcess/WebPage/WebPage.cpp:
+        (WebKit::WebPage::didReceiveUserMediaPermissionDecision):
+        * WebProcess/WebPage/WebPage.h:
+        * WebProcess/WebPage/WebPage.messages.in: Changed heading
+
 2015-07-23  Yongjun Zhang  <[email protected]>
 
         Adopt the new _previewItemControllerDidCancelPreview delegate method.

Modified: trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.cpp (187257 => 187258)


--- trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.cpp	2015-07-23 22:06:56 UTC (rev 187257)
+++ trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.cpp	2015-07-23 22:15:22 UTC (rev 187258)
@@ -38,9 +38,9 @@
     m_pendingRequests.clear();
 }
 
-PassRefPtr<UserMediaPermissionRequestProxy> UserMediaPermissionRequestManagerProxy::createRequest(uint64_t userMediaID, bool requiresAudio, bool requiresVideo)
+PassRefPtr<UserMediaPermissionRequestProxy> UserMediaPermissionRequestManagerProxy::createRequest(uint64_t userMediaID, bool requiresAudio, bool requiresVideo, const Vector<String>& deviceUIDsVideo, const Vector<String>& deviceUIDsAudio)
 {
-    RefPtr<UserMediaPermissionRequestProxy> request = UserMediaPermissionRequestProxy::create(*this, userMediaID, requiresAudio, requiresVideo);
+    RefPtr<UserMediaPermissionRequestProxy> request = UserMediaPermissionRequestProxy::create(*this, userMediaID, requiresAudio, requiresVideo, deviceUIDsVideo, deviceUIDsAudio);
     m_pendingRequests.add(userMediaID, request.get());
     return request.release();
 }
@@ -54,7 +54,8 @@
         return;
 
 #if ENABLE(MEDIA_STREAM)
-    m_page.process().send(Messages::WebPage::DidReceiveUserMediaPermissionDecision(userMediaID, allowed), m_page.pageID());
+    // FIXME(147062): Need to add in the support for Safari to pass strings given from user's decision on what piece of media to open
+    m_page.process().send(Messages::WebPage::DidReceiveUserMediaPermissionDecision(userMediaID, allowed, "", ""), m_page.pageID());
 #else
     UNUSED_PARAM(allowed);
 #endif

Modified: trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.h (187257 => 187258)


--- trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.h	2015-07-23 22:06:56 UTC (rev 187257)
+++ trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.h	2015-07-23 22:15:22 UTC (rev 187258)
@@ -33,7 +33,7 @@
     void invalidateRequests();
 
     // Create a request to be presented to the user.
-    PassRefPtr<UserMediaPermissionRequestProxy> createRequest(uint64_t userMediaID, bool audio, bool video);
+    PassRefPtr<UserMediaPermissionRequestProxy> createRequest(uint64_t userMediaID, bool audio, bool video, const Vector<String>& deviceUIDsVideo, const Vector<String>& deviceUIDsAudio);
 
     // Called by UserMediaPermissionRequestProxy when a decision is made by the user.
     void didReceiveUserMediaPermissionDecision(uint64_t, bool allow);

Modified: trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestProxy.cpp (187257 => 187258)


--- trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestProxy.cpp	2015-07-23 22:06:56 UTC (rev 187257)
+++ trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestProxy.cpp	2015-07-23 22:15:22 UTC (rev 187258)
@@ -24,11 +24,13 @@
 
 namespace WebKit {
 
-UserMediaPermissionRequestProxy::UserMediaPermissionRequestProxy(UserMediaPermissionRequestManagerProxy& manager, uint64_t userMediaID, bool requiresAudio, bool requiresVideo)
+UserMediaPermissionRequestProxy::UserMediaPermissionRequestProxy(UserMediaPermissionRequestManagerProxy& manager, uint64_t userMediaID, bool requiresAudio, bool requiresVideo, const Vector<String>& deviceUIDsVideo, const Vector<String>& deviceUIDsAudio)
     : m_manager(manager)
     , m_userMediaID(userMediaID)
     , m_requiresAudio(requiresAudio)
     , m_requiresVideo(requiresVideo)
+    , m_deviceUIDsVideo(deviceUIDsVideo)
+    , m_deviceUIDsAudio(deviceUIDsAudio)
 {
 }
 

Modified: trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestProxy.h (187257 => 187258)


--- trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestProxy.h	2015-07-23 22:06:56 UTC (rev 187257)
+++ trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestProxy.h	2015-07-23 22:15:22 UTC (rev 187258)
@@ -21,6 +21,8 @@
 
 #include "APIObject.h"
 #include <wtf/PassRefPtr.h>
+#include <wtf/Vector.h>
+#include <wtf/text/WTFString.h>
 
 namespace WebKit {
 
@@ -28,9 +30,9 @@
 
 class UserMediaPermissionRequestProxy : public API::ObjectImpl<API::Object::Type::UserMediaPermissionRequest> {
 public:
-    static PassRefPtr<UserMediaPermissionRequestProxy> create(UserMediaPermissionRequestManagerProxy& manager, uint64_t userMediaID, bool requiresAudio, bool requiresVideo)
+    static PassRefPtr<UserMediaPermissionRequestProxy> create(UserMediaPermissionRequestManagerProxy& manager, uint64_t userMediaID, bool requiresAudio, bool requiresVideo, const Vector<String>& deviceUIDsVideo, const Vector<String>& deviceUIDsAudio)
     {
-        return adoptRef(new UserMediaPermissionRequestProxy(manager, userMediaID, requiresAudio, requiresVideo));
+        return adoptRef(new UserMediaPermissionRequestProxy(manager, userMediaID, requiresAudio, requiresVideo, deviceUIDsVideo, deviceUIDsAudio));
     }
 
     void allow();
@@ -40,14 +42,19 @@
 
     bool requiresAudio() const { return m_requiresAudio; }
     bool requiresVideo() const { return m_requiresVideo; }
+    
+    const Vector<String>& deviceUIDsVideo() const { return m_deviceUIDsVideo; }
+    const Vector<String>& deviceUIDsAudio() const { return m_deviceUIDsAudio; }
 
 private:
-    UserMediaPermissionRequestProxy(UserMediaPermissionRequestManagerProxy&, uint64_t userMediaID, bool requiresAudio, bool requiresVideo);
+    UserMediaPermissionRequestProxy(UserMediaPermissionRequestManagerProxy&, uint64_t userMediaID, bool requiresAudio, bool requiresVideo, const Vector<String>& deviceUIDsVideo, const Vector<String>& deviceUIDsAudio);
 
     UserMediaPermissionRequestManagerProxy& m_manager;
     uint64_t m_userMediaID;
     bool m_requiresAudio;
     bool m_requiresVideo;
+    Vector<String> m_deviceUIDsVideo;
+    Vector<String> m_deviceUIDsAudio;
 };
 
 } // namespace WebKit

Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (187257 => 187258)


--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp	2015-07-23 22:06:56 UTC (rev 187257)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp	2015-07-23 22:15:22 UTC (rev 187258)
@@ -5313,13 +5313,13 @@
     request->deny();
 }
 
-void WebPageProxy::requestUserMediaPermissionForFrame(uint64_t userMediaID, uint64_t frameID, String originIdentifier, bool audio, bool video)
+void WebPageProxy::requestUserMediaPermissionForFrame(uint64_t userMediaID, uint64_t frameID, String originIdentifier, bool audio, bool video, const Vector<String>& deviceUIDsVideo, const Vector<String>& deviceUIDsAudio)
 {
     WebFrameProxy* frame = m_process->webFrame(frameID);
     MESSAGE_CHECK(frame);
 
     RefPtr<API::SecurityOrigin> origin = API::SecurityOrigin::create(SecurityOrigin::createFromDatabaseIdentifier(originIdentifier));
-    RefPtr<UserMediaPermissionRequestProxy> request = m_userMediaPermissionRequestManager.createRequest(userMediaID, audio, video);
+    RefPtr<UserMediaPermissionRequestProxy> request = m_userMediaPermissionRequestManager.createRequest(userMediaID, audio, video, deviceUIDsVideo, deviceUIDsAudio);
 
     if (!m_uiClient->decidePolicyForUserMediaPermissionRequest(*this, *frame, *origin.get(), *request.get()))
         request->deny();

Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (187257 => 187258)


--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h	2015-07-23 22:06:56 UTC (rev 187257)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h	2015-07-23 22:15:22 UTC (rev 187258)
@@ -1207,7 +1207,7 @@
     void reachedApplicationCacheOriginQuota(const String& originIdentifier, uint64_t currentQuota, uint64_t totalBytesNeeded, PassRefPtr<Messages::WebPageProxy::ReachedApplicationCacheOriginQuota::DelayedReply>);
     void requestGeolocationPermissionForFrame(uint64_t geolocationID, uint64_t frameID, String originIdentifier);
 
-    void requestUserMediaPermissionForFrame(uint64_t userMediaID, uint64_t frameID, String originIdentifier, bool audio, bool video);
+    void requestUserMediaPermissionForFrame(uint64_t userMediaID, uint64_t frameID, String originIdentifier, bool audio, bool video, const Vector<String>& deviceUIDsVideo, const Vector<String>& deviceUIDsAudio);
 
     void runModal();
     void notifyScrollerThumbIsVisibleInRect(const WebCore::IntRect&);

Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in (187257 => 187258)


--- trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in	2015-07-23 22:06:56 UTC (rev 187257)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in	2015-07-23 22:15:22 UTC (rev 187258)
@@ -267,7 +267,7 @@
     
 #if ENABLE(MEDIA_STREAM)
     # MediaSteam messages
-    RequestUserMediaPermissionForFrame(uint64_t userMediaID, uint64_t frameID, String originIdentifier, bool audio, bool video)
+    RequestUserMediaPermissionForFrame(uint64_t userMediaID, uint64_t frameID, String originIdentifier, bool audio, bool video, Vector<String> deviceUIDsVideo, Vector<String> deviceUIDsAudio)
 #endif
 
     # Notification messages

Modified: trunk/Source/WebKit2/WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp (187257 => 187258)


--- trunk/Source/WebKit2/WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp	2015-07-23 22:06:56 UTC (rev 187257)
+++ trunk/Source/WebKit2/WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp	2015-07-23 22:15:22 UTC (rev 187258)
@@ -63,7 +63,7 @@
     ASSERT(webFrame);
 
     SecurityOrigin* origin = request.securityOrigin();
-    m_page.send(Messages::WebPageProxy::RequestUserMediaPermissionForFrame(requestID, webFrame->frameID(), origin->databaseIdentifier(), request.requiresAudio(), request.requiresVideo()));
+    m_page.send(Messages::WebPageProxy::RequestUserMediaPermissionForFrame(requestID, webFrame->frameID(), origin->databaseIdentifier(), request.requiresAudio(), request.requiresVideo(), request.deviceUIDsVideo(), request.deviceUIDsAudio()));
 }
 
 void UserMediaPermissionRequestManager::cancelRequest(UserMediaRequest& request)
@@ -74,7 +74,7 @@
     m_idToRequestMap.remove(requestID);
 }
 
-void UserMediaPermissionRequestManager::didReceiveUserMediaPermissionDecision(uint64_t requestID, bool allowed)
+void UserMediaPermissionRequestManager::didReceiveUserMediaPermissionDecision(uint64_t requestID, bool allowed, const String& deviceUIDVideo, const String& deviceUIDAudio)
 {
     RefPtr<UserMediaRequest> request = m_idToRequestMap.take(requestID);
     if (!request)

Modified: trunk/Source/WebKit2/WebProcess/MediaStream/UserMediaPermissionRequestManager.h (187257 => 187258)


--- trunk/Source/WebKit2/WebProcess/MediaStream/UserMediaPermissionRequestManager.h	2015-07-23 22:06:56 UTC (rev 187257)
+++ trunk/Source/WebKit2/WebProcess/MediaStream/UserMediaPermissionRequestManager.h	2015-07-23 22:15:22 UTC (rev 187258)
@@ -37,7 +37,7 @@
     void startRequest(WebCore::UserMediaRequest&);
     void cancelRequest(WebCore::UserMediaRequest&);
 
-    void didReceiveUserMediaPermissionDecision(uint64_t userMediaID, bool allowed);
+    void didReceiveUserMediaPermissionDecision(uint64_t userMediaID, bool allowed, const String& deviceUIDVideo, const String& deviceUIDAudio);
 
 private:
     WebPage& m_page;

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (187257 => 187258)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp	2015-07-23 22:06:56 UTC (rev 187257)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp	2015-07-23 22:15:22 UTC (rev 187258)
@@ -3361,9 +3361,9 @@
 }
 
 #if ENABLE(MEDIA_STREAM)
-void WebPage::didReceiveUserMediaPermissionDecision(uint64_t userMediaID, bool allowed)
+void WebPage::didReceiveUserMediaPermissionDecision(uint64_t userMediaID, bool allowed, const String& deviceUIDVideo, const String& deviceUIDAudio)
 {
-    m_userMediaPermissionRequestManager.didReceiveUserMediaPermissionDecision(userMediaID, allowed);
+    m_userMediaPermissionRequestManager.didReceiveUserMediaPermissionDecision(userMediaID, allowed, deviceUIDVideo, deviceUIDAudio);
 }
 #endif
 

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h (187257 => 187258)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h	2015-07-23 22:06:56 UTC (rev 187257)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h	2015-07-23 22:15:22 UTC (rev 187258)
@@ -1092,7 +1092,7 @@
     void didReceiveNotificationPermissionDecision(uint64_t notificationID, bool allowed);
 
 #if ENABLE(MEDIA_STREAM)
-    WK_EXPORT void didReceiveUserMediaPermissionDecision(uint64_t userMediaID, bool allowed);
+    WK_EXPORT void didReceiveUserMediaPermissionDecision(uint64_t userMediaID, bool allowed, const String& deviceUIDVideo, const String& deviceUIDAudio);
 #endif
 
     void advanceToNextMisspelling(bool startBeforeSelection);

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in (187257 => 187258)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in	2015-07-23 22:06:56 UTC (rev 187257)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in	2015-07-23 22:15:22 UTC (rev 187258)
@@ -288,7 +288,7 @@
 
 #if ENABLE(MEDIA_STREAM)
     # MediaSteam
-    DidReceiveUserMediaPermissionDecision(uint64_t userMediaID, bool allowed)
+    DidReceiveUserMediaPermissionDecision(uint64_t userMediaID, bool allowed, String deviceUIDVideo, String deviceUIDAudio)
 #endif
 
     # Notification
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to