Title: [216550] trunk
Revision
216550
Author
commit-qu...@webkit.org
Date
2017-05-09 15:35:58 -0700 (Tue, 09 May 2017)

Log Message

Unreviewed, rolling out r216545.
https://bugs.webkit.org/show_bug.cgi?id=171889

Caused a test failure (Requested by eric_carlson on #webkit).

Reverted changeset:

"[MediaStream] deviceId constraint doesn't work with
getUserMedia"
https://bugs.webkit.org/show_bug.cgi?id=171877
http://trac.webkit.org/changeset/216545

Modified Paths

Removed Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (216549 => 216550)


--- trunk/LayoutTests/ChangeLog	2017-05-09 22:30:11 UTC (rev 216549)
+++ trunk/LayoutTests/ChangeLog	2017-05-09 22:35:58 UTC (rev 216550)
@@ -1,3 +1,17 @@
+2017-05-09  Commit Queue  <commit-qu...@webkit.org>
+
+        Unreviewed, rolling out r216545.
+        https://bugs.webkit.org/show_bug.cgi?id=171889
+
+        Caused a test failure (Requested by eric_carlson on #webkit).
+
+        Reverted changeset:
+
+        "[MediaStream] deviceId constraint doesn't work with
+        getUserMedia"
+        https://bugs.webkit.org/show_bug.cgi?id=171877
+        http://trac.webkit.org/changeset/216545
+
 2017-05-09  Zalan Bujtas  <za...@apple.com>
 
         resetFlowThreadContainingBlockAndChildInfoIncludingDescendants should not ignore RenderElement subtrees.

Deleted: trunk/LayoutTests/fast/mediastream/get-user-media-device-id-expected.txt (216549 => 216550)


--- trunk/LayoutTests/fast/mediastream/get-user-media-device-id-expected.txt	2017-05-09 22:30:11 UTC (rev 216549)
+++ trunk/LayoutTests/fast/mediastream/get-user-media-device-id-expected.txt	2017-05-09 22:35:58 UTC (rev 216550)
@@ -1,5 +0,0 @@
-
-PASS Collect device IDs 
-PASS Pass device IDs as exact constraints 
-PASS Pass device IDs as optional constraints 
-

Deleted: trunk/LayoutTests/fast/mediastream/get-user-media-device-id.html (216549 => 216550)


--- trunk/LayoutTests/fast/mediastream/get-user-media-device-id.html	2017-05-09 22:30:11 UTC (rev 216549)
+++ trunk/LayoutTests/fast/mediastream/get-user-media-device-id.html	2017-05-09 22:35:58 UTC (rev 216550)
@@ -1,56 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <meta charset="utf-8">
-    <title>Test passing capture device IDs to getUserMedia</title>
-    <script src=""
-    <script src=""
-    <script>
-    let deviceIds = [];
-
-    if (window.testRunner)
-        testRunner.setUserMediaPermission(true);
-
-    promise_test((test) => {
-        return navigator.mediaDevices.enumerateDevices()
-            .then((devices) => {
-                devices.forEach((device) => {
-                    let kind = device.kind == "audioinput" ? "audio" : "video";
-                    deviceIds.push({ type: kind, id : device.deviceId});
-                });
-            });
-    }, "Collect device IDs");
-    
-    let constraints = { };
-
-    promise_test((test) => {
-        deviceIds.forEach((info) => {
-            constraints[info.type] = { deviceId: { exact: info.id } };
-        });
-    
-        return navigator.mediaDevices.getUserMedia(constraints)
-            .then((stream) => {
-                assert_equals(stream.getAudioTracks().length, 1, "correct number of audio tracks");
-                assert_equals(stream.getVideoTracks().length, 1, "correct number of audio tracks");
-            })
-
-    }, "Pass device IDs as exact constraints");
-    
-    promise_test((test) => {
-        deviceIds.forEach((info) => {
-            constraints[info.type] = { deviceId: info.id };
-        });
-    
-        return navigator.mediaDevices.getUserMedia(constraints)
-            .then((stream) => {
-                assert_equals(stream.getAudioTracks().length, 1, "correct number of audio tracks");
-                assert_equals(stream.getVideoTracks().length, 1, "correct number of audio tracks");
-            })
-
-    }, "Pass device IDs as optional constraints");
-
-    </script>
-</head>
-<body>
-</body>
-</html>

Modified: trunk/Source/WebCore/ChangeLog (216549 => 216550)


--- trunk/Source/WebCore/ChangeLog	2017-05-09 22:30:11 UTC (rev 216549)
+++ trunk/Source/WebCore/ChangeLog	2017-05-09 22:35:58 UTC (rev 216550)
@@ -1,3 +1,17 @@
+2017-05-09  Commit Queue  <commit-qu...@webkit.org>
+
+        Unreviewed, rolling out r216545.
+        https://bugs.webkit.org/show_bug.cgi?id=171889
+
+        Caused a test failure (Requested by eric_carlson on #webkit).
+
+        Reverted changeset:
+
+        "[MediaStream] deviceId constraint doesn't work with
+        getUserMedia"
+        https://bugs.webkit.org/show_bug.cgi?id=171877
+        http://trac.webkit.org/changeset/216545
+
 2017-05-09  Zalan Bujtas  <za...@apple.com>
 
         resetFlowThreadContainingBlockAndChildInfoIncludingDescendants should not ignore RenderElement subtrees.

Modified: trunk/Source/WebCore/Modules/mediastream/MediaConstraintsImpl.h (216549 => 216550)


--- trunk/Source/WebCore/Modules/mediastream/MediaConstraintsImpl.h	2017-05-09 22:30:11 UTC (rev 216549)
+++ trunk/Source/WebCore/Modules/mediastream/MediaConstraintsImpl.h	2017-05-09 22:35:58 UTC (rev 216550)
@@ -46,20 +46,6 @@
         , isValid(isValid)
     {
     }
-    MediaConstraintsData(const MediaConstraints& constraints)
-        : mandatoryConstraints(constraints.mandatoryConstraints())
-        , advancedConstraints(constraints.advancedConstraints())
-        , deviceIDHashSalt(constraints.deviceIDHashSalt())
-        , isValid(constraints.isValid())
-    {
-    }
-    MediaConstraintsData(const MediaConstraintsData& constraints, const String& hashSalt)
-        : mandatoryConstraints(constraints.mandatoryConstraints)
-        , advancedConstraints(constraints.advancedConstraints)
-        , deviceIDHashSalt(hashSalt)
-        , isValid(constraints.isValid)
-    {
-    }
 
     void setDefaultVideoConstraints();
     bool isConstraintSet(std::function<bool(const MediaTrackConstraintSetMap&)>&&);
@@ -66,7 +52,6 @@
 
     MediaTrackConstraintSetMap mandatoryConstraints;
     Vector<MediaTrackConstraintSetMap> advancedConstraints;
-    String deviceIDHashSalt;
     bool isValid { false };
 };
 
@@ -81,11 +66,8 @@
     const MediaTrackConstraintSetMap& mandatoryConstraints() const final { return m_data.mandatoryConstraints; }
     const Vector<MediaTrackConstraintSetMap>& advancedConstraints() const final { return m_data.advancedConstraints; }
     bool isValid() const final { return m_data.isValid; }
+    const MediaConstraintsData& data() const { return m_data; }
 
-    String deviceIDHashSalt() const final { return m_data.deviceIDHashSalt; }
-    void setDeviceIDHashSalt(const String& salt) final { m_data.deviceIDHashSalt = salt; }
-
-    const MediaConstraintsData& data() const { return m_data; }
     void setDefaultVideoConstraints() { m_data.setDefaultVideoConstraints(); }
 
 private:

Modified: trunk/Source/WebCore/Modules/mediastream/MediaDevicesEnumerationRequest.cpp (216549 => 216550)


--- trunk/Source/WebCore/Modules/mediastream/MediaDevicesEnumerationRequest.cpp	2017-05-09 22:30:11 UTC (rev 216549)
+++ trunk/Source/WebCore/Modules/mediastream/MediaDevicesEnumerationRequest.cpp	2017-05-09 22:35:58 UTC (rev 216550)
@@ -65,6 +65,11 @@
     if (!scriptExecutionContext())
         return nullptr;
 
+    if (Frame* frame = downcast<Document>(*scriptExecutionContext()).frame()) {
+        if (frame->isMainFrame())
+            return nullptr;
+    }
+
     return &scriptExecutionContext()->topOrigin();
 }
 

Modified: trunk/Source/WebCore/Modules/mediastream/UserMediaController.h (216549 => 216550)


--- trunk/Source/WebCore/Modules/mediastream/UserMediaController.h	2017-05-09 22:30:11 UTC (rev 216549)
+++ trunk/Source/WebCore/Modules/mediastream/UserMediaController.h	2017-05-09 22:35:58 UTC (rev 216550)
@@ -46,11 +46,15 @@
     void enumerateMediaDevices(MediaDevicesEnumerationRequest&);
     void cancelMediaDevicesEnumerationRequest(MediaDevicesEnumerationRequest&);
 
+    void setDeviceIDHashSalt(const String& salt) { m_idHashSalt = salt; }
+    String deviceIDHashSalt() const { return m_idHashSalt; }
+
     WEBCORE_EXPORT static const char* supplementName();
     static UserMediaController* from(Page* page) { return static_cast<UserMediaController*>(Supplement<Page>::from(page, supplementName())); }
 
 private:
     UserMediaClient* m_client;
+    String m_idHashSalt;
 };
 
 inline void UserMediaController::requestUserMediaAccess(UserMediaRequest& request)

Modified: trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.cpp (216549 => 216550)


--- trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.cpp	2017-05-09 22:30:11 UTC (rev 216549)
+++ trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.cpp	2017-05-09 22:35:58 UTC (rev 216550)
@@ -153,7 +153,7 @@
     m_controller->requestUserMediaAccess(*this);
 }
 
-void UserMediaRequest::allow(const String& audioDeviceUID, const String& videoDeviceUID, const String& deviceIdentifierHashSalt)
+void UserMediaRequest::allow(const String& audioDeviceUID, const String& videoDeviceUID)
 {
     m_allowedAudioDeviceUID = audioDeviceUID;
     m_allowedVideoDeviceUID = videoDeviceUID;
@@ -180,9 +180,6 @@
         m_promise.resolve(stream);
     };
 
-    m_audioConstraints->setDeviceIDHashSalt(deviceIdentifierHashSalt);
-    m_videoConstraints->setDeviceIDHashSalt(deviceIdentifierHashSalt);
-
     RealtimeMediaSourceCenter::singleton().createMediaStream(WTFMove(callback), m_allowedAudioDeviceUID, m_allowedVideoDeviceUID, &m_audioConstraints.get(), &m_videoConstraints.get());
 }
 

Modified: trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.h (216549 => 216550)


--- trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.h	2017-05-09 22:30:11 UTC (rev 216549)
+++ trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.h	2017-05-09 22:35:58 UTC (rev 216550)
@@ -53,7 +53,7 @@
     void start();
 
     WEBCORE_EXPORT void setAllowedMediaDeviceUIDs(const String& audioDeviceUID, const String& videoDeviceUID);
-    WEBCORE_EXPORT void allow(const String& audioDeviceUID, const String& videoDeviceUID, const String& deviceIdentifierHashSalt);
+    WEBCORE_EXPORT void allow(const String& audioDeviceUID, const String& videoDeviceUID);
 
     enum MediaAccessDenialReason { NoConstraints, UserMediaDisabled, NoCaptureDevices, InvalidConstraint, HardwareError, PermissionDenied, OtherFailure };
     WEBCORE_EXPORT void deny(MediaAccessDenialReason, const String& invalidConstraint);

Modified: trunk/Source/WebCore/platform/mediastream/MediaConstraints.h (216549 => 216550)


--- trunk/Source/WebCore/platform/mediastream/MediaConstraints.h	2017-05-09 22:30:11 UTC (rev 216549)
+++ trunk/Source/WebCore/platform/mediastream/MediaConstraints.h	2017-05-09 22:35:58 UTC (rev 216550)
@@ -811,9 +811,6 @@
     virtual const Vector<MediaTrackConstraintSetMap>& advancedConstraints() const = 0;
     virtual bool isValid() const = 0;
 
-    virtual String deviceIDHashSalt() const = 0;
-    virtual void setDeviceIDHashSalt(const String&) = 0;
-
 protected:
     MediaConstraints() { }
 };

Modified: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp (216549 => 216550)


--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp	2017-05-09 22:30:11 UTC (rev 216549)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp	2017-05-09 22:35:58 UTC (rev 216550)
@@ -39,7 +39,6 @@
 #include "MediaConstraints.h"
 #include "NotImplemented.h"
 #include "RealtimeMediaSourceCapabilities.h"
-#include "RealtimeMediaSourceCenter.h"
 #include <wtf/MainThread.h>
 #include <wtf/UUID.h>
 #include <wtf/text/StringHash.h>
@@ -342,7 +341,11 @@
     }
 
     case MediaConstraintType::DeviceId: {
-        ASSERT_NOT_REACHED();
+        ASSERT(constraint.isString());
+        if (!capabilities.supportsDeviceId())
+            return 0;
+
+        return downcast<StringConstraint>(constraint).fitnessDistance(m_id);
         break;
     }
 
@@ -538,23 +541,6 @@
             return false;
         }
 
-        // The deviceId can't be changed, and the constraint value is the hashed device ID, so verify that the
-        // device's unique ID hashes to the constraint value but don't include the constraint in the flattened
-        // constraint set.
-        if (constraint.constraintType() == MediaConstraintType::DeviceId) {
-            ASSERT(constraint.isString());
-            ASSERT(!constraints.deviceIDHashSalt().isEmpty());
-
-            auto hashedID = RealtimeMediaSourceCenter::singleton().hashStringWithSalt(m_persistentID, constraints.deviceIDHashSalt());
-            double constraintDistance = downcast<StringConstraint>(constraint).fitnessDistance(hashedID);
-            if (std::isinf(constraintDistance)) {
-                failedConstraint = constraint.name();
-                return true;
-            }
-
-            return false;
-        }
-
         double constraintDistance = fitnessDistance(constraint);
         if (std::isinf(constraintDistance)) {
             failedConstraint = constraint.name();

Modified: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceSupportedConstraints.cpp (216549 => 216550)


--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceSupportedConstraints.cpp	2017-05-09 22:30:11 UTC (rev 216549)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceSupportedConstraints.cpp	2017-05-09 22:35:58 UTC (rev 216550)
@@ -35,6 +35,72 @@
 
 namespace WebCore {
 
+const AtomicString& RealtimeMediaSourceSupportedConstraints::nameForConstraint(MediaConstraintType constraint)
+{
+    static NeverDestroyed<AtomicString> unknownConstraintName(emptyString());
+    static NeverDestroyed<AtomicString> widthConstraintName("width");
+    static NeverDestroyed<AtomicString> heightConstraintName("height");
+    static NeverDestroyed<AtomicString> aspectRatioConstraintName("aspectRatio");
+    static NeverDestroyed<AtomicString> frameRateConstraintName("frameRate");
+    static NeverDestroyed<AtomicString> facingModeConstraintName("facingMode");
+    static NeverDestroyed<AtomicString> volumeConstraintName("volume");
+    static NeverDestroyed<AtomicString> sampleRateConstraintName("sampleRate");
+    static NeverDestroyed<AtomicString> sampleSizeConstraintName("sampleSize");
+    static NeverDestroyed<AtomicString> echoCancellationConstraintName("echoCancellation");
+    static NeverDestroyed<AtomicString> deviceIdConstraintName("deviceId");
+    static NeverDestroyed<AtomicString> groupIdConstraintName("groupId");
+    switch (constraint) {
+    case MediaConstraintType::Unknown:
+        return unknownConstraintName;
+    case MediaConstraintType::Width:
+        return widthConstraintName;
+    case MediaConstraintType::Height:
+        return heightConstraintName;
+    case MediaConstraintType::AspectRatio:
+        return aspectRatioConstraintName;
+    case MediaConstraintType::FrameRate:
+        return frameRateConstraintName;
+    case MediaConstraintType::FacingMode:
+        return facingModeConstraintName;
+    case MediaConstraintType::Volume:
+        return volumeConstraintName;
+    case MediaConstraintType::SampleRate:
+        return sampleRateConstraintName;
+    case MediaConstraintType::SampleSize:
+        return sampleSizeConstraintName;
+    case MediaConstraintType::EchoCancellation:
+        return echoCancellationConstraintName;
+    case MediaConstraintType::DeviceId:
+        return deviceIdConstraintName;
+    case MediaConstraintType::GroupId:
+        return groupIdConstraintName;
+    }
+
+    ASSERT_NOT_REACHED();
+    return emptyAtom;
+}
+
+MediaConstraintType RealtimeMediaSourceSupportedConstraints::constraintFromName(const String& constraintName)
+{
+    static NeverDestroyed<HashMap<AtomicString, MediaConstraintType>> nameToConstraintMap;
+    HashMap<AtomicString, MediaConstraintType>& nameToConstraintMapValue = nameToConstraintMap.get();
+    if (!nameToConstraintMapValue.size()) {
+        nameToConstraintMapValue.add("width", MediaConstraintType::Width);
+        nameToConstraintMapValue.add("height", MediaConstraintType::Height);
+        nameToConstraintMapValue.add("aspectRatio", MediaConstraintType::AspectRatio);
+        nameToConstraintMapValue.add("frameRate", MediaConstraintType::FrameRate);
+        nameToConstraintMapValue.add("facingMode", MediaConstraintType::FacingMode);
+        nameToConstraintMapValue.add("volume", MediaConstraintType::Volume);
+        nameToConstraintMapValue.add("sampleRate", MediaConstraintType::SampleRate);
+        nameToConstraintMapValue.add("sampleSize", MediaConstraintType::SampleSize);
+        nameToConstraintMapValue.add("echoCancellation", MediaConstraintType::EchoCancellation);
+        nameToConstraintMapValue.add("deviceId", MediaConstraintType::DeviceId);
+        nameToConstraintMapValue.add("groupId", MediaConstraintType::GroupId);
+    }
+    auto iter = nameToConstraintMapValue.find(constraintName);
+    return iter == nameToConstraintMapValue.end() ? MediaConstraintType::Unknown : iter->value;
+}
+
 bool RealtimeMediaSourceSupportedConstraints::supportsConstraint(MediaConstraintType constraint) const
 {
     switch (constraint) {

Modified: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceSupportedConstraints.h (216549 => 216550)


--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceSupportedConstraints.h	2017-05-09 22:30:11 UTC (rev 216549)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceSupportedConstraints.h	2017-05-09 22:35:58 UTC (rev 216550)
@@ -93,6 +93,9 @@
 
     bool supportsConstraint(MediaConstraintType) const;
 
+    static const AtomicString& nameForConstraint(MediaConstraintType);
+    static MediaConstraintType constraintFromName(const String&);
+
     template<class Encoder> void encode(Encoder&) const;
     template<class Decoder> static bool decode(Decoder&, RealtimeMediaSourceSupportedConstraints&);
 

Modified: trunk/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm (216549 => 216550)


--- trunk/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm	2017-05-09 22:30:11 UTC (rev 216549)
+++ trunk/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm	2017-05-09 22:35:58 UTC (rev 216550)
@@ -116,7 +116,7 @@
         AVCaptureDeviceTypedef *device = [getAVCaptureDeviceClass() deviceWithUniqueID:deviceID];
         if (!device)
             return { };
-        return AVVideoCaptureSource::create(device, deviceID, constraints);
+        return AVVideoCaptureSource::create(device, emptyString(), constraints);
     }
 
 #if PLATFORM(IOS)

Modified: trunk/Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp (216549 => 216550)


--- trunk/Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp	2017-05-09 22:30:11 UTC (rev 216549)
+++ trunk/Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp	2017-05-09 22:35:58 UTC (rev 216550)
@@ -191,7 +191,6 @@
     for (auto& device : bestSources)
         sourceUIDs.uncheckedAppend(device->persistentID());
 
-    invalidConstraint = emptyString();
     return sourceUIDs;
 }
 

Modified: trunk/Source/WebKit2/ChangeLog (216549 => 216550)


--- trunk/Source/WebKit2/ChangeLog	2017-05-09 22:30:11 UTC (rev 216549)
+++ trunk/Source/WebKit2/ChangeLog	2017-05-09 22:35:58 UTC (rev 216550)
@@ -1,3 +1,17 @@
+2017-05-09  Commit Queue  <commit-qu...@webkit.org>
+
+        Unreviewed, rolling out r216545.
+        https://bugs.webkit.org/show_bug.cgi?id=171889
+
+        Caused a test failure (Requested by eric_carlson on #webkit).
+
+        Reverted changeset:
+
+        "[MediaStream] deviceId constraint doesn't work with
+        getUserMedia"
+        https://bugs.webkit.org/show_bug.cgi?id=171877
+        http://trac.webkit.org/changeset/216545
+
 2017-05-09  Eric Carlson  <eric.carl...@apple.com>
 
         [MediaStream] deviceId constraint doesn't work with getUserMedia

Modified: trunk/Source/WebKit2/Shared/WebCoreArgumentCoders.cpp (216549 => 216550)


--- trunk/Source/WebKit2/Shared/WebCoreArgumentCoders.cpp	2017-05-09 22:30:11 UTC (rev 216549)
+++ trunk/Source/WebKit2/Shared/WebCoreArgumentCoders.cpp	2017-05-09 22:35:58 UTC (rev 216550)
@@ -2393,7 +2393,6 @@
 {
     encoder << constraint.mandatoryConstraints
         << constraint.advancedConstraints
-        << constraint.deviceIDHashSalt
         << constraint.isValid;
 }
 
@@ -2401,7 +2400,6 @@
 {
     return decoder.decode(constraints.mandatoryConstraints)
         && decoder.decode(constraints.advancedConstraints)
-        && decoder.decode(constraints.deviceIDHashSalt)
         && decoder.decode(constraints.isValid);
 }
 

Modified: trunk/Source/WebKit2/UIProcess/UserMediaPermissionCheckProxy.cpp (216549 => 216550)


--- trunk/Source/WebKit2/UIProcess/UserMediaPermissionCheckProxy.cpp	2017-05-09 22:30:11 UTC (rev 216549)
+++ trunk/Source/WebKit2/UIProcess/UserMediaPermissionCheckProxy.cpp	2017-05-09 22:35:58 UTC (rev 216550)
@@ -27,34 +27,28 @@
 #include "UserMediaPermissionCheckProxy.h"
 
 #include "UserMediaPermissionRequestManagerProxy.h"
-#include <WebCore/SecurityOrigin.h>
-#include <WebCore/SecurityOriginData.h>
 
-using namespace WebCore;
-
 namespace WebKit {
 
-UserMediaPermissionCheckProxy::UserMediaPermissionCheckProxy(uint64_t userMediaID, uint64_t frameID, CompletionHandler&& handler, const String& userMediaDocumentOriginIdentifier, const String& topLevelDocumentOriginIdentifier)
-    : m_userMediaID(userMediaID)
-    , m_frameID(frameID)
-    , m_completionHandler(WTFMove(handler))
-    , m_userMediaDocumentSecurityOrigin((SecurityOriginData::fromDatabaseIdentifier(userMediaDocumentOriginIdentifier)->securityOrigin()))
-    , m_topLevelDocumentSecurityOrigin(SecurityOriginData::fromDatabaseIdentifier(topLevelDocumentOriginIdentifier)->securityOrigin())
+UserMediaPermissionCheckProxy::UserMediaPermissionCheckProxy(UserMediaPermissionRequestManagerProxy& manager, uint64_t userMediaID)
+    : m_manager(&manager)
+    , m_userMediaID(userMediaID)
 {
 }
 
 void UserMediaPermissionCheckProxy::setUserMediaAccessInfo(const String& mediaDeviceIdentifierHashSalt, bool allowed)
 {
-    if (!m_completionHandler)
+    ASSERT(m_manager);
+    if (!m_manager)
         return;
 
-    m_completionHandler(m_userMediaID, mediaDeviceIdentifierHashSalt, allowed);
-    m_completionHandler = nullptr;
+    m_manager->didCompleteUserMediaPermissionCheck(m_userMediaID, mediaDeviceIdentifierHashSalt, allowed);
+    m_manager = nullptr;
 }
 
 void UserMediaPermissionCheckProxy::invalidate()
 {
-    m_completionHandler = nullptr;
+    m_manager = nullptr;
 }
 
 } // namespace WebKit

Modified: trunk/Source/WebKit2/UIProcess/UserMediaPermissionCheckProxy.h (216549 => 216550)


--- trunk/Source/WebKit2/UIProcess/UserMediaPermissionCheckProxy.h	2017-05-09 22:30:11 UTC (rev 216549)
+++ trunk/Source/WebKit2/UIProcess/UserMediaPermissionCheckProxy.h	2017-05-09 22:35:58 UTC (rev 216550)
@@ -29,10 +29,6 @@
 #include "APIObject.h"
 #include <wtf/text/WTFString.h>
 
-namespace WebCore {
-class SecurityOrigin;
-}
-
 namespace WebKit {
 
 class UserMediaPermissionRequestManagerProxy;
@@ -39,29 +35,19 @@
 
 class UserMediaPermissionCheckProxy : public API::ObjectImpl<API::Object::Type::UserMediaPermissionCheck> {
 public:
-
-    using CompletionHandler = std::function<void(uint64_t, const String&, bool allowed)>;
-
-    static Ref<UserMediaPermissionCheckProxy> create(uint64_t userMediaID, uint64_t frameID, CompletionHandler&& handler, const String& userMediaDocumentOriginIdentifier, const String& topLevelDocumentOriginIdentifier)
+    static Ref<UserMediaPermissionCheckProxy> create(UserMediaPermissionRequestManagerProxy& manager, uint64_t userMediaID)
     {
-        return adoptRef(*new UserMediaPermissionCheckProxy(userMediaID, frameID, WTFMove(handler), userMediaDocumentOriginIdentifier, topLevelDocumentOriginIdentifier));
+        return adoptRef(*new UserMediaPermissionCheckProxy(manager, userMediaID));
     }
 
     void setUserMediaAccessInfo(const String&, bool allowed);
     void invalidate();
 
-    uint64_t frameID() const { return m_frameID; }
-    WebCore::SecurityOrigin* userMediaDocumentSecurityOrigin() { return &m_userMediaDocumentSecurityOrigin.get(); }
-    WebCore::SecurityOrigin* topLevelDocumentSecurityOrigin() { return &m_topLevelDocumentSecurityOrigin.get(); }
-
 private:
-    UserMediaPermissionCheckProxy(uint64_t userMediaID, uint64_t frameID, CompletionHandler&&, const String& userMediaDocumentOriginIdentifier, const String& topLevelDocumentOriginIdentifier);
+    UserMediaPermissionCheckProxy(UserMediaPermissionRequestManagerProxy&, uint64_t);
 
+    UserMediaPermissionRequestManagerProxy* m_manager;
     uint64_t m_userMediaID;
-    uint64_t m_frameID;
-    CompletionHandler m_completionHandler;
-    Ref<WebCore::SecurityOrigin> m_userMediaDocumentSecurityOrigin;
-    Ref<WebCore::SecurityOrigin> m_topLevelDocumentSecurityOrigin;
 };
 
 } // namespace WebKit

Modified: trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.cpp (216549 => 216550)


--- trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.cpp	2017-05-09 22:30:11 UTC (rev 216549)
+++ trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.cpp	2017-05-09 22:35:58 UTC (rev 216550)
@@ -39,9 +39,9 @@
 
 namespace WebKit {
 
-FrameAuthorizationState::FrameAuthorizationState(SecurityOrigin* userMediaDocumentSecurityOrigin, SecurityOrigin* topLevelDocumentSecurityOrigin)
-    : m_userMediaDocumentSecurityOrigin(userMediaDocumentSecurityOrigin)
-    , m_topLevelDocumentSecurityOrigin(topLevelDocumentSecurityOrigin)
+FrameAuthorizationState::FrameAuthorizationState(UserMediaPermissionRequestProxy& request)
+    : m_userMediaDocumentSecurityOrigin(request.userMediaDocumentSecurityOrigin())
+    , m_topLevelDocumentSecurityOrigin(request.topLevelDocumentSecurityOrigin())
 {
 }
 
@@ -65,34 +65,32 @@
         m_authorizedDeviceUIDs.remove(index);
 }
 
-void FrameAuthorizationState::ensureSecurityOriginsAreEqual(WebCore::SecurityOrigin* userMediaDocumentSecurityOrigin, WebCore::SecurityOrigin* topLevelDocumentSecurityOrigin)
+void FrameAuthorizationState::ensureSecurityOriginsAreEqual(UserMediaPermissionRequestProxy& request)
 {
     do {
-        if (!m_userMediaDocumentSecurityOrigin || !m_userMediaDocumentSecurityOrigin->equal(userMediaDocumentSecurityOrigin))
+        if (!m_userMediaDocumentSecurityOrigin || !m_userMediaDocumentSecurityOrigin->equal(request.userMediaDocumentSecurityOrigin()))
             break;
 
-        if (!m_topLevelDocumentSecurityOrigin || !m_topLevelDocumentSecurityOrigin->equal(topLevelDocumentSecurityOrigin))
+        if (!m_topLevelDocumentSecurityOrigin || !m_topLevelDocumentSecurityOrigin->equal(request.topLevelDocumentSecurityOrigin()))
             break;
 
         return;
     } while (0);
 
-    m_userMediaDocumentSecurityOrigin = userMediaDocumentSecurityOrigin;
-    m_topLevelDocumentSecurityOrigin = topLevelDocumentSecurityOrigin;
+    m_userMediaDocumentSecurityOrigin = request.userMediaDocumentSecurityOrigin();
+    m_topLevelDocumentSecurityOrigin = request.topLevelDocumentSecurityOrigin();
     m_authorizedDeviceUIDs.clear();
-    m_deviceIdentifierHashSalt = emptyString();
 }
 
-template <typename RequestType>
-FrameAuthorizationState& UserMediaPermissionRequestManagerProxy::stateForRequest(RequestType& request)
+FrameAuthorizationState& UserMediaPermissionRequestManagerProxy::stateForRequest(UserMediaPermissionRequestProxy& request)
 {
     auto& state = m_frameStates.add(request.frameID(), nullptr).iterator->value;
     if (state) {
-        state->ensureSecurityOriginsAreEqual(request.userMediaDocumentSecurityOrigin(), request.topLevelDocumentSecurityOrigin());
+        state->ensureSecurityOriginsAreEqual(request);
         return *state;
     }
 
-    state = std::make_unique<FrameAuthorizationState>(request.userMediaDocumentSecurityOrigin(), request.topLevelDocumentSecurityOrigin());
+    state = std::make_unique<FrameAuthorizationState>(request);
     return *state;
 }
 
@@ -185,11 +183,11 @@
     if (!request)
         return;
 
-    auto frameState = stateForRequest(*request);
+    auto fameState = stateForRequest(*request);
     for (const auto& deviceUID : request->videoDeviceUIDs())
-        frameState.setHasPermissionToUseCaptureDevice(deviceUID, false);
+        fameState.setHasPermissionToUseCaptureDevice(deviceUID, false);
     for (const auto& deviceUID : request->audioDeviceUIDs())
-        frameState.setHasPermissionToUseCaptureDevice(deviceUID, false);
+        fameState.setHasPermissionToUseCaptureDevice(deviceUID, false);
 
     denyRequest(userMediaID, reason, emptyString());
 }
@@ -218,15 +216,13 @@
     if (!request)
         return;
 
-    auto& frameState = stateForRequest(*request);
-    if (!audioDeviceUID.isEmpty())
-        frameState.setHasPermissionToUseCaptureDevice(audioDeviceUID, true);
-    if (!videoDeviceUID.isEmpty())
-        frameState.setHasPermissionToUseCaptureDevice(videoDeviceUID, true);
+    auto& fameState = stateForRequest(*request);
+    fameState.setHasPermissionToUseCaptureDevice(audioDeviceUID, true);
+    fameState.setHasPermissionToUseCaptureDevice(videoDeviceUID, true);
 
     UserMediaProcessManager::singleton().willCreateMediaStream(*this, !audioDeviceUID.isEmpty(), !videoDeviceUID.isEmpty());
 
-    m_page.process().send(Messages::WebPage::UserMediaAccessWasGranted(userMediaID, audioDeviceUID, videoDeviceUID, frameState.deviceIdentifierHashSalt()), m_page.pageID());
+    m_page.process().send(Messages::WebPage::UserMediaAccessWasGranted(userMediaID, audioDeviceUID, videoDeviceUID), m_page.pageID());
 #else
     UNUSED_PARAM(userMediaID);
     UNUSED_PARAM(audioDeviceUID);
@@ -270,21 +266,21 @@
             return;
         }
 
+        auto userMediaOrigin = API::SecurityOrigin::create(SecurityOriginData::fromDatabaseIdentifier(userMediaDocumentOriginIdentifier)->securityOrigin());
+        auto topLevelOrigin = API::SecurityOrigin::create(SecurityOriginData::fromDatabaseIdentifier(topLevelDocumentOriginIdentifier)->securityOrigin());
+        auto request = createRequest(userMediaID, frameID, userMediaDocumentOriginIdentifier, topLevelDocumentOriginIdentifier, audioDeviceUIDs, videoDeviceUIDs);
+
         bool authorizedForAudio = false;
         bool authorizedForVideo = false;
-        auto userMediaOrigin = API::SecurityOrigin::create(SecurityOriginData::fromDatabaseIdentifier(userMediaDocumentOriginIdentifier).value_or(SecurityOriginData()).securityOrigin());
-        auto topLevelOrigin = API::SecurityOrigin::create(SecurityOriginData::fromDatabaseIdentifier(topLevelDocumentOriginIdentifier).value_or(SecurityOriginData()).securityOrigin());
-        auto request = createRequest(userMediaID, frameID, userMediaDocumentOriginIdentifier, topLevelDocumentOriginIdentifier, audioDeviceUIDs, videoDeviceUIDs);
-
-        auto& frameState = stateForRequest(request.get());
+        auto& fameState = stateForRequest(request);
         for (auto deviceUID : audioDeviceUIDs) {
-            if (frameState.hasPermissionToUseCaptureDevice(deviceUID)) {
+            if (fameState.hasPermissionToUseCaptureDevice(deviceUID)) {
                 authorizedForAudio = true;
                 break;
             }
         }
         for (auto deviceUID : videoDeviceUIDs) {
-            if (frameState.hasPermissionToUseCaptureDevice(deviceUID)) {
+            if (fameState.hasPermissionToUseCaptureDevice(deviceUID)) {
                 authorizedForVideo = true;
                 break;
             }
@@ -306,37 +302,11 @@
         return;
     }
 
-    auto validateConstraintsHandler = [this, userMediaID, validHandler, invalidHandler, audioConstraintsData, videoConstraintsData](const String& deviceIdentifierHashSalt) {
-        syncWithWebCorePrefs();
+    auto audioConstraints = MediaConstraintsImpl::create(MediaConstraintsData(audioConstraintsData));
+    auto videoConstraints = MediaConstraintsImpl::create(MediaConstraintsData(videoConstraintsData));
 
-        auto audioConstraints = MediaConstraintsImpl::create({audioConstraintsData, deviceIdentifierHashSalt});
-        auto videoConstraints = MediaConstraintsImpl::create({videoConstraintsData, deviceIdentifierHashSalt});
-
-        RealtimeMediaSourceCenter::singleton().validateRequestConstraints(validHandler, invalidHandler, audioConstraints, videoConstraints);
-    };
-
-    auto haveDeviceSaltHandler = [this, userMediaID, frameID, validateConstraintsHandler](uint64_t userMediaID, const String& deviceIdentifierHashSalt, bool originHasPersistentAccess) {
-
-        auto request = m_pendingDeviceRequests.take(userMediaID);
-        if (!request)
-            return;
-
-        if (!m_page.isValid())
-            return;
-
-        auto& frameState = stateForRequest(*request);
-        frameState.setDeviceIdentifierHashSalt(deviceIdentifierHashSalt);
-        frameState.setHasPersistentAccess(originHasPersistentAccess);
-        validateConstraintsHandler(deviceIdentifierHashSalt);
-    };
-
-    auto frameState =  m_frameStates.get(frameID);
-    if (frameState && !frameState->deviceIdentifierHashSalt().isEmpty()) {
-        validateConstraintsHandler(frameState->deviceIdentifierHashSalt());
-        return;
-    }
-
-    getUserMediaPermissionInfo(userMediaID, frameID, WTFMove(haveDeviceSaltHandler), WTFMove(userMediaDocumentOriginIdentifier), WTFMove(topLevelDocumentOriginIdentifier));
+    syncWithWebCorePrefs();
+    RealtimeMediaSourceCenter::singleton().validateRequestConstraints(validHandler, invalidHandler, audioConstraints, videoConstraints);
 #else
     UNUSED_PARAM(userMediaID);
     UNUSED_PARAM(frameID);
@@ -347,57 +317,42 @@
 #endif
 }
 
+void UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame(uint64_t userMediaID, uint64_t frameID, String userMediaDocumentOriginIdentifier, String topLevelDocumentOriginIdentifier)
+{
 #if ENABLE(MEDIA_STREAM)
-void UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo(uint64_t userMediaID, uint64_t frameID, UserMediaPermissionCheckProxy::CompletionHandler&& handler, const String&& userMediaDocumentOriginIdentifier, const String&& topLevelDocumentOriginIdentifier)
-{
-    auto request = UserMediaPermissionCheckProxy::create(userMediaID, frameID, WTFMove(handler), userMediaDocumentOriginIdentifier, topLevelDocumentOriginIdentifier);
-
+    auto request = UserMediaPermissionCheckProxy::create(*this, userMediaID);
     m_pendingDeviceRequests.add(userMediaID, request.ptr());
 
-    auto frameState =  m_frameStates.get(frameID);
-    if (frameState && !frameState->deviceIdentifierHashSalt().isEmpty()) {
-        handler(userMediaID, frameState->deviceIdentifierHashSalt(), frameState->hasPersistentAccess());
-        return;
-    }
-
     auto userMediaOrigin = API::SecurityOrigin::create(SecurityOriginData::fromDatabaseIdentifier(userMediaDocumentOriginIdentifier).value_or(SecurityOriginData()).securityOrigin());
     auto topLevelOrigin = API::SecurityOrigin::create(SecurityOriginData::fromDatabaseIdentifier(topLevelDocumentOriginIdentifier).value_or(SecurityOriginData()).securityOrigin());
+
     if (!m_page.uiClient().checkUserMediaPermissionForOrigin(m_page, *m_page.process().webFrame(frameID), *userMediaOrigin.get(), *topLevelOrigin.get(), request.get())) {
         m_pendingDeviceRequests.take(userMediaID);
-
-        handler(userMediaID, emptyString(), false);
+        m_page.process().send(Messages::WebPage::DidCompleteMediaDeviceEnumeration(userMediaID, Vector<WebCore::CaptureDevice>(), emptyString(), false), m_page.pageID());
     }
+#else
+    UNUSED_PARAM(userMediaID);
+    UNUSED_PARAM(frameID);
+    UNUSED_PARAM(userMediaDocumentOriginIdentifier);
+    UNUSED_PARAM(topLevelDocumentOriginIdentifier);
+#endif
 }
-#endif
 
-void UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame(uint64_t userMediaID, uint64_t frameID, String userMediaDocumentOriginIdentifier, String topLevelDocumentOriginIdentifier)
+void UserMediaPermissionRequestManagerProxy::didCompleteUserMediaPermissionCheck(uint64_t userMediaID, const String& deviceIdentifierHashSalt, bool originHasPersistentAccess)
 {
-#if ENABLE(MEDIA_STREAM)
+    if (!m_page.isValid())
+        return;
 
-    auto completionHandler = [this, userMediaID](uint64_t userMediaID, const String& deviceIdentifierHashSalt, bool originHasPersistentAccess) {
-        auto request = m_pendingDeviceRequests.take(userMediaID);
-        if (!request)
-            return;
+    if (!m_pendingDeviceRequests.take(userMediaID))
+        return;
 
-        if (!m_page.isValid())
-            return;
-
-        auto& frameState = stateForRequest(*request);
-        ASSERT(frameState.deviceIdentifierHashSalt().isEmpty() || frameState.deviceIdentifierHashSalt() == deviceIdentifierHashSalt);
-        frameState.setDeviceIdentifierHashSalt(deviceIdentifierHashSalt);
-        frameState.setHasPersistentAccess(originHasPersistentAccess);
-
-        syncWithWebCorePrefs();
-        auto deviceInfo = RealtimeMediaSourceCenter::singleton().getMediaStreamDevices();
-        m_page.process().send(Messages::WebPage::DidCompleteMediaDeviceEnumeration(userMediaID, deviceInfo, deviceIdentifierHashSalt, originHasPersistentAccess), m_page.pageID());
-    };
-
-    getUserMediaPermissionInfo(userMediaID, frameID, WTFMove(completionHandler), WTFMove(userMediaDocumentOriginIdentifier), WTFMove(topLevelDocumentOriginIdentifier));
+#if ENABLE(MEDIA_STREAM)
+    syncWithWebCorePrefs();
+    auto deviceInfo = RealtimeMediaSourceCenter::singleton().getMediaStreamDevices();
+    m_page.process().send(Messages::WebPage::DidCompleteMediaDeviceEnumeration(userMediaID, deviceInfo, deviceIdentifierHashSalt, originHasPersistentAccess), m_page.pageID());
 #else
-    UNUSED_PARAM(userMediaID);
-    UNUSED_PARAM(frameID);
-    UNUSED_PARAM(userMediaDocumentOriginIdentifier);
-    UNUSED_PARAM(topLevelDocumentOriginIdentifier);
+    UNUSED_PARAM(deviceIdentifierHashSalt);
+    UNUSED_PARAM(originHasPersistentAccess);
 #endif
 }
 

Modified: trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.h (216549 => 216550)


--- trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.h	2017-05-09 22:30:11 UTC (rev 216549)
+++ trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.h	2017-05-09 22:35:58 UTC (rev 216550)
@@ -30,7 +30,6 @@
 namespace WebCore {
 class CaptureDevice;
 struct MediaConstraintsData;
-class SecurityOrigin;
 };
 
 namespace WebKit {
@@ -39,25 +38,17 @@
 
 class FrameAuthorizationState {
 public:
-    explicit FrameAuthorizationState(WebCore::SecurityOrigin* userMediaDocumentSecurityOrigin, WebCore::SecurityOrigin* topLevelDocumentSecurityOrigin);
+    explicit FrameAuthorizationState(UserMediaPermissionRequestProxy&);
 
     bool hasPermissionToUseCaptureDevice(const String& deviceUID);
     void setHasPermissionToUseCaptureDevice(const String&, bool);
 
-    void ensureSecurityOriginsAreEqual(WebCore::SecurityOrigin* userMediaDocumentSecurityOrigin, WebCore::SecurityOrigin* topLevelDocumentSecurityOrigin);
+    void ensureSecurityOriginsAreEqual(UserMediaPermissionRequestProxy&);
 
-    void setDeviceIdentifierHashSalt(const String& hashSalt) { m_deviceIdentifierHashSalt = hashSalt; }
-    String deviceIdentifierHashSalt() const { return m_deviceIdentifierHashSalt; }
-
-    bool hasPersistentAccess() const { return m_hasPersistentAccess; }
-    void setHasPersistentAccess(bool value) { m_hasPersistentAccess = value; }
-
 private:
     RefPtr<WebCore::SecurityOrigin> m_userMediaDocumentSecurityOrigin;
     RefPtr<WebCore::SecurityOrigin> m_topLevelDocumentSecurityOrigin;
     Vector<String> m_authorizedDeviceUIDs;
-    String m_deviceIdentifierHashSalt;
-    bool m_hasPersistentAccess { false };
 };
 
 class UserMediaPermissionRequestManagerProxy {
@@ -73,12 +64,12 @@
 
     void userMediaAccessWasGranted(uint64_t, const String& audioDeviceUID, const String& videoDeviceUID);
     void userMediaAccessWasDenied(uint64_t, UserMediaPermissionRequestProxy::UserMediaAccessDenialReason);
+    FrameAuthorizationState& stateForRequest(UserMediaPermissionRequestProxy&);
 
-    template <typename RequestType>
-    FrameAuthorizationState& stateForRequest(RequestType&);
-
     void enumerateMediaDevicesForFrame(uint64_t userMediaID, uint64_t frameID, String userMediaDocumentOriginIdentifier, String topLevelDocumentOriginIdentifier);
 
+    void didCompleteUserMediaPermissionCheck(uint64_t, const String&, bool allow);
+
     void stopCapture();
     void scheduleNextRejection();
     void rejectionTimerFired();
@@ -90,9 +81,7 @@
 private:
     Ref<UserMediaPermissionRequestProxy> createRequest(uint64_t userMediaID, uint64_t frameID, const String&userMediaDocumentOriginIdentifier, const String& topLevelDocumentOriginIdentifier, const Vector<String>& audioDeviceUIDs, const Vector<String>& videoDeviceUIDs);
     void denyRequest(uint64_t userMediaID, UserMediaPermissionRequestProxy::UserMediaAccessDenialReason, const String& invalidConstraint);
-
-    void getUserMediaPermissionInfo(uint64_t userMediaID, uint64_t frameID, UserMediaPermissionCheckProxy::CompletionHandler&&, const String&&userMediaDocumentOriginIdentifier, const String&& topLevelDocumentOriginIdentifier);
-
+    Ref<UserMediaPermissionCheckProxy> createUserMediaPermissionCheck(uint64_t userMediaID);
     void syncWithWebCorePrefs() const;
 
     HashMap<uint64_t, RefPtr<UserMediaPermissionRequestProxy>> m_pendingUserMediaRequests;

Modified: trunk/Source/WebKit2/WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp (216549 => 216550)


--- trunk/Source/WebKit2/WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp	2017-05-09 22:30:11 UTC (rev 216549)
+++ trunk/Source/WebKit2/WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp	2017-05-09 22:35:58 UTC (rev 216550)
@@ -154,7 +154,7 @@
     m_userMediaRequestToIDMap.remove(&request);
 }
 
-void UserMediaPermissionRequestManager::userMediaAccessWasGranted(uint64_t requestID, const String& audioDeviceUID, const String& videoDeviceUID, const String& deviceIdentifierHashSalt)
+void UserMediaPermissionRequestManager::userMediaAccessWasGranted(uint64_t requestID, const String& audioDeviceUID, const String& videoDeviceUID)
 {
     auto request = m_idToUserMediaRequestMap.take(requestID);
     if (!request)
@@ -161,7 +161,7 @@
         return;
     removeMediaRequestFromMaps(*request);
 
-    request->allow(audioDeviceUID, videoDeviceUID, deviceIdentifierHashSalt);
+    request->allow(audioDeviceUID, videoDeviceUID);
 }
 
 void UserMediaPermissionRequestManager::userMediaAccessWasDenied(uint64_t requestID, WebCore::UserMediaRequest::MediaAccessDenialReason reason, const String& invalidConstraint)

Modified: trunk/Source/WebKit2/WebProcess/MediaStream/UserMediaPermissionRequestManager.h (216549 => 216550)


--- trunk/Source/WebKit2/WebProcess/MediaStream/UserMediaPermissionRequestManager.h	2017-05-09 22:30:11 UTC (rev 216549)
+++ trunk/Source/WebKit2/WebProcess/MediaStream/UserMediaPermissionRequestManager.h	2017-05-09 22:35:58 UTC (rev 216550)
@@ -45,7 +45,7 @@
 
     void startUserMediaRequest(WebCore::UserMediaRequest&);
     void cancelUserMediaRequest(WebCore::UserMediaRequest&);
-    void userMediaAccessWasGranted(uint64_t, const String& audioDeviceUID, const String& videoDeviceUID, const String& deviceIdentifierHashSalt);
+    void userMediaAccessWasGranted(uint64_t, const String& audioDeviceUID, const String& videoDeviceUID);
     void userMediaAccessWasDenied(uint64_t, WebCore::UserMediaRequest::MediaAccessDenialReason, const String&);
 
     void enumerateMediaDevices(WebCore::MediaDevicesEnumerationRequest&);

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (216549 => 216550)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp	2017-05-09 22:30:11 UTC (rev 216549)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp	2017-05-09 22:35:58 UTC (rev 216550)
@@ -3864,9 +3864,9 @@
 }
 
 #if ENABLE(MEDIA_STREAM)
-void WebPage::userMediaAccessWasGranted(uint64_t userMediaID, const String& audioDeviceUID, const String& videoDeviceUID, const String& mediaDeviceIdentifierHashSalt)
+void WebPage::userMediaAccessWasGranted(uint64_t userMediaID, const String& audioDeviceUID, const String& videoDeviceUID)
 {
-    m_userMediaPermissionRequestManager->userMediaAccessWasGranted(userMediaID, audioDeviceUID, videoDeviceUID, mediaDeviceIdentifierHashSalt);
+    m_userMediaPermissionRequestManager->userMediaAccessWasGranted(userMediaID, audioDeviceUID, videoDeviceUID);
 }
 
 void WebPage::userMediaAccessWasDenied(uint64_t userMediaID, uint64_t reason, String invalidConstraint)

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h (216549 => 216550)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h	2017-05-09 22:30:11 UTC (rev 216549)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h	2017-05-09 22:35:58 UTC (rev 216550)
@@ -1174,7 +1174,7 @@
     void didReceiveNotificationPermissionDecision(uint64_t notificationID, bool allowed);
 
 #if ENABLE(MEDIA_STREAM)
-    void userMediaAccessWasGranted(uint64_t userMediaID, const String& audioDeviceUID, const String& videoDeviceUID, const String& mediaDeviceIdentifierHashSalt);
+    void userMediaAccessWasGranted(uint64_t userMediaID, const String& audioDeviceUID, const String& videoDeviceUID);
     void userMediaAccessWasDenied(uint64_t userMediaID, uint64_t reason, String invalidConstraint);
 
     void didCompleteMediaDeviceEnumeration(uint64_t userMediaID, const Vector<WebCore::CaptureDevice>& devices, const String& deviceIdentifierHashSalt, bool originHasPersistentAccess);

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in (216549 => 216550)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in	2017-05-09 22:30:11 UTC (rev 216549)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in	2017-05-09 22:35:58 UTC (rev 216550)
@@ -298,7 +298,7 @@
 
 #if ENABLE(MEDIA_STREAM)
     # MediaSteam
-    UserMediaAccessWasGranted(uint64_t userMediaID, String audioDeviceUID, String videoDeviceUID, String mediaDeviceIdentifierHashSalt)
+    UserMediaAccessWasGranted(uint64_t userMediaID, String audioDeviceUID, String videoDeviceUID)
     UserMediaAccessWasDenied(uint64_t userMediaID, uint64_t reason, String invalidConstraint)
     DidCompleteMediaDeviceEnumeration(uint64_t userMediaID, Vector<WebCore::CaptureDevice> devices, String mediaDeviceIdentifierHashSalt, bool hasPersistentAccess)
 #if ENABLE(SANDBOX_EXTENSIONS)

Modified: trunk/Source/WebKit2/WebProcess/cocoa/UserMediaCaptureManager.cpp (216549 => 216550)


--- trunk/Source/WebKit2/WebProcess/cocoa/UserMediaCaptureManager.cpp	2017-05-09 22:30:11 UTC (rev 216549)
+++ trunk/Source/WebKit2/WebProcess/cocoa/UserMediaCaptureManager.cpp	2017-05-09 22:35:58 UTC (rev 216550)
@@ -212,11 +212,15 @@
         return { };
 
     uint64_t id = nextSessionID();
+    MediaConstraintsData constraintsData;
+    constraintsData.mandatoryConstraints = constraints->mandatoryConstraints();
+    constraintsData.advancedConstraints = constraints->advancedConstraints();
+    constraintsData.isValid = constraints->isValid();
     bool succeeded;
 
     RealtimeMediaSourceSettings settings;
     String errorMessage;
-    if (!m_process.sendSync(Messages::UserMediaCaptureManagerProxy::CreateMediaSourceForCaptureDeviceWithConstraints(id, deviceID, sourceType, *constraints), Messages::UserMediaCaptureManagerProxy::CreateMediaSourceForCaptureDeviceWithConstraints::Reply(succeeded, errorMessage, settings), 0))
+    if (!m_process.sendSync(Messages::UserMediaCaptureManagerProxy::CreateMediaSourceForCaptureDeviceWithConstraints(id, deviceID, sourceType, constraintsData), Messages::UserMediaCaptureManagerProxy::CreateMediaSourceForCaptureDeviceWithConstraints::Reply(succeeded, errorMessage, settings), 0))
         return WTFMove(errorMessage);
 
     auto source = adoptRef(*new Source(String::number(id), sourceType, emptyString(), id, *this));
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to