Title: [216667] branches/safari-604.1.21-branch/Source

Diff

Modified: branches/safari-604.1.21-branch/Source/WebCore/CMakeLists.txt (216666 => 216667)


--- branches/safari-604.1.21-branch/Source/WebCore/CMakeLists.txt	2017-05-11 07:27:39 UTC (rev 216666)
+++ branches/safari-604.1.21-branch/Source/WebCore/CMakeLists.txt	2017-05-11 07:27:43 UTC (rev 216667)
@@ -2384,6 +2384,7 @@
     platform/graphics/transforms/TransformationMatrix.cpp
     platform/graphics/transforms/TranslateTransformOperation.cpp
 
+    platform/mediastream/CaptureDeviceManager.cpp
     platform/mediastream/MediaConstraints.cpp
     platform/mediastream/MediaEndpointConfiguration.cpp
     platform/mediastream/MediaStreamPrivate.cpp

Modified: branches/safari-604.1.21-branch/Source/WebCore/ChangeLog (216666 => 216667)


--- branches/safari-604.1.21-branch/Source/WebCore/ChangeLog	2017-05-11 07:27:39 UTC (rev 216666)
+++ branches/safari-604.1.21-branch/Source/WebCore/ChangeLog	2017-05-11 07:27:43 UTC (rev 216667)
@@ -1,5 +1,48 @@
 2017-05-10  Jason Marcell  <[email protected]>
 
+        Cherry-pick r216477. rdar://problem/32058957
+
+    2017-05-08  Youenn Fablet  <[email protected]>
+
+            Follow-up to bug 171710: use more references and reject if either audio or video source creation is failing
+            https://bugs.webkit.org/show_bug.cgi?id=171824
+
+            Reviewed by Alex Christensen.
+
+            Refactoring to use more references.
+            Only behavioral change is the rejection of the getUserMedia promise if either audio or video source creation is
+            failing. Previously, if audio source creation was failing, the promise would still resolve if video source was
+            sucessfully created.
+
+            * platform/mediastream/RealtimeMediaSourceCenter.cpp:
+            (WebCore::RealtimeMediaSourceCenter::audioFactory):
+            (WebCore::RealtimeMediaSourceCenter::videoFactory):
+            (WebCore::RealtimeMediaSourceCenter::audioCaptureDeviceManager):
+            (WebCore::RealtimeMediaSourceCenter::videoCaptureDeviceManager):
+            * platform/mediastream/RealtimeMediaSourceCenter.h:
+            (WebCore::RealtimeMediaSourceCenter::defaultAudioFactory): Deleted.
+            (WebCore::RealtimeMediaSourceCenter::defaultVideoFactory): Deleted.
+            (WebCore::RealtimeMediaSourceCenter::defaultAudioCaptureDeviceManager): Deleted.
+            (WebCore::RealtimeMediaSourceCenter::defaultVideoCaptureDeviceManager): Deleted.
+            * platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:
+            (WebCore::RealtimeMediaSourceCenterMac::createMediaStream):
+            (WebCore::RealtimeMediaSourceCenterMac::getMediaStreamDevices):
+            (WebCore::RealtimeMediaSourceCenterMac::bestSourcesForTypeAndConstraints):
+            (WebCore::RealtimeMediaSourceCenterMac::defaultAudioFactory):
+            (WebCore::RealtimeMediaSourceCenterMac::defaultVideoFactory):
+            (WebCore::RealtimeMediaSourceCenterMac::defaultAudioCaptureDeviceManager):
+            (WebCore::RealtimeMediaSourceCenterMac::defaultVideoCaptureDeviceManager):
+            * platform/mediastream/mac/RealtimeMediaSourceCenterMac.h:
+            * platform/mediastream/openwebrtc/RealtimeMediaSourceCenterOwr.h:
+            * platform/mock/MockRealtimeMediaSourceCenter.cpp:
+            (WebCore::MockRealtimeMediaSourceCenter::defaultAudioFactory):
+            (WebCore::MockRealtimeMediaSourceCenter::defaultVideoFactory):
+            (WebCore::MockRealtimeMediaSourceCenter::defaultAudioCaptureDeviceManager):
+            (WebCore::MockRealtimeMediaSourceCenter::defaultVideoCaptureDeviceManager):
+            * platform/mock/MockRealtimeMediaSourceCenter.h:
+
+2017-05-10  Jason Marcell  <[email protected]>
+
         Cherry-pick r216471. rdar://problem/31132092
 
     2017-05-08  Said Abou-Hallawa  <[email protected]>

Modified: branches/safari-604.1.21-branch/Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.cpp (216666 => 216667)


--- branches/safari-604.1.21-branch/Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.cpp	2017-05-11 07:27:39 UTC (rev 216666)
+++ branches/safari-604.1.21-branch/Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.cpp	2017-05-11 07:27:43 UTC (rev 216667)
@@ -78,9 +78,9 @@
         m_audioFactory = nullptr;
 }
 
-RealtimeMediaSource::AudioCaptureFactory* RealtimeMediaSourceCenter::audioFactory()
+RealtimeMediaSource::AudioCaptureFactory& RealtimeMediaSourceCenter::audioFactory()
 {
-    return m_audioFactory ? m_audioFactory: defaultAudioFactory();
+    return m_audioFactory ? *m_audioFactory : defaultAudioFactory();
 }
 
 void RealtimeMediaSourceCenter::setVideoFactory(RealtimeMediaSource::VideoCaptureFactory& factory)
@@ -94,9 +94,9 @@
         m_videoFactory = nullptr;
 }
 
-RealtimeMediaSource::VideoCaptureFactory* RealtimeMediaSourceCenter::videoFactory()
+RealtimeMediaSource::VideoCaptureFactory& RealtimeMediaSourceCenter::videoFactory()
 {
-    return m_videoFactory ? m_videoFactory : defaultVideoFactory();
+    return m_videoFactory ? *m_videoFactory : defaultVideoFactory();
 }
 
 void RealtimeMediaSourceCenter::setAudioCaptureDeviceManager(CaptureDeviceManager& deviceManager)
@@ -110,9 +110,9 @@
         m_audioCaptureDeviceManager = nullptr;
 }
 
-CaptureDeviceManager* RealtimeMediaSourceCenter::audioCaptureDeviceManager()
+CaptureDeviceManager& RealtimeMediaSourceCenter::audioCaptureDeviceManager()
 {
-    return m_audioCaptureDeviceManager ? m_audioCaptureDeviceManager : defaultAudioCaptureDeviceManager();
+    return m_audioCaptureDeviceManager ? *m_audioCaptureDeviceManager : defaultAudioCaptureDeviceManager();
 }
 
 void RealtimeMediaSourceCenter::setVideoCaptureDeviceManager(CaptureDeviceManager& deviceManager)
@@ -126,9 +126,9 @@
         m_videoCaptureDeviceManager = nullptr;
 }
 
-CaptureDeviceManager* RealtimeMediaSourceCenter::videoCaptureDeviceManager()
+CaptureDeviceManager& RealtimeMediaSourceCenter::videoCaptureDeviceManager()
 {
-    return m_videoCaptureDeviceManager ? m_videoCaptureDeviceManager : defaultVideoCaptureDeviceManager();
+    return m_videoCaptureDeviceManager ? *m_videoCaptureDeviceManager : defaultVideoCaptureDeviceManager();
 }
 
 static void addStringToSHA1(SHA1& sha1, const String& string)

Modified: branches/safari-604.1.21-branch/Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.h (216666 => 216667)


--- branches/safari-604.1.21-branch/Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.h	2017-05-11 07:27:39 UTC (rev 216666)
+++ branches/safari-604.1.21-branch/Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.h	2017-05-11 07:27:43 UTC (rev 216667)
@@ -66,27 +66,27 @@
     
     virtual const RealtimeMediaSourceSupportedConstraints& supportedConstraints() { return m_supportedConstraints; }
 
-    virtual RealtimeMediaSource::AudioCaptureFactory* defaultAudioFactory() { return nullptr; }
-    virtual RealtimeMediaSource::VideoCaptureFactory* defaultVideoFactory() { return nullptr; }
+    virtual RealtimeMediaSource::AudioCaptureFactory& defaultAudioFactory() = 0;
+    virtual RealtimeMediaSource::VideoCaptureFactory& defaultVideoFactory() = 0;
 
     WEBCORE_EXPORT void setAudioFactory(RealtimeMediaSource::AudioCaptureFactory&);
     WEBCORE_EXPORT void unsetAudioFactory(RealtimeMediaSource::AudioCaptureFactory&);
-    WEBCORE_EXPORT RealtimeMediaSource::AudioCaptureFactory* audioFactory();
+    WEBCORE_EXPORT RealtimeMediaSource::AudioCaptureFactory& audioFactory();
 
     WEBCORE_EXPORT void setVideoFactory(RealtimeMediaSource::VideoCaptureFactory&);
     WEBCORE_EXPORT void unsetVideoFactory(RealtimeMediaSource::VideoCaptureFactory&);
-    WEBCORE_EXPORT RealtimeMediaSource::VideoCaptureFactory* videoFactory();
+    WEBCORE_EXPORT RealtimeMediaSource::VideoCaptureFactory& videoFactory();
 
-    virtual CaptureDeviceManager* defaultAudioCaptureDeviceManager() { return nullptr; }
-    virtual CaptureDeviceManager* defaultVideoCaptureDeviceManager() { return nullptr; }
+    virtual CaptureDeviceManager& defaultAudioCaptureDeviceManager() = 0;
+    virtual CaptureDeviceManager& defaultVideoCaptureDeviceManager() = 0;
 
     WEBCORE_EXPORT void setAudioCaptureDeviceManager(CaptureDeviceManager&);
     WEBCORE_EXPORT void unsetAudioCaptureDeviceManager(CaptureDeviceManager&);
-    CaptureDeviceManager* audioCaptureDeviceManager();
+    CaptureDeviceManager& audioCaptureDeviceManager();
 
     WEBCORE_EXPORT void setVideoCaptureDeviceManager(CaptureDeviceManager&);
     WEBCORE_EXPORT void unsetVideoCaptureDeviceManager(CaptureDeviceManager&);
-    CaptureDeviceManager* videoCaptureDeviceManager();
+    CaptureDeviceManager& videoCaptureDeviceManager();
 
     String hashStringWithSalt(const String& id, const String& hashSalt);
     WEBCORE_EXPORT std::optional<CaptureDevice> captureDeviceWithUniqueID(const String& id, const String& hashSalt);

Modified: branches/safari-604.1.21-branch/Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp (216666 => 216667)


--- branches/safari-604.1.21-branch/Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp	2017-05-11 07:27:39 UTC (rev 216666)
+++ branches/safari-604.1.21-branch/Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp	2017-05-11 07:27:43 UTC (rev 216667)
@@ -112,29 +112,34 @@
     Vector<Ref<RealtimeMediaSource>> videoSources;
     String invalidConstraint;
 
-    if (!audioDeviceID.isEmpty() && audioFactory()) {
-        auto audioSource = audioFactory()->createAudioCaptureSource(audioDeviceID, audioConstraints);
+    if (!audioDeviceID.isEmpty()) {
+        auto audioSource = audioFactory().createAudioCaptureSource(audioDeviceID, audioConstraints);
         if (audioSource)
             audioSources.append(audioSource.source());
+        else {
 #if !LOG_DISABLED
-        if (!audioSource.errorMessage.isEmpty())
-            LOG(Media, "RealtimeMediaSourceCenterMac::createMediaStream(%p), audio constraints failed to apply: %s", this, audioSource.errorMessage.utf8().data());
+            if (!audioSource.errorMessage.isEmpty())
+                LOG(Media, "RealtimeMediaSourceCenterMac::createMediaStream(%p), audio constraints failed to apply: %s", this, audioSource.errorMessage.utf8().data());
 #endif
+            completionHandler(nullptr);
+            return;
+        }
     }
-    if (!videoDeviceID.isEmpty() && videoFactory()) {
-        auto videoSource = videoFactory()->createVideoCaptureSource(videoDeviceID, videoConstraints);
+    if (!videoDeviceID.isEmpty()) {
+        auto videoSource = videoFactory().createVideoCaptureSource(videoDeviceID, videoConstraints);
         if (videoSource)
             videoSources.append(videoSource.source());
+        else {
 #if !LOG_DISABLED
-        if (!videoSource.errorMessage.isEmpty())
-            LOG(Media, "RealtimeMediaSourceCenterMac::createMediaStream(%p), video constraints failed to apply: %s", this, videoSource.errorMessage.utf8().data());
+            if (!videoSource.errorMessage.isEmpty())
+                LOG(Media, "RealtimeMediaSourceCenterMac::createMediaStream(%p), video constraints failed to apply: %s", this, videoSource.errorMessage.utf8().data());
 #endif
+            completionHandler(nullptr);
+            return;
+        }
     }
 
-    if (videoSources.isEmpty() && audioSources.isEmpty())
-        completionHandler(nullptr);
-    else
-        completionHandler(MediaStreamPrivate::create(audioSources, videoSources));
+    completionHandler(MediaStreamPrivate::create(audioSources, videoSources));
 }
 
 Vector<CaptureDevice> RealtimeMediaSourceCenterMac::getMediaStreamDevices()
@@ -141,12 +146,9 @@
 {
     Vector<CaptureDevice> result;
 
-    if (auto audioDeviceManager = audioCaptureDeviceManager())
-        result.appendVector(audioDeviceManager->getAudioSourcesInfo());
+    result.appendVector(audioCaptureDeviceManager().getAudioSourcesInfo());
+    result.appendVector(videoCaptureDeviceManager().getVideoSourcesInfo());
 
-    if (auto videoDeviceManager = videoCaptureDeviceManager())
-        result.appendVector(videoDeviceManager->getVideoSourcesInfo());
-
     return result;
 }
 
@@ -167,10 +169,10 @@
             continue;
 
         CaptureSourceOrError sourceOrError;
-        if (type == RealtimeMediaSource::Type::Video && videoFactory())
-            sourceOrError = videoFactory()->createVideoCaptureSource(captureDevice.persistentId(), &constraints);
-        else if (type == RealtimeMediaSource::Type::Audio && audioFactory())
-            sourceOrError = audioFactory()->createAudioCaptureSource(captureDevice.persistentId(), &constraints);
+        if (type == RealtimeMediaSource::Type::Video)
+            sourceOrError = videoFactory().createVideoCaptureSource(captureDevice.persistentId(), &constraints);
+        else if (type == RealtimeMediaSource::Type::Audio)
+            sourceOrError = audioFactory().createAudioCaptureSource(captureDevice.persistentId(), &constraints);
 
         if (!sourceOrError) {
             // FIXME: Handle the case of invalid constraints on more than one device.
@@ -192,30 +194,30 @@
     return sourceUIDs;
 }
 
-RealtimeMediaSource::AudioCaptureFactory* RealtimeMediaSourceCenterMac::defaultAudioFactory()
+RealtimeMediaSource::AudioCaptureFactory& RealtimeMediaSourceCenterMac::defaultAudioFactory()
 {
-    return m_useAVFoundationAudioCapture ? &AVAudioCaptureSource::factory() : &CoreAudioCaptureSource::factory();
+    return m_useAVFoundationAudioCapture ? AVAudioCaptureSource::factory() : CoreAudioCaptureSource::factory();
 }
 
-RealtimeMediaSource::VideoCaptureFactory* RealtimeMediaSourceCenterMac::defaultVideoFactory()
+RealtimeMediaSource::VideoCaptureFactory& RealtimeMediaSourceCenterMac::defaultVideoFactory()
 {
-    return &AVVideoCaptureSource::factory();
+    return AVVideoCaptureSource::factory();
 }
 
-CaptureDeviceManager* RealtimeMediaSourceCenterMac::defaultAudioCaptureDeviceManager()
+CaptureDeviceManager& RealtimeMediaSourceCenterMac::defaultAudioCaptureDeviceManager()
 {
     if (m_useAVFoundationAudioCapture)
-        return &AVCaptureDeviceManager::singleton();
+        return AVCaptureDeviceManager::singleton();
 #if PLATFORM(MAC)
-    return &CoreAudioCaptureDeviceManager::singleton();
+    return CoreAudioCaptureDeviceManager::singleton();
 #else
-    return &AVAudioSessionCaptureDeviceManager::singleton();
+    return AVAudioSessionCaptureDeviceManager::singleton();
 #endif
 }
 
-CaptureDeviceManager* RealtimeMediaSourceCenterMac::defaultVideoCaptureDeviceManager()
+CaptureDeviceManager& RealtimeMediaSourceCenterMac::defaultVideoCaptureDeviceManager()
 {
-    return &AVCaptureDeviceManager::singleton();
+    return AVCaptureDeviceManager::singleton();
 }
 
 } // namespace WebCore

Modified: branches/safari-604.1.21-branch/Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.h (216666 => 216667)


--- branches/safari-604.1.21-branch/Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.h	2017-05-11 07:27:39 UTC (rev 216666)
+++ branches/safari-604.1.21-branch/Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.h	2017-05-11 07:27:43 UTC (rev 216667)
@@ -56,11 +56,11 @@
 
     Vector<String> bestSourcesForTypeAndConstraints(RealtimeMediaSource::Type, const MediaConstraints&, String& invalidConstraint);
 
-    RealtimeMediaSource::AudioCaptureFactory* defaultAudioFactory() final;
-    RealtimeMediaSource::VideoCaptureFactory* defaultVideoFactory() final;
+    RealtimeMediaSource::AudioCaptureFactory& defaultAudioFactory() final;
+    RealtimeMediaSource::VideoCaptureFactory& defaultVideoFactory() final;
 
-    CaptureDeviceManager* defaultAudioCaptureDeviceManager() final;
-    CaptureDeviceManager* defaultVideoCaptureDeviceManager() final;
+    CaptureDeviceManager& defaultAudioCaptureDeviceManager() final;
+    CaptureDeviceManager& defaultVideoCaptureDeviceManager() final;
 
     bool m_useAVFoundationAudioCapture { false };
 };

Modified: branches/safari-604.1.21-branch/Source/WebCore/platform/mediastream/openwebrtc/RealtimeMediaSourceCenterOwr.h (216666 => 216667)


--- branches/safari-604.1.21-branch/Source/WebCore/platform/mediastream/openwebrtc/RealtimeMediaSourceCenterOwr.h	2017-05-11 07:27:39 UTC (rev 216666)
+++ branches/safari-604.1.21-branch/Source/WebCore/platform/mediastream/openwebrtc/RealtimeMediaSourceCenterOwr.h	2017-05-11 07:27:43 UTC (rev 216667)
@@ -31,13 +31,12 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#ifndef RealtimeMediaSourceCenterOwr_h
-#define RealtimeMediaSourceCenterOwr_h
+#pragma once
 
 #if ENABLE(MEDIA_STREAM) && USE(OPENWEBRTC)
 
+#include "CaptureDeviceManager.h"
 #include "RealtimeMediaSourceCenter.h"
-
 #include "RealtimeMediaSourceOwr.h"
 #include <wtf/PassRefPtr.h>
 
@@ -63,15 +62,40 @@
     void mediaSourcesAvailable(GList* sources);
 
 private:
+    RealtimeMediaSource::AudioCaptureFactory& defaultAudioFactory() final { return m_defaultAudioFactory; }
+    RealtimeMediaSource::VideoCaptureFactory& defaultVideoFactory() final { return m_defaultVideoFactory; }
+    CaptureDeviceManager& defaultAudioCaptureDeviceManager() final { return m_defaultAudioCaptureDeviceManager; }
+    CaptureDeviceManager& defaultVideoCaptureDeviceManager() final { return m_defaultVideoCaptureDeviceManager; }
+
     PassRefPtr<RealtimeMediaSource> firstSource(RealtimeMediaSource::Type);
     RealtimeMediaSourceOwrMap m_sourceMap;
     ValidConstraintsHandler m_validConstraintsHandler;
     InvalidConstraintsHandler m_invalidConstraintsHandler;
     NewMediaStreamHandler m_completionHandler;
+
+    class AudioCaptureFactoryOwr : public RealtimeMediaSource::AudioCaptureFactory {
+    private:
+        CaptureSourceOrError createAudioCaptureSource(const String&, const MediaConstraints*) final { return { }; }
+    };
+
+    class VideoCaptureFactoryOwr : public RealtimeMediaSource::VideoCaptureFactory {
+    private:
+        CaptureSourceOrError createVideoCaptureSource(const String&, const MediaConstraints*) final { return { }; }
+    };
+
+    class CaptureDeviceManagerOwr : public CaptureDeviceManager {
+    private:
+        Vector<CaptureDevice>& captureDevices() final { return m_devices; }
+
+        Vector<CaptureDevice> m_devices;
+    };
+
+    AudioCaptureFactoryOwr m_defaultAudioFactory;
+    VideoCaptureFactoryOwr m_defaultVideoFactory;
+    CaptureDeviceManagerOwr m_defaultAudioCaptureDeviceManager;
+    CaptureDeviceManagerOwr m_defaultVideoCaptureDeviceManager;
 };
 
 } // namespace WebCore
 
 #endif // ENABLE(MEDIA_STREAM) && USE(OPENWEBRTC)
-
-#endif // RealtimeMediaSourceCenterOwr_h

Modified: branches/safari-604.1.21-branch/Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.cpp (216666 => 216667)


--- branches/safari-604.1.21-branch/Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.cpp	2017-05-11 07:27:39 UTC (rev 216666)
+++ branches/safari-604.1.21-branch/Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.cpp	2017-05-11 07:27:43 UTC (rev 216667)
@@ -184,16 +184,26 @@
     return sources;
 }
 
-RealtimeMediaSource::AudioCaptureFactory* MockRealtimeMediaSourceCenter::defaultAudioFactory()
+RealtimeMediaSource::AudioCaptureFactory& MockRealtimeMediaSourceCenter::defaultAudioFactory()
 {
-    return &MockRealtimeAudioSource::factory();
+    return MockRealtimeAudioSource::factory();
 }
 
-RealtimeMediaSource::VideoCaptureFactory* MockRealtimeMediaSourceCenter::defaultVideoFactory()
+RealtimeMediaSource::VideoCaptureFactory& MockRealtimeMediaSourceCenter::defaultVideoFactory()
 {
-    return &MockRealtimeVideoSource::factory();
+    return MockRealtimeVideoSource::factory();
 }
 
+CaptureDeviceManager& MockRealtimeMediaSourceCenter::defaultAudioCaptureDeviceManager()
+{
+    return m_defaultAudioCaptureDeviceManager;
+}
+
+CaptureDeviceManager& MockRealtimeMediaSourceCenter::defaultVideoCaptureDeviceManager()
+{
+    return m_defaultVideoCaptureDeviceManager;
+}
+
 ExceptionOr<void> MockRealtimeMediaSourceCenter::setDeviceEnabled(const String& id, bool enabled)
 {
     for (auto& captureDevice : getMediaStreamDevices()) {

Modified: branches/safari-604.1.21-branch/Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.h (216666 => 216667)


--- branches/safari-604.1.21-branch/Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.h	2017-05-11 07:27:39 UTC (rev 216666)
+++ branches/safari-604.1.21-branch/Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.h	2017-05-11 07:27:43 UTC (rev 216667)
@@ -28,6 +28,7 @@
 
 #if ENABLE(MEDIA_STREAM)
 
+#include "CaptureDeviceManager.h"
 #include "RealtimeMediaSourceCenter.h"
 
 namespace WebCore {
@@ -44,10 +45,22 @@
     Vector<CaptureDevice> getMediaStreamDevices() final;
     void createMediaStream(NewMediaStreamHandler, const String& audioDeviceID, const String& videoDeviceID, const MediaConstraints* audioConstraints, const MediaConstraints* videoConstraints) final;
 
-    RealtimeMediaSource::AudioCaptureFactory* defaultAudioFactory() final;
-    RealtimeMediaSource::VideoCaptureFactory* defaultVideoFactory() final;
+    RealtimeMediaSource::AudioCaptureFactory& defaultAudioFactory() final;
+    RealtimeMediaSource::VideoCaptureFactory& defaultVideoFactory() final;
+    CaptureDeviceManager& defaultAudioCaptureDeviceManager() final;
+    CaptureDeviceManager& defaultVideoCaptureDeviceManager() final;
 
     ExceptionOr<void> setDeviceEnabled(const String& persistentID, bool) final;
+
+    class MockCaptureDeviceManager final : public CaptureDeviceManager {
+    private:
+        Vector<CaptureDevice>& captureDevices() final { return m_devices; }
+
+        Vector<CaptureDevice> m_devices;
+    };
+
+    MockCaptureDeviceManager m_defaultAudioCaptureDeviceManager;
+    MockCaptureDeviceManager m_defaultVideoCaptureDeviceManager;
 };
 
 }

Modified: branches/safari-604.1.21-branch/Source/WebKit2/ChangeLog (216666 => 216667)


--- branches/safari-604.1.21-branch/Source/WebKit2/ChangeLog	2017-05-11 07:27:39 UTC (rev 216666)
+++ branches/safari-604.1.21-branch/Source/WebKit2/ChangeLog	2017-05-11 07:27:43 UTC (rev 216667)
@@ -1,5 +1,19 @@
 2017-05-10  Jason Marcell  <[email protected]>
 
+        Cherry-pick r216477. rdar://problem/32058957
+
+    2017-05-08  Youenn Fablet  <[email protected]>
+
+            Follow-up to bug 171710: use more references and reject if either audio or video source creation is failing
+            https://bugs.webkit.org/show_bug.cgi?id=171824
+
+            Reviewed by Alex Christensen.
+
+            * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
+            (WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):
+
+2017-05-10  Jason Marcell  <[email protected]>
+
         Cherry-pick r216475. rdar://problem/32041569
 
     2017-05-08  Brent Fulgham  <[email protected]>

Modified: branches/safari-604.1.21-branch/Source/WebKit2/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp (216666 => 216667)


--- branches/safari-604.1.21-branch/Source/WebKit2/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp	2017-05-11 07:27:39 UTC (rev 216666)
+++ branches/safari-604.1.21-branch/Source/WebKit2/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp	2017-05-11 07:27:43 UTC (rev 216667)
@@ -131,10 +131,10 @@
     auto constraints = MediaConstraintsImpl::create(MediaConstraintsData(constraintsData));
     switch (type) {
     case WebCore::RealtimeMediaSource::Type::Audio:
-        sourceOrError = RealtimeMediaSourceCenter::singleton().audioFactory()->createAudioCaptureSource(deviceID, constraints.ptr());
+        sourceOrError = RealtimeMediaSourceCenter::singleton().audioFactory().createAudioCaptureSource(deviceID, constraints.ptr());
         break;
     case WebCore::RealtimeMediaSource::Type::Video:
-        sourceOrError = RealtimeMediaSourceCenter::singleton().videoFactory()->createVideoCaptureSource(deviceID, constraints.ptr());
+        sourceOrError = RealtimeMediaSourceCenter::singleton().videoFactory().createVideoCaptureSource(deviceID, constraints.ptr());
         break;
     case WebCore::RealtimeMediaSource::Type::None:
         ASSERT_NOT_REACHED();
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to