Title: [239038] trunk/Source
- Revision
- 239038
- Author
- [email protected]
- Date
- 2018-12-10 11:53:43 -0800 (Mon, 10 Dec 2018)
Log Message
Make mock capture happen in the process used for real capture
https://bugs.webkit.org/show_bug.cgi?id=192544
Reviewed by Eric Carlson.
Source/WebCore:
MockRealtimeMediaSourceCenter previously was setting its factories whenever mock capture is on.
Add booleans to choose which source (audio, video, display) will actually be toggled on.
Covered by existing tests.
* platform/mock/MockRealtimeMediaSourceCenter.cpp:
(WebCore::MockRealtimeMediaSourceCenter::setMockRealtimeMediaSourceCenterEnabled):
* platform/mock/MockRealtimeMediaSourceCenter.h:
(WebCore::MockRealtimeMediaSourceCenter::setMockAudioCaptureEnabled):
(WebCore::MockRealtimeMediaSourceCenter::setMockVideoCaptureEnabled):
(WebCore::MockRealtimeMediaSourceCenter::setMockDisplayCaptureEnabled):
Source/WebKit:
Make mock capture happen in the right process by only overriding
factories by mock factories for source types that UserMediaCaptureManager will not override.
That way, UserMediaCaptureManager will be used to go to UIProcess, where mock will be used as if it was the real capture.
* WebProcess/cocoa/UserMediaCaptureManager.cpp:
(WebKit::UserMediaCaptureManager::initialize):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (239037 => 239038)
--- trunk/Source/WebCore/ChangeLog 2018-12-10 19:45:45 UTC (rev 239037)
+++ trunk/Source/WebCore/ChangeLog 2018-12-10 19:53:43 UTC (rev 239038)
@@ -1,3 +1,22 @@
+2018-12-10 Youenn Fablet <[email protected]>
+
+ Make mock capture happen in the process used for real capture
+ https://bugs.webkit.org/show_bug.cgi?id=192544
+
+ Reviewed by Eric Carlson.
+
+ MockRealtimeMediaSourceCenter previously was setting its factories whenever mock capture is on.
+ Add booleans to choose which source (audio, video, display) will actually be toggled on.
+
+ Covered by existing tests.
+
+ * platform/mock/MockRealtimeMediaSourceCenter.cpp:
+ (WebCore::MockRealtimeMediaSourceCenter::setMockRealtimeMediaSourceCenterEnabled):
+ * platform/mock/MockRealtimeMediaSourceCenter.h:
+ (WebCore::MockRealtimeMediaSourceCenter::setMockAudioCaptureEnabled):
+ (WebCore::MockRealtimeMediaSourceCenter::setMockVideoCaptureEnabled):
+ (WebCore::MockRealtimeMediaSourceCenter::setMockDisplayCaptureEnabled):
+
2018-12-10 Dean Jackson <[email protected]>
Use text/_javascript_ as recommended by the HTML specification
Modified: trunk/Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.cpp (239037 => 239038)
--- trunk/Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.cpp 2018-12-10 19:45:45 UTC (rev 239037)
+++ trunk/Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.cpp 2018-12-10 19:53:43 UTC (rev 239038)
@@ -193,15 +193,21 @@
MockRealtimeMediaSourceCenter& mock = singleton();
if (active) {
- center.setAudioFactory(mock.audioFactory());
- center.setVideoFactory(mock.videoFactory());
- center.setDisplayCaptureFactory(mock.displayCaptureFactory());
+ if (mock.m_isMockAudioCaptureEnabled)
+ center.setAudioFactory(mock.audioFactory());
+ if (mock.m_isMockVideoCaptureEnabled)
+ center.setVideoFactory(mock.videoFactory());
+ if (mock.m_isMockDisplayCaptureEnabled)
+ center.setDisplayCaptureFactory(mock.displayCaptureFactory());
return;
}
- center.unsetAudioFactory(mock.audioFactory());
- center.unsetVideoFactory(mock.videoFactory());
- center.unsetDisplayCaptureFactory(mock.displayCaptureFactory());
+ if (mock.m_isMockAudioCaptureEnabled)
+ center.unsetAudioFactory(mock.audioFactory());
+ if (mock.m_isMockVideoCaptureEnabled)
+ center.unsetVideoFactory(mock.videoFactory());
+ if (mock.m_isMockDisplayCaptureEnabled)
+ center.unsetDisplayCaptureFactory(mock.displayCaptureFactory());
}
static void createCaptureDevice(const MockMediaDevice& device)
Modified: trunk/Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.h (239037 => 239038)
--- trunk/Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.h 2018-12-10 19:45:45 UTC (rev 239037)
+++ trunk/Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.h 2018-12-10 19:53:43 UTC (rev 239038)
@@ -38,7 +38,7 @@
class MockRealtimeMediaSourceCenter {
public:
- static MockRealtimeMediaSourceCenter& singleton();
+ WEBCORE_EXPORT static MockRealtimeMediaSourceCenter& singleton();
WEBCORE_EXPORT static void setMockRealtimeMediaSourceCenterEnabled(bool);
@@ -47,6 +47,10 @@
WEBCORE_EXPORT static void removeDevice(const String& persistentId);
WEBCORE_EXPORT static void resetDevices();
+ void setMockAudioCaptureEnabled(bool isEnabled) { m_isMockAudioCaptureEnabled = isEnabled; }
+ void setMockVideoCaptureEnabled(bool isEnabled) { m_isMockVideoCaptureEnabled = isEnabled; }
+ void setMockDisplayCaptureEnabled(bool isEnabled) { m_isMockDisplayCaptureEnabled = isEnabled; }
+
static Vector<CaptureDevice>& audioDevices();
static Vector<CaptureDevice>& videoDevices();
static Vector<CaptureDevice>& displayDevices();
@@ -85,6 +89,10 @@
MockAudioCaptureDeviceManager m_audioCaptureDeviceManager;
MockVideoCaptureDeviceManager m_videoCaptureDeviceManager;
MockDisplayCaptureDeviceManager m_displayCaptureDeviceManager;
+
+ bool m_isMockAudioCaptureEnabled { true };
+ bool m_isMockVideoCaptureEnabled { true };
+ bool m_isMockDisplayCaptureEnabled { true };
};
}
Modified: trunk/Source/WebKit/ChangeLog (239037 => 239038)
--- trunk/Source/WebKit/ChangeLog 2018-12-10 19:45:45 UTC (rev 239037)
+++ trunk/Source/WebKit/ChangeLog 2018-12-10 19:53:43 UTC (rev 239038)
@@ -1,3 +1,17 @@
+2018-12-10 Youenn Fablet <[email protected]>
+
+ Make mock capture happen in the process used for real capture
+ https://bugs.webkit.org/show_bug.cgi?id=192544
+
+ Reviewed by Eric Carlson.
+
+ Make mock capture happen in the right process by only overriding
+ factories by mock factories for source types that UserMediaCaptureManager will not override.
+ That way, UserMediaCaptureManager will be used to go to UIProcess, where mock will be used as if it was the real capture.
+
+ * WebProcess/cocoa/UserMediaCaptureManager.cpp:
+ (WebKit::UserMediaCaptureManager::initialize):
+
2018-12-10 Alexey Proskuryakov <[email protected]>
Move ENABLE_SEC_ITEM_SHIM out of WebKit's config.h
Modified: trunk/Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.cpp (239037 => 239038)
--- trunk/Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.cpp 2018-12-10 19:45:45 UTC (rev 239037)
+++ trunk/Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.cpp 2018-12-10 19:53:43 UTC (rev 239038)
@@ -37,6 +37,7 @@
#include <WebCore/CaptureDevice.h>
#include <WebCore/ImageTransferSessionVT.h>
#include <WebCore/MediaConstraints.h>
+#include <WebCore/MockRealtimeMediaSourceCenter.h>
#include <WebCore/RealtimeMediaSourceCenter.h>
#include <WebCore/RemoteVideoSample.h>
#include <WebCore/WebAudioBufferList.h>
@@ -218,6 +219,10 @@
void UserMediaCaptureManager::initialize(const WebProcessCreationParameters& parameters)
{
+ MockRealtimeMediaSourceCenter::singleton().setMockAudioCaptureEnabled(!parameters.shouldCaptureAudioInUIProcess);
+ MockRealtimeMediaSourceCenter::singleton().setMockVideoCaptureEnabled(!parameters.shouldCaptureVideoInUIProcess);
+ MockRealtimeMediaSourceCenter::singleton().setMockDisplayCaptureEnabled(!parameters.shouldCaptureDisplayInUIProcess);
+
if (parameters.shouldCaptureAudioInUIProcess)
RealtimeMediaSourceCenter::setAudioFactory(*this);
if (parameters.shouldCaptureVideoInUIProcess)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes