Diff
Modified: trunk/Source/WebCore/ChangeLog (188384 => 188385)
--- trunk/Source/WebCore/ChangeLog 2015-08-13 17:25:01 UTC (rev 188384)
+++ trunk/Source/WebCore/ChangeLog 2015-08-13 17:33:43 UTC (rev 188385)
@@ -1,3 +1,16 @@
+2015-08-13 Matthew Daiter <mdai...@apple.com>
+
+ UserMediaRequest should supply IDs of devices selected by user
+ https://bugs.webkit.org/show_bug.cgi?id=147263
+ <rdar://problem/21983345>
+
+ Reviewed by Jer Noble.
+
+ * Modules/mediastream/UserMediaRequest.cpp:
+ (WebCore::UserMediaRequest::userMediaAccessGranted):
+ * Modules/mediastream/UserMediaRequest.h:
+ * platform/mock/UserMediaClientMock.h:
+
2015-08-12 Carlos Garcia Campos <cgar...@igalia.com>
[Cairo] Improve image quality when using newer versions of cairo/pixman
Modified: trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.cpp (188384 => 188385)
--- trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.cpp 2015-08-13 17:25:01 UTC (rev 188384)
+++ trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.cpp 2015-08-13 17:33:43 UTC (rev 188385)
@@ -143,8 +143,10 @@
});
}
-void UserMediaRequest::userMediaAccessGranted()
+void UserMediaRequest::userMediaAccessGranted(const String& videoDeviceUID, const String& audioDeviceUID)
{
+ m_chosenVideoDeviceUID = videoDeviceUID;
+ m_chosenAudioDeviceUID = audioDeviceUID;
RefPtr<UserMediaRequest> protectedThis(this);
callOnMainThread([protectedThis] {
// 3 - the user granted access, ask platform to create the media stream descriptors.
Modified: trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.h (188384 => 188385)
--- trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.h 2015-08-13 17:25:01 UTC (rev 188384)
+++ trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.h 2015-08-13 17:33:43 UTC (rev 188385)
@@ -66,7 +66,7 @@
WEBCORE_EXPORT SecurityOrigin* securityOrigin() const;
void start();
- WEBCORE_EXPORT void userMediaAccessGranted();
+ WEBCORE_EXPORT void userMediaAccessGranted(const String& videoDeviceUID, const String& audioDeviceUID);
WEBCORE_EXPORT void userMediaAccessDenied();
bool requiresAudio() const { return m_audioConstraints; }
@@ -74,6 +74,9 @@
const Vector<String>& videoDeviceUIDs() const { return m_videoDeviceUIDs; }
const Vector<String>& audioDeviceUIDs() const { return m_audioDeviceUIDs; }
+
+ const String& firstVideoDeviceUID() const { return !videoDeviceUIDs().isEmpty() ? videoDeviceUIDs().at(0) : emptyString(); }
+ const String& firstAudioDeviceUID() const { return !audioDeviceUIDs().isEmpty() ? audioDeviceUIDs().at(0) : emptyString(); }
private:
UserMediaRequest(ScriptExecutionContext*, UserMediaController*, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints, MediaDevices::Promise&&);
@@ -94,6 +97,9 @@
Vector<String> m_videoDeviceUIDs;
Vector<String> m_audioDeviceUIDs;
+ String m_chosenVideoDeviceUID;
+ String m_chosenAudioDeviceUID;
+
UserMediaController* m_controller;
MediaDevices::Promise m_promise;
Modified: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.h (188384 => 188385)
--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.h 2015-08-13 17:25:01 UTC (rev 188384)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.h 2015-08-13 17:33:43 UTC (rev 188385)
@@ -50,7 +50,7 @@
public:
virtual ~RealtimeMediaSourceCenter();
- static RealtimeMediaSourceCenter& singleton();
+ WEBCORE_EXPORT static RealtimeMediaSourceCenter& singleton();
static void setSharedStreamCenter(RealtimeMediaSourceCenter*);
virtual void validateRequestConstraints(PassRefPtr<MediaStreamCreationClient>, PassRefPtr<MediaConstraints> audioConstraints, PassRefPtr<MediaConstraints> videoConstraints) = 0;
Modified: trunk/Source/WebCore/platform/mock/UserMediaClientMock.h (188384 => 188385)
--- trunk/Source/WebCore/platform/mock/UserMediaClientMock.h 2015-08-13 17:25:01 UTC (rev 188384)
+++ trunk/Source/WebCore/platform/mock/UserMediaClientMock.h 2015-08-13 17:33:43 UTC (rev 188385)
@@ -45,7 +45,7 @@
void fire() override
{
if (m_requestSuccess)
- m_request->userMediaAccessGranted();
+ m_request->userMediaAccessGranted(m_request->videoDeviceUIDs().at(0), m_request->audioDeviceUIDs().at(0));
else
m_request->userMediaAccessDenied();
}
Modified: trunk/Source/WebKit/mac/ChangeLog (188384 => 188385)
--- trunk/Source/WebKit/mac/ChangeLog 2015-08-13 17:25:01 UTC (rev 188384)
+++ trunk/Source/WebKit/mac/ChangeLog 2015-08-13 17:33:43 UTC (rev 188385)
@@ -1,3 +1,16 @@
+2015-08-13 Matthew Daiter <mdai...@apple.com>
+
+ Linking device query ability from WebKit2 to clients
+ https://bugs.webkit.org/show_bug.cgi?id=147263
+ <rdar://problem/21983345>
+
+ Reviewed by Jer Noble.
+
+ * WebCoreSupport/WebUserMediaClient.mm:
+ (-[WebUserMediaPolicyListener allow]):
+ (-[WebUserMediaPolicyListener allowDeviceWithVideoUID:andAudioUID:]):
+
+
2015-08-10 Chris Dumez <cdu...@apple.com>
Align WebKit1's PageCache size with WebKit2's
Modified: trunk/Source/WebKit/mac/WebCoreSupport/WebUserMediaClient.mm (188384 => 188385)
--- trunk/Source/WebKit/mac/WebCoreSupport/WebUserMediaClient.mm 2015-08-13 17:25:01 UTC (rev 188384)
+++ trunk/Source/WebKit/mac/WebCoreSupport/WebUserMediaClient.mm 2015-08-13 17:33:43 UTC (rev 188385)
@@ -47,7 +47,7 @@
}
- (id)initWithUserMediaRequest:(PassRefPtr<UserMediaRequest>)request;
- (void)cancelRequest;
-- (void)allow;
+- (void)allowDeviceWithVideoUID:(const String&)videoUID andAudioUID:(const String&)audioUID;
- (void)deny;
@end
@@ -152,8 +152,23 @@
#if ENABLE(MEDIA_STREAM)
if (!_request)
return;
+
+ const String& videoUID = _request->firstVideoDeviceUID();
+ const String& audioUID = _request->firstAudioDeviceUID();
+
+ _request->userMediaAccessGranted(videoUID, audioUID);
+ RemoveRequestFromMap(_request.get());
+#endif
+}
- _request->userMediaAccessGranted();
+- (void)allowDeviceWithVideoUID:(const String&)videoUID andAudioUID:(const String&)audioUID
+{
+#if ENABLE(MEDIA_STREAM)
+ if (!_request)
+ return;
+
+ _request->userMediaAccessGranted(videoUID, audioUID);
+
RemoveRequestFromMap(_request.get());
#endif
}
Modified: trunk/Source/WebKit2/ChangeLog (188384 => 188385)
--- trunk/Source/WebKit2/ChangeLog 2015-08-13 17:25:01 UTC (rev 188384)
+++ trunk/Source/WebKit2/ChangeLog 2015-08-13 17:33:43 UTC (rev 188385)
@@ -1,3 +1,30 @@
+2015-08-13 Matthew Daiter <mdai...@apple.com>
+
+ Linking device query ability from WebKit2 to clients
+ https://bugs.webkit.org/show_bug.cgi?id=147263
+ <rdar://problem/21983345>
+
+ Reviewed by Jer Noble.
+
+ * Platform/mac/LayerHostingContext.mm:
+ (WebKit::LayerHostingContext::setColorMatchUntaggedContent):
+ (WebKit::LayerHostingContext::colorMatchUntaggedContent):
+ * UIProcess/API/C/WKUserMediaPermissionRequest.cpp:
+ (WKUserMediaPermissionRequestAllow):
+ (WKUserMediaPermissionRequestDeviceNamesVideo):
+ (WKUserMediaPermissionRequestDeviceNamesAudio):
+ * UIProcess/API/C/WKUserMediaPermissionRequest.h:
+ * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
+ (WebKit::UserMediaPermissionRequestManagerProxy::didReceiveUserMediaPermissionDecision): Deleted.
+ * UIProcess/UserMediaPermissionRequestManagerProxy.h:
+ * UIProcess/UserMediaPermissionRequestProxy.cpp:
+ (WebKit::UserMediaPermissionRequestProxy::allow):
+ (WebKit::UserMediaPermissionRequestProxy::deny):
+ * UIProcess/UserMediaPermissionRequestProxy.h:
+ * WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
+ (WebKit::UserMediaPermissionRequestManager::didReceiveUserMediaPermissionDecision):
+
+
2015-08-12 Alexey Proskuryakov <a...@apple.com>
[Mac] WebKit processes should have access to com.apple.nesessionmanager.flow-divert-token
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKUserMediaPermissionRequest.cpp (188384 => 188385)
--- trunk/Source/WebKit2/UIProcess/API/C/WKUserMediaPermissionRequest.cpp 2015-08-13 17:25:01 UTC (rev 188384)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKUserMediaPermissionRequest.cpp 2015-08-13 17:33:43 UTC (rev 188385)
@@ -21,6 +21,9 @@
#include "UserMediaPermissionRequestProxy.h"
#include "WKAPICast.h"
+#include "WKArray.h"
+#include "WKMutableArray.h"
+#include "WKString.h"
using namespace WebKit;
@@ -29,12 +32,50 @@
return toAPI(UserMediaPermissionRequestProxy::APIType);
}
-void WKUserMediaPermissionRequestAllow(WKUserMediaPermissionRequestRef userMediaPermissionRequestRef)
+
+void WKUserMediaPermissionRequestAllowBest(WKUserMediaPermissionRequestRef userMediaPermissionRequestRef)
{
- toImpl(userMediaPermissionRequestRef)->allow();
+ const String& videoDevice = toImpl(userMediaPermissionRequestRef)->firstVideoDeviceUID();
+ const String& audioDevice = toImpl(userMediaPermissionRequestRef)->firstAudioDeviceUID();
+ toImpl(userMediaPermissionRequestRef)->allow(videoDevice, audioDevice);
}
+void WKUserMediaPermissionRequestAllow(WKUserMediaPermissionRequestRef userMediaPermissionRequestRef, WKStringRef videoDeviceUID, WKStringRef audioDeviceUID)
+{
+ toImpl(userMediaPermissionRequestRef)->allow(toWTFString(videoDeviceUID), toWTFString(audioDeviceUID));
+}
+
void WKUserMediaPermissionRequestDeny(WKUserMediaPermissionRequestRef userMediaPermissionRequestRef)
{
toImpl(userMediaPermissionRequestRef)->deny();
}
+
+WKArrayRef WKUserMediaPermissionRequestDeviceNamesVideo(WKUserMediaPermissionRequestRef userMediaPermissionRef)
+{
+ WKMutableArrayRef array = WKMutableArrayRef();
+ for (auto& name : toImpl(userMediaPermissionRef)->videoDeviceUIDs()) {
+ String deviceName = toImpl(userMediaPermissionRef)->getDeviceNameForUID(name, WebCore::RealtimeMediaSource::Type::Video);
+ WKArrayAppendItem(array, toAPI(API::String::create(deviceName).ptr()));
+ }
+ return array;
+}
+
+WKArrayRef WKUserMediaPermissionRequestDeviceNamesAudio(WKUserMediaPermissionRequestRef userMediaPermissionRef)
+{
+ WKMutableArrayRef array = WKMutableArrayRef();
+ for (auto& name : toImpl(userMediaPermissionRef)->audioDeviceUIDs()) {
+ String deviceName = toImpl(userMediaPermissionRef)->getDeviceNameForUID(name, WebCore::RealtimeMediaSource::Type::Audio);
+ WKArrayAppendItem(array, toAPI(API::String::create(deviceName).ptr()));
+ }
+ return array;
+}
+
+WKStringRef WKUserMediaPermissionRequestFirstVideoDeviceUID(WKUserMediaPermissionRequestRef userMediaPermissionRef)
+{
+ return !toImpl(userMediaPermissionRef)->videoDeviceUIDs().isEmpty() ? reinterpret_cast<WKStringRef>(WKArrayGetItemAtIndex(WKUserMediaPermissionRequestDeviceNamesVideo(userMediaPermissionRef), 0)) : reinterpret_cast<WKStringRef>(WKStringCreateWithUTF8CString(""));
+}
+
+WKStringRef WKUserMediaPermissionRequestFirstAudioDeviceUID(WKUserMediaPermissionRequestRef userMediaPermissionRef)
+{
+ return !toImpl(userMediaPermissionRef)->audioDeviceUIDs().isEmpty() ? reinterpret_cast<WKStringRef>(WKArrayGetItemAtIndex(WKUserMediaPermissionRequestDeviceNamesAudio(userMediaPermissionRef), 0)) : reinterpret_cast<WKStringRef>(WKStringCreateWithUTF8CString(""));
+}
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKUserMediaPermissionRequest.h (188384 => 188385)
--- trunk/Source/WebKit2/UIProcess/API/C/WKUserMediaPermissionRequest.h 2015-08-13 17:25:01 UTC (rev 188384)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKUserMediaPermissionRequest.h 2015-08-13 17:33:43 UTC (rev 188385)
@@ -27,9 +27,16 @@
WK_EXPORT WKTypeID WKUserMediaPermissionRequestGetTypeID();
-WK_EXPORT void WKUserMediaPermissionRequestAllow(WKUserMediaPermissionRequestRef);
+WK_EXPORT void WKUserMediaPermissionRequestAllowBest(WKUserMediaPermissionRequestRef);
+WK_EXPORT void WKUserMediaPermissionRequestAllow(WKUserMediaPermissionRequestRef, WKStringRef videoDeviceUID, WKStringRef audioDeviceUID);
WK_EXPORT void WKUserMediaPermissionRequestDeny(WKUserMediaPermissionRequestRef);
+WK_EXPORT WKArrayRef WKUserMediaPermissionRequestDeviceNamesVideo(WKUserMediaPermissionRequestRef);
+WK_EXPORT WKArrayRef WKUserMediaPermissionRequestDeviceNamesAudio(WKUserMediaPermissionRequestRef);
+
+WK_EXPORT WKStringRef WKUserMediaPermissionRequestFirstVideoDeviceUID(WKUserMediaPermissionRequestRef);
+WK_EXPORT WKStringRef WKUserMediaPermissionRequestFirstAudioDeviceUID(WKUserMediaPermissionRequestRef);
+
#ifdef __cplusplus
}
#endif
Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp (188384 => 188385)
--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp 2015-08-13 17:25:01 UTC (rev 188384)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp 2015-08-13 17:33:43 UTC (rev 188385)
@@ -70,9 +70,27 @@
return;
priv->madeDecision = true;
- priv->request->allow();
+
+ const String& videoDevice = priv->request->firstVideoDeviceUID();
+ const String& audioDevice = priv->request->firstAudioDeviceUID();
+
+ priv->request->allow(videoDevice, audioDevice);
}
+static void webkitUserMediaPermissionRequestAllow(WebKitPermissionRequest* request, const char* videoDeviceUID, const char* audioDeviceUID)
+{
+ ASSERT(WEBKIT_IS_USER_MEDIA_PERMISSION_REQUEST(request));
+
+ WebKitUserMediaPermissionRequestPrivate* priv = WEBKIT_USER_MEDIA_PERMISSION_REQUEST(request)->priv;
+
+ // Only one decision at a time.
+ if (priv->madeDecision)
+ return;
+
+ priv->madeDecision = true;
+ priv->request->allow(String::fromUTF8(videoDeviceUID), String::fromUTF8(audioDeviceUID));
+}
+
static void webkitUserMediaPermissionRequestDeny(WebKitPermissionRequest* request)
{
ASSERT(WEBKIT_IS_USER_MEDIA_PERMISSION_REQUEST(request));
Modified: trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.cpp (188384 => 188385)
--- trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.cpp 2015-08-13 17:25:01 UTC (rev 188384)
+++ trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.cpp 2015-08-13 17:33:43 UTC (rev 188385)
@@ -45,7 +45,7 @@
return request.release();
}
-void UserMediaPermissionRequestManagerProxy::didReceiveUserMediaPermissionDecision(uint64_t userMediaID, bool allowed)
+void UserMediaPermissionRequestManagerProxy::didReceiveUserMediaPermissionDecision(uint64_t userMediaID, bool allowed, const String& videoDeviceUID, const String& audioDeviceUID)
{
if (!m_page.isValid())
return;
@@ -54,8 +54,7 @@
return;
#if ENABLE(MEDIA_STREAM)
- // 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());
+ m_page.process().send(Messages::WebPage::DidReceiveUserMediaPermissionDecision(userMediaID, allowed, videoDeviceUID, audioDeviceUID), m_page.pageID());
#else
UNUSED_PARAM(allowed);
#endif
Modified: trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.h (188384 => 188385)
--- trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.h 2015-08-13 17:25:01 UTC (rev 188384)
+++ trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.h 2015-08-13 17:33:43 UTC (rev 188385)
@@ -36,7 +36,7 @@
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);
+ void didReceiveUserMediaPermissionDecision(uint64_t, bool allow, const String& videoDeviceUID, const String& audioDeviceUID);
private:
HashMap<uint64_t, RefPtr<UserMediaPermissionRequestProxy>> m_pendingRequests;
Modified: trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestProxy.cpp (188384 => 188385)
--- trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestProxy.cpp 2015-08-13 17:25:01 UTC (rev 188384)
+++ trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestProxy.cpp 2015-08-13 17:33:43 UTC (rev 188385)
@@ -36,14 +36,14 @@
{
}
-void UserMediaPermissionRequestProxy::allow()
+void UserMediaPermissionRequestProxy::allow(const String& videoDeviceUID, const String& audioDeviceUID)
{
- m_manager.didReceiveUserMediaPermissionDecision(m_userMediaID, true);
+ m_manager.didReceiveUserMediaPermissionDecision(m_userMediaID, true, videoDeviceUID, audioDeviceUID);
}
void UserMediaPermissionRequestProxy::deny()
{
- m_manager.didReceiveUserMediaPermissionDecision(m_userMediaID, false);
+ m_manager.didReceiveUserMediaPermissionDecision(m_userMediaID, false, emptyString(), emptyString());
}
void UserMediaPermissionRequestProxy::invalidate()
Modified: trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestProxy.h (188384 => 188385)
--- trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestProxy.h 2015-08-13 17:25:01 UTC (rev 188384)
+++ trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestProxy.h 2015-08-13 17:33:43 UTC (rev 188385)
@@ -36,7 +36,7 @@
return adoptRef(new UserMediaPermissionRequestProxy(manager, userMediaID, requiresAudio, requiresVideo, deviceUIDsVideo, deviceUIDsAudio));
}
- void allow();
+ void allow(const String& videoDeviceUID, const String& audioDeviceUID);
void deny();
void invalidate();
@@ -50,6 +50,9 @@
const Vector<String>& videoDeviceUIDs() const { return m_videoDeviceUIDs; }
const Vector<String>& audioDeviceUIDs() const { return m_audiodeviceUIDs; }
+
+ const String& firstVideoDeviceUID() const { return !videoDeviceUIDs().isEmpty() ? videoDeviceUIDs().at(0) : emptyString(); }
+ const String& firstAudioDeviceUID() const { return !audioDeviceUIDs().isEmpty() ? audioDeviceUIDs().at(0) : emptyString(); }
private:
UserMediaPermissionRequestProxy(UserMediaPermissionRequestManagerProxy&, uint64_t userMediaID, bool requiresAudio, bool requiresVideo, const Vector<String>& deviceUIDsVideo, const Vector<String>& deviceUIDsAudio);
Modified: trunk/Source/WebKit2/WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp (188384 => 188385)
--- trunk/Source/WebKit2/WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp 2015-08-13 17:25:01 UTC (rev 188384)
+++ trunk/Source/WebKit2/WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp 2015-08-13 17:33:43 UTC (rev 188385)
@@ -82,7 +82,7 @@
m_requestToIDMap.remove(request);
if (allowed)
- request->userMediaAccessGranted();
+ request->userMediaAccessGranted(deviceUIDVideo, deviceUIDAudio);
else
request->userMediaAccessDenied();
}
Modified: trunk/Tools/TestWebKitAPI/Tests/WebKit2/UserMedia.cpp (188384 => 188385)
--- trunk/Tools/TestWebKitAPI/Tests/WebKit2/UserMedia.cpp 2015-08-13 17:25:01 UTC (rev 188384)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKit2/UserMedia.cpp 2015-08-13 17:33:43 UTC (rev 188385)
@@ -34,7 +34,7 @@
void decidePolicyForUserMediaPermissionRequestCallBack(WKPageRef, WKFrameRef, WKSecurityOriginRef, WKUserMediaPermissionRequestRef permissionRequest, const void* /* clientInfo */)
{
- WKUserMediaPermissionRequestAllow(permissionRequest);
+ WKUserMediaPermissionRequestAllowBest(permissionRequest);
done = true;
}
Modified: trunk/Tools/WebKitTestRunner/TestController.cpp (188384 => 188385)
--- trunk/Tools/WebKitTestRunner/TestController.cpp 2015-08-13 17:25:01 UTC (rev 188384)
+++ trunk/Tools/WebKitTestRunner/TestController.cpp 2015-08-13 17:33:43 UTC (rev 188385)
@@ -31,6 +31,7 @@
#include "PlatformWebView.h"
#include "StringFunctions.h"
#include "TestInvocation.h"
+#include <WebKit/WKArray.h>
#include <WebKit/WKAuthenticationChallenge.h>
#include <WebKit/WKAuthenticationDecisionListener.h>
#include <WebKit/WKContextConfigurationRef.h>
@@ -1492,9 +1493,10 @@
return;
for (auto& request : m_userMediaPermissionRequests) {
- if (m_isUserMediaPermissionAllowed)
- WKUserMediaPermissionRequestAllow(request.get());
- else
+ if (m_isUserMediaPermissionAllowed) {
+ if (WKArrayGetSize(WKUserMediaPermissionRequestDeviceNamesVideo(request.get())) || WKArrayGetSize(WKUserMediaPermissionRequestDeviceNamesAudio(request.get())))
+ WKUserMediaPermissionRequestAllow(request.get(), WKUserMediaPermissionRequestFirstVideoDeviceUID(request.get()), WKUserMediaPermissionRequestFirstAudioDeviceUID(request.get()));
+ } else
WKUserMediaPermissionRequestDeny(request.get());
}
m_userMediaPermissionRequests.clear();