Diff
Modified: trunk/Source/WebCore/ChangeLog (236854 => 236855)
--- trunk/Source/WebCore/ChangeLog 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/ChangeLog 2018-10-04 22:25:04 UTC (rev 236855)
@@ -1,3 +1,16 @@
+2018-10-04 Matt Lewis <jlew...@apple.com>
+
+ Unreviewed, rolling out r236730.
+
+ This caused a consistent crash in test http/tests/media/media-stream/get-display-media-prompt.html.
+
+ Reverted changeset:
+
+ "[MediaStream] RealtimeMediaSource should be able to vend
+ hashed IDs"
+ https://bugs.webkit.org/show_bug.cgi?id=190142
+ https://trac.webkit.org/changeset/236730
+
2018-10-04 Wenson Hsieh <wenson_hs...@apple.com>
[macOS] Fix some font attribute conversion bugs in preparation for "Font > Styles…" support in WebKit2
Modified: trunk/Source/WebCore/Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp (236854 => 236855)
--- trunk/Source/WebCore/Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp 2018-10-04 22:25:04 UTC (rev 236855)
@@ -66,7 +66,7 @@
// FIXME: Give source id and name
CanvasCaptureMediaStreamTrack::Source::Source(HTMLCanvasElement& canvas, std::optional<double>&& frameRequestRate)
- : RealtimeMediaSource(Type::Video, "CanvasCaptureMediaStreamTrack"_s)
+ : RealtimeMediaSource(String(), Type::Video, String())
, m_frameRequestRate(WTFMove(frameRequestRate))
, m_requestFrameTimer(*this, &Source::requestFrameTimerFired)
, m_canvasChangedTimer(*this, &Source::captureCanvas)
Modified: trunk/Source/WebCore/Modules/mediastream/MediaDevicesRequest.cpp (236854 => 236855)
--- trunk/Source/WebCore/Modules/mediastream/MediaDevicesRequest.cpp 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/Modules/mediastream/MediaDevicesRequest.cpp 2018-10-04 22:25:04 UTC (rev 236855)
@@ -117,7 +117,7 @@
if (!scriptExecutionContext())
return;
- auto& document = downcast<Document>(*scriptExecutionContext());
+ Document& document = downcast<Document>(*scriptExecutionContext());
document.setDeviceIDHashSalt(deviceIdentifierHashSalt);
Vector<Ref<MediaDeviceInfo>> devices;
Modified: trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp (236854 => 236855)
--- trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp 2018-10-04 22:25:04 UTC (rev 236855)
@@ -197,7 +197,7 @@
configureTrackRendering();
}
-MediaStreamTrack::TrackSettings MediaStreamTrack::getSettings() const
+MediaStreamTrack::TrackSettings MediaStreamTrack::getSettings(Document& document) const
{
auto& settings = m_private->settings();
TrackSettings result;
@@ -220,9 +220,9 @@
if (settings.supportsEchoCancellation())
result.echoCancellation = settings.echoCancellation();
if (settings.supportsDeviceId())
- result.deviceId = settings.deviceId();
+ result.deviceId = RealtimeMediaSourceCenter::singleton().hashStringWithSalt(settings.deviceId(), document.deviceIDHashSalt());
if (settings.supportsGroupId())
- result.groupId = settings.groupId();
+ result.groupId = RealtimeMediaSourceCenter::singleton().hashStringWithSalt(settings.groupId(), document.deviceIDHashSalt());
// FIXME: shouldn't this include displaySurface and logicalSurface?
@@ -287,7 +287,7 @@
return result;
}
-MediaStreamTrack::TrackCapabilities MediaStreamTrack::getCapabilities() const
+MediaStreamTrack::TrackCapabilities MediaStreamTrack::getCapabilities(Document& document) const
{
auto capabilities = m_private->capabilities();
TrackCapabilities result;
@@ -310,9 +310,9 @@
if (capabilities.supportsEchoCancellation())
result.echoCancellation = capabilityBooleanVector(capabilities.echoCancellation());
if (capabilities.supportsDeviceId())
- result.deviceId = capabilities.deviceId();
+ result.deviceId = RealtimeMediaSourceCenter::singleton().hashStringWithSalt(capabilities.deviceId(), document.deviceIDHashSalt());
if (capabilities.supportsGroupId())
- result.groupId = capabilities.groupId();
+ result.groupId = RealtimeMediaSourceCenter::singleton().hashStringWithSalt(capabilities.groupId(), document.deviceIDHashSalt());
return result;
}
Modified: trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h (236854 => 236855)
--- trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h 2018-10-04 22:25:04 UTC (rev 236855)
@@ -105,7 +105,7 @@
String deviceId;
String groupId;
};
- TrackSettings getSettings() const;
+ TrackSettings getSettings(Document&) const;
struct TrackCapabilities {
std::optional<LongRange> width;
@@ -120,7 +120,7 @@
String deviceId;
String groupId;
};
- TrackCapabilities getCapabilities() const;
+ TrackCapabilities getCapabilities(Document&) const;
const MediaTrackConstraints& getConstraints() const { return m_constraints; }
void applyConstraints(const std::optional<MediaTrackConstraints>&, DOMPromiseDeferred<void>&&);
Modified: trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.idl (236854 => 236855)
--- trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.idl 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.idl 2018-10-04 22:25:04 UTC (rev 236855)
@@ -47,9 +47,9 @@
MediaStreamTrack clone();
[ImplementedAs=stopTrack] void stop();
- MediaTrackCapabilities getCapabilities();
+ [CallWith=Document] MediaTrackCapabilities getCapabilities();
MediaTrackConstraints getConstraints();
- MediaTrackSettings getSettings();
+ [CallWith=Document] MediaTrackSettings getSettings();
Promise<void> applyConstraints(optional MediaTrackConstraints constraints);
attribute EventHandler onoverconstrained;
Modified: trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.cpp (236854 => 236855)
--- trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.cpp 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.cpp 2018-10-04 22:25:04 UTC (rev 236855)
@@ -300,15 +300,16 @@
m_pendingActivationMediaStream = PendingActivationMediaStream::create(WTFMove(protector), *this, WTFMove(stream));
};
- auto& document = downcast<Document>(*scriptExecutionContext());
- document.setDeviceIDHashSalt(deviceIdentifierHashSalt);
+ m_request.audioConstraints.deviceIDHashSalt = deviceIdentifierHashSalt;
+ m_request.videoConstraints.deviceIDHashSalt = WTFMove(deviceIdentifierHashSalt);
- RealtimeMediaSourceCenter::singleton().createMediaStream(WTFMove(callback), WTFMove(deviceIdentifierHashSalt), WTFMove(audioDevice), WTFMove(videoDevice), m_request);
+ RealtimeMediaSourceCenter::singleton().createMediaStream(WTFMove(callback), WTFMove(audioDevice), WTFMove(videoDevice), m_request);
if (!m_scriptExecutionContext)
return;
#if ENABLE(WEB_RTC)
+ auto& document = downcast<Document>(*m_scriptExecutionContext);
if (auto* page = document.page())
page->rtcController().disableICECandidateFilteringForDocument(document);
#endif
Modified: trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp (236854 => 236855)
--- trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp 2018-10-04 22:25:04 UTC (rev 236855)
@@ -235,8 +235,7 @@
Ref<RTCRtpReceiver> LibWebRTCPeerConnectionBackend::createReceiverForSource(Ref<RealtimeMediaSource>&& source, std::unique_ptr<RTCRtpReceiverBackend>&& backend)
{
- String trackID = source->persistentID();
- auto remoteTrackPrivate = MediaStreamTrackPrivate::create(WTFMove(source), WTFMove(trackID));
+ auto remoteTrackPrivate = MediaStreamTrackPrivate::create(WTFMove(source), String { source->id() });
auto remoteTrack = MediaStreamTrack::create(*m_peerConnection.scriptExecutionContext(), WTFMove(remoteTrackPrivate));
return RTCRtpReceiver::create(*this, WTFMove(remoteTrack), WTFMove(backend));
Modified: trunk/Source/WebCore/Modules/webaudio/MediaStreamAudioSource.cpp (236854 => 236855)
--- trunk/Source/WebCore/Modules/webaudio/MediaStreamAudioSource.cpp 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/Modules/webaudio/MediaStreamAudioSource.cpp 2018-10-04 22:25:04 UTC (rev 236855)
@@ -34,7 +34,7 @@
namespace WebCore {
MediaStreamAudioSource::MediaStreamAudioSource(float sampleRate)
- : RealtimeMediaSource(RealtimeMediaSource::Type::Audio, "MediaStreamAudioDestinationNode"_s)
+ : RealtimeMediaSource(makeString("WebAudio-"_s, createCanonicalUUIDString()), RealtimeMediaSource::Type::Audio, "MediaStreamAudioDestinationNode")
{
m_currentSettings.setSampleRate(sampleRate);
}
Modified: trunk/Source/WebCore/dom/Document.cpp (236854 => 236855)
--- trunk/Source/WebCore/dom/Document.cpp 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/dom/Document.cpp 2018-10-04 22:25:04 UTC (rev 236855)
@@ -7738,13 +7738,6 @@
for (auto* mediaElement : m_mediaStreamStateChangeElements)
mediaElement->mediaStreamCaptureStarted();
}
-
-void Document::setDeviceIDHashSalt(const String& salt)
-{
- ASSERT(m_idHashSalt.isEmpty() || m_idHashSalt == salt);
- m_idHashSalt = salt;
-}
-
#endif
void Document::addApplicationStateChangeListener(ApplicationStateChangeListener& listener)
Modified: trunk/Source/WebCore/dom/Document.h (236854 => 236855)
--- trunk/Source/WebCore/dom/Document.h 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/dom/Document.h 2018-10-04 22:25:04 UTC (rev 236855)
@@ -1391,7 +1391,7 @@
#if ENABLE(MEDIA_STREAM)
void setHasCaptureMediaStreamTrack() { m_hasHadCaptureMediaStreamTrack = true; }
bool hasHadCaptureMediaStreamTrack() const { return m_hasHadCaptureMediaStreamTrack; }
- void setDeviceIDHashSalt(const String&);
+ void setDeviceIDHashSalt(const String& salt) { m_idHashSalt = salt; }
String deviceIDHashSalt() const { return m_idHashSalt; }
void stopMediaCapture();
void registerForMediaStreamStateChangeCallbacks(HTMLMediaElement&);
Modified: trunk/Source/WebCore/platform/mediastream/MediaConstraints.h (236854 => 236855)
--- trunk/Source/WebCore/platform/mediastream/MediaConstraints.h 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/platform/mediastream/MediaConstraints.h 2018-10-04 22:25:04 UTC (rev 236855)
@@ -879,6 +879,7 @@
MediaTrackConstraintSetMap mandatoryConstraints;
Vector<MediaTrackConstraintSetMap> advancedConstraints;
+ String deviceIDHashSalt;
bool isValid { false };
};
Modified: trunk/Source/WebCore/platform/mediastream/RealtimeIncomingAudioSource.cpp (236854 => 236855)
--- trunk/Source/WebCore/platform/mediastream/RealtimeIncomingAudioSource.cpp 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeIncomingAudioSource.cpp 2018-10-04 22:25:04 UTC (rev 236855)
@@ -38,9 +38,10 @@
namespace WebCore {
RealtimeIncomingAudioSource::RealtimeIncomingAudioSource(rtc::scoped_refptr<webrtc::AudioTrackInterface>&& audioTrack, String&& audioTrackId)
- : RealtimeMediaSource(RealtimeMediaSource::Type::Audio, "remote audio"_s, WTFMove(audioTrackId))
+ : RealtimeMediaSource(WTFMove(audioTrackId), RealtimeMediaSource::Type::Audio, String())
, m_audioTrack(WTFMove(audioTrack))
{
+ setName("remote audio");
notifyMutedChange(!m_audioTrack);
}
Modified: trunk/Source/WebCore/platform/mediastream/RealtimeIncomingVideoSource.cpp (236854 => 236855)
--- trunk/Source/WebCore/platform/mediastream/RealtimeIncomingVideoSource.cpp 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeIncomingVideoSource.cpp 2018-10-04 22:25:04 UTC (rev 236855)
@@ -38,9 +38,10 @@
namespace WebCore {
RealtimeIncomingVideoSource::RealtimeIncomingVideoSource(rtc::scoped_refptr<webrtc::VideoTrackInterface>&& videoTrack, String&& videoTrackId)
- : RealtimeMediaSource(RealtimeMediaSource::Type::Video, "remote video"_s, WTFMove(videoTrackId))
+ : RealtimeMediaSource(WTFMove(videoTrackId), RealtimeMediaSource::Type::Video, String())
, m_videoTrack(WTFMove(videoTrack))
{
+ setName("remote video");
notifyMutedChange(!m_videoTrack);
RealtimeMediaSourceSupportedConstraints constraints;
Modified: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp (236854 => 236855)
--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp 2018-10-04 22:25:04 UTC (rev 236855)
@@ -47,16 +47,14 @@
namespace WebCore {
-RealtimeMediaSource::RealtimeMediaSource(Type type, String&& name, String&& deviceID, String&& hashSalt)
- : m_idHashSalt(WTFMove(hashSalt))
- , m_persistentID(WTFMove(deviceID))
+RealtimeMediaSource::RealtimeMediaSource(const String& id, Type type, const String& name)
+ : m_id(id)
, m_type(type)
- , m_name(WTFMove(name))
+ , m_name(name)
{
- if (m_persistentID.isEmpty())
- m_persistentID = createCanonicalUUIDString();
- else
- m_hashedID = RealtimeMediaSourceCenter::singleton().hashStringWithSalt(m_persistentID, m_idHashSalt);
+ if (m_id.isEmpty())
+ m_id = createCanonicalUUIDString();
+ m_persistentID = m_id;
}
void RealtimeMediaSource::addObserver(RealtimeMediaSource::Observer& observer)
@@ -610,9 +608,10 @@
return false;
ASSERT(constraint.isString());
- ASSERT(!m_hashedID.isEmpty());
+ ASSERT(!constraints.deviceIDHashSalt.isEmpty());
- double constraintDistance = downcast<StringConstraint>(constraint).fitnessDistance(m_hashedID);
+ 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;
@@ -959,17 +958,6 @@
});
}
-const String& RealtimeMediaSource::hashedId() const
-{
- ASSERT(!m_hashedID.isEmpty());
- return m_hashedID;
-}
-
-String RealtimeMediaSource::deviceIDHashSalt() const
-{
- return m_idHashSalt;
-}
-
RealtimeMediaSource::Observer::~Observer()
{
}
Modified: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.h (236854 => 236855)
--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.h 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSource.h 2018-10-04 22:25:04 UTC (rev 236855)
@@ -88,10 +88,10 @@
virtual ~RealtimeMediaSource() = default;
- const String& hashedId() const;
- String deviceIDHashSalt() const;
+ const String& id() const { return m_id; }
const String& persistentID() const { return m_persistentID; }
+ virtual void setPersistentID(String&& persistentID) { m_persistentID = WTFMove(persistentID); }
enum class Type { None, Audio, Video };
Type type() const { return m_type; }
@@ -166,7 +166,7 @@
virtual void delaySamples(Seconds) { };
protected:
- RealtimeMediaSource(Type, String&& name, String&& deviceID = { }, String&& hashSalt = { });
+ RealtimeMediaSource(const String& id, Type, const String& name);
void scheduleDeferredTask(WTF::Function<void()>&&);
@@ -204,8 +204,7 @@
bool m_muted { false };
- String m_idHashSalt;
- String m_hashedID;
+ String m_id;
String m_persistentID;
Type m_type;
String m_name;
Modified: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.cpp (236854 => 236855)
--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.cpp 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.cpp 2018-10-04 22:25:04 UTC (rev 236855)
@@ -79,7 +79,7 @@
RealtimeMediaSourceCenter::~RealtimeMediaSourceCenter() = default;
-void RealtimeMediaSourceCenter::createMediaStream(NewMediaStreamHandler&& completionHandler, String&& hashSalt, CaptureDevice&& audioDevice, CaptureDevice&& videoDevice, const MediaStreamRequest& request)
+void RealtimeMediaSourceCenter::createMediaStream(NewMediaStreamHandler&& completionHandler, CaptureDevice&& audioDevice, CaptureDevice&& videoDevice, const MediaStreamRequest& request)
{
Vector<Ref<RealtimeMediaSource>> audioSources;
Vector<Ref<RealtimeMediaSource>> videoSources;
@@ -86,7 +86,7 @@
String invalidConstraint;
if (audioDevice) {
- auto audioSource = audioFactory().createAudioCaptureSource(WTFMove(audioDevice), String { hashSalt }, &request.audioConstraints);
+ auto audioSource = audioFactory().createAudioCaptureSource(WTFMove(audioDevice), &request.audioConstraints);
if (audioSource)
audioSources.append(audioSource.source());
else {
@@ -102,7 +102,7 @@
if (videoDevice) {
CaptureSourceOrError videoSource;
if (videoDevice.type() == CaptureDevice::DeviceType::Camera)
- videoSource = videoFactory().createVideoCaptureSource(WTFMove(videoDevice), WTFMove(hashSalt), &request.videoConstraints);
+ videoSource = videoFactory().createVideoCaptureSource(WTFMove(videoDevice), &request.videoConstraints);
else
videoSource = displayCaptureFactory().createDisplayCaptureSource(WTFMove(videoDevice), &request.videoConstraints);
@@ -231,7 +231,7 @@
}
}
-void RealtimeMediaSourceCenter::getUserMediaDevices(const MediaStreamRequest& request, String&& hashSalt, Vector<DeviceInfo>& audioDeviceInfo, Vector<DeviceInfo>& videoDeviceInfo, String& firstInvalidConstraint)
+void RealtimeMediaSourceCenter::getUserMediaDevices(const MediaStreamRequest& request, Vector<DeviceInfo>& audioDeviceInfo, Vector<DeviceInfo>& videoDeviceInfo, String& firstInvalidConstraint)
{
String invalidConstraint;
if (request.audioConstraints.isValid) {
@@ -239,7 +239,7 @@
if (!device.enabled())
continue;
- auto sourceOrError = audioFactory().createAudioCaptureSource(device, String { hashSalt }, { });
+ auto sourceOrError = audioFactory().createAudioCaptureSource(device, { });
if (sourceOrError && sourceOrError.captureSource->supportsConstraints(request.audioConstraints, invalidConstraint))
audioDeviceInfo.append({sourceOrError.captureSource->fitnessScore(), device});
@@ -253,7 +253,7 @@
if (!device.enabled())
continue;
- auto sourceOrError = videoFactory().createVideoCaptureSource(device, String { hashSalt }, { });
+ auto sourceOrError = videoFactory().createVideoCaptureSource(device, { });
if (sourceOrError && sourceOrError.captureSource->supportsConstraints(request.videoConstraints, invalidConstraint))
videoDeviceInfo.append({sourceOrError.captureSource->fitnessScore(), device});
@@ -279,7 +279,7 @@
if (request.type == MediaStreamRequest::Type::DisplayMedia)
getDisplayMediaDevices(request, videoDeviceInfo, firstInvalidConstraint);
else
- getUserMediaDevices(request, String { deviceIdentifierHashSalt }, audioDeviceInfo, videoDeviceInfo, firstInvalidConstraint);
+ getUserMediaDevices(request, audioDeviceInfo, videoDeviceInfo, firstInvalidConstraint);
if ((request.audioConstraints.isValid && audioDeviceInfo.isEmpty()) || (request.videoConstraints.isValid && videoDeviceInfo.isEmpty())) {
invalidHandler(firstInvalidConstraint);
Modified: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.h (236854 => 236855)
--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.h 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.h 2018-10-04 22:25:04 UTC (rev 236855)
@@ -65,7 +65,7 @@
virtual void validateRequestConstraints(ValidConstraintsHandler&&, InvalidConstraintsHandler&&, const MediaStreamRequest&, String&&);
using NewMediaStreamHandler = WTF::Function<void(RefPtr<MediaStreamPrivate>&&)>;
- virtual void createMediaStream(NewMediaStreamHandler&&, String&&, CaptureDevice&& audioDevice, CaptureDevice&& videoDevice, const MediaStreamRequest&);
+ virtual void createMediaStream(NewMediaStreamHandler&&, CaptureDevice&& audioDevice, CaptureDevice&& videoDevice, const MediaStreamRequest&);
WEBCORE_EXPORT virtual Vector<CaptureDevice> getMediaStreamDevices();
WEBCORE_EXPORT std::optional<CaptureDevice> captureDeviceWithPersistentID(CaptureDevice::DeviceType, const String&);
@@ -110,7 +110,7 @@
};
void getDisplayMediaDevices(const MediaStreamRequest&, Vector<DeviceInfo>&, String&);
- void getUserMediaDevices(const MediaStreamRequest&, String&&, Vector<DeviceInfo>& audioDevices, Vector<DeviceInfo>& videoDevices, String&);
+ void getUserMediaDevices(const MediaStreamRequest&, Vector<DeviceInfo>& audioDevices, Vector<DeviceInfo>& videoDevices, String&);
WTF::Function<void()> m_deviceChangedObserver;
};
Modified: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceFactory.cpp (236854 => 236855)
--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceFactory.cpp 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceFactory.cpp 2018-10-04 22:25:04 UTC (rev 236855)
@@ -26,13 +26,14 @@
#include "config.h"
#include "RealtimeMediaSourceFactory.h"
+#include "CaptureDevice.h"
+#include "RealtimeMediaSource.h"
+
#if ENABLE(MEDIA_STREAM)
-#include "CaptureDevice.h"
#include "CaptureDeviceManager.h"
#include "Logging.h"
#include "MediaStreamPrivate.h"
-#include "RealtimeMediaSource.h"
#include <wtf/SHA1.h>
namespace WebCore {
Modified: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceFactory.h (236854 => 236855)
--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceFactory.h 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceFactory.h 2018-10-04 22:25:04 UTC (rev 236855)
@@ -27,16 +27,15 @@
#if ENABLE(MEDIA_STREAM)
-#include <wtf/text/WTFString.h>
-
namespace WebCore {
class CaptureDevice;
class RealtimeMediaSource;
-struct CaptureSourceOrError;
struct MediaConstraints;
+struct CaptureSourceOrError;
+
class SingleSourceFactory {
public:
void setActiveSource(RealtimeMediaSource&);
@@ -54,7 +53,7 @@
{
public:
virtual ~AudioCaptureFactory() = default;
- virtual CaptureSourceOrError createAudioCaptureSource(const CaptureDevice&, String&&, const MediaConstraints*) = 0;
+ virtual CaptureSourceOrError createAudioCaptureSource(const CaptureDevice&, const MediaConstraints*) = 0;
protected:
AudioCaptureFactory() = default;
@@ -67,7 +66,7 @@
{
public:
virtual ~VideoCaptureFactory() = default;
- virtual CaptureSourceOrError createVideoCaptureSource(const CaptureDevice&, String&&, const MediaConstraints*) = 0;
+ virtual CaptureSourceOrError createVideoCaptureSource(const CaptureDevice&, const MediaConstraints*) = 0;
virtual void setVideoCapturePageState(bool, bool) { }
protected:
Modified: trunk/Source/WebCore/platform/mediastream/RealtimeVideoSource.cpp (236854 => 236855)
--- trunk/Source/WebCore/platform/mediastream/RealtimeVideoSource.cpp 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeVideoSource.cpp 2018-10-04 22:25:04 UTC (rev 236855)
@@ -34,8 +34,8 @@
namespace WebCore {
-RealtimeVideoSource::RealtimeVideoSource(String&& name, String&& id, String&& hashSalt)
- : RealtimeMediaSource(Type::Video, WTFMove(name), WTFMove(id), WTFMove(hashSalt))
+RealtimeVideoSource::RealtimeVideoSource(const String& id, const String& name)
+ : RealtimeMediaSource(id, Type::Video, name)
{
}
Modified: trunk/Source/WebCore/platform/mediastream/RealtimeVideoSource.h (236854 => 236855)
--- trunk/Source/WebCore/platform/mediastream/RealtimeVideoSource.h 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeVideoSource.h 2018-10-04 22:25:04 UTC (rev 236855)
@@ -42,7 +42,7 @@
virtual ~RealtimeVideoSource();
protected:
- RealtimeVideoSource(String&& name, String&& id, String&& hashSalt);
+ RealtimeVideoSource(const String& id, const String& name);
void prepareToProduceData();
bool supportsSizeAndFrameRate(std::optional<int> width, std::optional<int> height, std::optional<double>) override;
Modified: trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCaptureSource.cpp (236854 => 236855)
--- trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCaptureSource.cpp 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCaptureSource.cpp 2018-10-04 22:25:04 UTC (rev 236855)
@@ -53,9 +53,9 @@
class GStreamerAudioCaptureSourceFactory : public AudioCaptureFactory {
public:
- CaptureSourceOrError createAudioCaptureSource(const CaptureDevice& device, String&& hashSalt, const MediaConstraints* constraints) final
+ CaptureSourceOrError createAudioCaptureSource(const CaptureDevice& device, const MediaConstraints* constraints) final
{
- return GStreamerAudioCaptureSource::create(String { device.persistentId() }, WTFMove(hashSalt), constraints);
+ return GStreamerAudioCaptureSource::create(device.persistentId(), constraints);
}
};
@@ -65,7 +65,7 @@
return factory.get();
}
-CaptureSourceOrError GStreamerAudioCaptureSource::create(String&& deviceID, String&& hashSalt, const MediaConstraints* constraints)
+CaptureSourceOrError GStreamerAudioCaptureSource::create(const String& deviceID, const MediaConstraints* constraints)
{
auto device = GStreamerAudioCaptureDeviceManager::singleton().gstreamerDeviceWithUID(deviceID);
if (!device) {
@@ -73,7 +73,7 @@
return CaptureSourceOrError(WTFMove(errorMessage));
}
- auto source = adoptRef(*new GStreamerAudioCaptureSource(device.value(), WTFMove(hashSalt)));
+ auto source = adoptRef(*new GStreamerAudioCaptureSource(device.value()));
if (constraints) {
auto result = source->applyConstraints(*constraints);
@@ -88,15 +88,15 @@
return libWebRTCAudioCaptureSourceFactory();
}
-GStreamerAudioCaptureSource::GStreamerAudioCaptureSource(GStreamerCaptureDevice device, String&& hashSalt)
- : RealtimeMediaSource(RealtimeMediaSource::Type::Audio, String { device.persistentId() }, String { device.label() }, WTFMove(hashSalt))
+GStreamerAudioCaptureSource::GStreamerAudioCaptureSource(GStreamerCaptureDevice device)
+ : RealtimeMediaSource(device.persistentId(), RealtimeMediaSource::Type::Audio, device.label())
, m_capturer(std::make_unique<GStreamerAudioCapturer>(device))
{
initializeGStreamerDebug();
}
-GStreamerAudioCaptureSource::GStreamerAudioCaptureSource(String&& deviceID, String&& name, String&& hashSalt)
- : RealtimeMediaSource(RealtimeMediaSource::Type::Audio, WTFMove(deviceID), WTFMove(name), WTFMove(hashSalt))
+GStreamerAudioCaptureSource::GStreamerAudioCaptureSource(const String& deviceID, const String& name)
+ : RealtimeMediaSource(deviceID, RealtimeMediaSource::Type::Audio, name)
, m_capturer(std::make_unique<GStreamerAudioCapturer>())
{
initializeGStreamerDebug();
@@ -163,7 +163,7 @@
}
RealtimeMediaSourceCapabilities capabilities(settings().supportedConstraints());
- capabilities.setDeviceId(hashedId());
+ capabilities.setDeviceId(id());
capabilities.setEchoCancellation(defaultEchoCancellationCapability);
capabilities.setVolume(defaultVolumeCapability());
capabilities.setSampleRate(CapabilityValueOrRange(minSampleRate, maxSampleRate));
@@ -182,7 +182,7 @@
{
if (!m_currentSettings) {
RealtimeMediaSourceSettings settings;
- settings.setDeviceId(hashedId());
+ settings.setDeviceId(id());
RealtimeMediaSourceSupportedConstraints supportedConstraints;
supportedConstraints.setSupportsDeviceId(true);
Modified: trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCaptureSource.h (236854 => 236855)
--- trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCaptureSource.h 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCaptureSource.h 2018-10-04 22:25:04 UTC (rev 236855)
@@ -30,7 +30,7 @@
class GStreamerAudioCaptureSource : public RealtimeMediaSource {
public:
- static CaptureSourceOrError create(String&& deviceID, String&& hashSalt, const MediaConstraints*);
+ static CaptureSourceOrError create(const String& deviceID, const MediaConstraints*);
WEBCORE_EXPORT static AudioCaptureFactory& factory();
const RealtimeMediaSourceCapabilities& capabilities() override;
@@ -40,8 +40,8 @@
GStreamerCapturer* capturer() { return m_capturer.get(); }
protected:
- GStreamerAudioCaptureSource(GStreamerCaptureDevice, String&& hashSalt);
- GStreamerAudioCaptureSource(String&& deviceID, String&& name, String&& hashSalt);
+ GStreamerAudioCaptureSource(GStreamerCaptureDevice);
+ GStreamerAudioCaptureSource(const String& deviceID, const String& name);
virtual ~GStreamerAudioCaptureSource();
void startProducingData() override;
void stopProducingData() override;
Modified: trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp (236854 => 236855)
--- trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp 2018-10-04 22:25:04 UTC (rev 236855)
@@ -54,9 +54,9 @@
class GStreamerVideoCaptureSourceFactory final : public VideoCaptureFactory {
public:
- CaptureSourceOrError createVideoCaptureSource(const CaptureDevice& device, String&& hashSalt, const MediaConstraints* constraints) final
+ CaptureSourceOrError createVideoCaptureSource(const CaptureDevice& device, const MediaConstraints* constraints) final
{
- return GStreamerVideoCaptureSource::create(String { device.persistentId() }, WTFMove(hashSalt), constraints);
+ return GStreamerVideoCaptureSource::create(device.persistentId(), constraints);
}
};
@@ -81,7 +81,7 @@
return factory.get();
}
-CaptureSourceOrError GStreamerVideoCaptureSource::create(String&& deviceID, String&& hashSalt, const MediaConstraints* constraints)
+CaptureSourceOrError GStreamerVideoCaptureSource::create(const String& deviceID, const MediaConstraints* constraints)
{
auto device = GStreamerVideoCaptureDeviceManager::singleton().gstreamerDeviceWithUID(deviceID);
if (!device) {
@@ -89,7 +89,7 @@
return CaptureSourceOrError(WTFMove(errorMessage));
}
- auto source = adoptRef(*new GStreamerVideoCaptureSource(device.value(), WTFMove(hashSalt)));
+ auto source = adoptRef(*new GStreamerVideoCaptureSource(device.value()));
if (constraints) {
auto result = source->applyConstraints(*constraints);
@@ -109,15 +109,15 @@
return libWebRTCDisplayCaptureSourceFactory();
}
-GStreamerVideoCaptureSource::GStreamerVideoCaptureSource(String&& deviceID, String&& name, String&& hashSalt, const gchar *source_factory)
- : RealtimeMediaSource(RealtimeMediaSource::Type::Video, WTFMove(deviceID), WTFMove(name), WTFMove(hashSalt))
+GStreamerVideoCaptureSource::GStreamerVideoCaptureSource(const String& deviceID, const String& name, const gchar *source_factory)
+ : RealtimeMediaSource(deviceID, RealtimeMediaSource::Type::Video, name)
, m_capturer(std::make_unique<GStreamerVideoCapturer>(source_factory))
{
initializeGStreamerDebug();
}
-GStreamerVideoCaptureSource::GStreamerVideoCaptureSource(GStreamerCaptureDevice device, String&& hashSalt)
- : RealtimeMediaSource(RealtimeMediaSource::Type::Video, String { device.persistentId() }, String { device.label() }, WTFMove(hashSalt))
+GStreamerVideoCaptureSource::GStreamerVideoCaptureSource(GStreamerCaptureDevice device)
+ : RealtimeMediaSource(device.persistentId(), RealtimeMediaSource::Type::Video, device.label())
, m_capturer(std::make_unique<GStreamerVideoCapturer>(device))
{
initializeGStreamerDebug();
@@ -242,7 +242,7 @@
}
}
- capabilities.setDeviceId(hashedId());
+ capabilities.setDeviceId(id());
capabilities.setWidth(CapabilityValueOrRange(minWidth, maxWidth));
capabilities.setHeight(CapabilityValueOrRange(minHeight, maxHeight));
capabilities.setFrameRate(CapabilityValueOrRange(minFramerate, maxFramerate));
@@ -256,7 +256,7 @@
{
if (!m_currentSettings) {
RealtimeMediaSourceSettings settings;
- settings.setDeviceId(hashedId());
+ settings.setDeviceId(id());
RealtimeMediaSourceSupportedConstraints supportedConstraints;
supportedConstraints.setSupportsDeviceId(true);
Modified: trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCaptureSource.h (236854 => 236855)
--- trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCaptureSource.h 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCaptureSource.h 2018-10-04 22:25:04 UTC (rev 236855)
@@ -29,7 +29,7 @@
class GStreamerVideoCaptureSource : public RealtimeMediaSource {
public:
- static CaptureSourceOrError create(String&& deviceID, String&& hashSalt, const MediaConstraints*);
+ static CaptureSourceOrError create(const String& deviceID, const MediaConstraints*);
WEBCORE_EXPORT static VideoCaptureFactory& factory();
// FIXME: Implement this.
@@ -41,8 +41,8 @@
GStreamerCapturer* capturer() { return m_capturer.get(); }
protected:
- GStreamerVideoCaptureSource(String&& deviceID, String&& name, String&& hashSalt, const gchar * source_factory);
- GStreamerVideoCaptureSource(GStreamerCaptureDevice, String&& hashSalt);
+ GStreamerVideoCaptureSource(const String& deviceID, const String& name, const gchar * source_factory);
+ GStreamerVideoCaptureSource(GStreamerCaptureDevice);
virtual ~GStreamerVideoCaptureSource();
void startProducingData() override;
void stopProducingData() override;
Modified: trunk/Source/WebCore/platform/mediastream/gstreamer/MockGStreamerAudioCaptureSource.cpp (236854 => 236855)
--- trunk/Source/WebCore/platform/mediastream/gstreamer/MockGStreamerAudioCaptureSource.cpp 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/platform/mediastream/gstreamer/MockGStreamerAudioCaptureSource.cpp 2018-10-04 22:25:04 UTC (rev 236855)
@@ -30,16 +30,16 @@
class WrappedMockRealtimeAudioSource : public MockRealtimeAudioSource {
public:
- WrappedMockRealtimeAudioSource(String&& deviceID, String&& name, String&& hashSalt)
- : MockRealtimeAudioSource(WTFMove(deviceID), WTFMove(name), WTFMove(hashSalt))
+ WrappedMockRealtimeAudioSource(const String& deviceID, const String& name)
+ : MockRealtimeAudioSource(deviceID, name)
{
}
};
-CaptureSourceOrError MockRealtimeAudioSource::create(String&& deviceID,
- String&& name, String&& hashSalt, const MediaConstraints* constraints)
+CaptureSourceOrError MockRealtimeAudioSource::create(const String& deviceID,
+ const String& name, const MediaConstraints* constraints)
{
- auto source = adoptRef(*new MockGStreamerAudioCaptureSource(WTFMove(deviceID), WTFMove(name), WTFMove(hashSalt)));
+ auto source = adoptRef(*new MockGStreamerAudioCaptureSource(deviceID, name));
if (constraints && source->applyConstraints(*constraints))
return { };
@@ -58,9 +58,9 @@
m_wrappedSource->applyConstraints(constraints, WTFMove(successHandler), WTFMove(failureHandler));
}
-MockGStreamerAudioCaptureSource::MockGStreamerAudioCaptureSource(String&& deviceID, String&& name, String&& hashSalt)
- : GStreamerAudioCaptureSource(String { deviceID }, String { name }, String { hashSalt })
- , m_wrappedSource(std::make_unique<WrappedMockRealtimeAudioSource>(WTFMove(deviceID), WTFMove(name), WTFMove(hashSalt)))
+MockGStreamerAudioCaptureSource::MockGStreamerAudioCaptureSource(const String& deviceID, const String& name)
+ : GStreamerAudioCaptureSource(deviceID, name)
+ , m_wrappedSource(std::make_unique<WrappedMockRealtimeAudioSource>(deviceID, name))
{
m_wrappedSource->addObserver(*this);
}
Modified: trunk/Source/WebCore/platform/mediastream/gstreamer/MockGStreamerAudioCaptureSource.h (236854 => 236855)
--- trunk/Source/WebCore/platform/mediastream/gstreamer/MockGStreamerAudioCaptureSource.h 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/platform/mediastream/gstreamer/MockGStreamerAudioCaptureSource.h 2018-10-04 22:25:04 UTC (rev 236855)
@@ -29,7 +29,7 @@
class MockGStreamerAudioCaptureSource final : public GStreamerAudioCaptureSource, RealtimeMediaSource::Observer {
public:
- MockGStreamerAudioCaptureSource(String&& deviceID, String&& name, String&& hashSalt);
+ MockGStreamerAudioCaptureSource(const String& deviceID, const String& name);
~MockGStreamerAudioCaptureSource();
std::optional<std::pair<String, String>> applyConstraints(const MediaConstraints&);
void applyConstraints(const MediaConstraints&, SuccessHandler&&, FailureHandler&&) final;
Modified: trunk/Source/WebCore/platform/mediastream/gstreamer/MockGStreamerVideoCaptureSource.cpp (236854 => 236855)
--- trunk/Source/WebCore/platform/mediastream/gstreamer/MockGStreamerVideoCaptureSource.cpp 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/platform/mediastream/gstreamer/MockGStreamerVideoCaptureSource.cpp 2018-10-04 22:25:04 UTC (rev 236855)
@@ -33,8 +33,8 @@
class WrappedMockRealtimeVideoSource : public MockRealtimeVideoSource {
public:
- WrappedMockRealtimeVideoSource(String&& deviceID, String&& name, String&& hashSalt)
- : MockRealtimeVideoSource(WTFMove(deviceID), WTFMove(name), WTFMove(hashSalt))
+ WrappedMockRealtimeVideoSource(const String& deviceID, const String& name)
+ : MockRealtimeVideoSource(deviceID, name)
{
}
@@ -61,10 +61,10 @@
}
};
-CaptureSourceOrError MockRealtimeVideoSource::create(String&& deviceID,
- String&& name, String&& hashSalt, const MediaConstraints* constraints)
+CaptureSourceOrError MockRealtimeVideoSource::create(const String& deviceID,
+ const String& name, const MediaConstraints* constraints)
{
- auto source = adoptRef(*new MockGStreamerVideoCaptureSource(WTFMove(deviceID), WTFMove(name), WTFMove(hashSalt)));
+ auto source = adoptRef(*new MockGStreamerVideoCaptureSource(deviceID, name));
if (constraints && source->applyConstraints(*constraints))
return { };
@@ -95,9 +95,9 @@
}
}
-MockGStreamerVideoCaptureSource::MockGStreamerVideoCaptureSource(String&& deviceID, String&& name, String&& hashSalt)
- : GStreamerVideoCaptureSource(String { deviceID }, String { name }, String { hashSalt }, "appsrc")
- , m_wrappedSource(std::make_unique<WrappedMockRealtimeVideoSource>(WTFMove(deviceID), WTFMove(name), WTFMove(hashSalt)))
+MockGStreamerVideoCaptureSource::MockGStreamerVideoCaptureSource(const String& deviceID, const String& name)
+ : GStreamerVideoCaptureSource(deviceID, name, "appsrc")
+ , m_wrappedSource(std::make_unique<WrappedMockRealtimeVideoSource>(deviceID, name))
{
m_wrappedSource->addObserver(*this);
}
Modified: trunk/Source/WebCore/platform/mediastream/gstreamer/MockGStreamerVideoCaptureSource.h (236854 => 236855)
--- trunk/Source/WebCore/platform/mediastream/gstreamer/MockGStreamerVideoCaptureSource.h 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/platform/mediastream/gstreamer/MockGStreamerVideoCaptureSource.h 2018-10-04 22:25:04 UTC (rev 236855)
@@ -34,7 +34,7 @@
// to the MockRealtimeMediaSource class by wrapping our own subclass of it.
class MockGStreamerVideoCaptureSource final : public GStreamerVideoCaptureSource, RealtimeMediaSource::Observer {
public:
- MockGStreamerVideoCaptureSource(String&& deviceID, String&& name, String&& hashSalt);
+ MockGStreamerVideoCaptureSource(const String& deviceID, const String& name);
~MockGStreamerVideoCaptureSource();
std::optional<std::pair<String, String>> applyConstraints(const MediaConstraints&);
void applyConstraints(const MediaConstraints&, SuccessHandler&&, FailureHandler&&) final;
Modified: trunk/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.h (236854 => 236855)
--- trunk/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.h 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.h 2018-10-04 22:25:04 UTC (rev 236855)
@@ -53,7 +53,7 @@
class AVVideoCaptureSource : public RealtimeVideoSource, private OrientationNotifier::Observer {
public:
- static CaptureSourceOrError create(String&& id, String&& hashSalt, const MediaConstraints*);
+ static CaptureSourceOrError create(const AtomicString&, const MediaConstraints*);
WEBCORE_EXPORT static VideoCaptureFactory& factory();
@@ -71,7 +71,7 @@
void captureOutputDidOutputSampleBufferFromConnection(AVCaptureOutput*, CMSampleBufferRef, AVCaptureConnection*);
private:
- AVVideoCaptureSource(AVCaptureDevice*, String&& id, String&& hashSalt);
+ AVVideoCaptureSource(AVCaptureDevice*, const AtomicString&);
virtual ~AVVideoCaptureSource();
bool setupSession();
Modified: trunk/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm (236854 => 236855)
--- trunk/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm 2018-10-04 22:25:04 UTC (rev 236855)
@@ -150,13 +150,13 @@
RetainPtr<AVCaptureDeviceFormatType> format;
};
-CaptureSourceOrError AVVideoCaptureSource::create(String&& id, String&& hashSalt, const MediaConstraints* constraints)
+CaptureSourceOrError AVVideoCaptureSource::create(const AtomicString& id, const MediaConstraints* constraints)
{
AVCaptureDeviceTypedef *device = [getAVCaptureDeviceClass() deviceWithUniqueID:id];
if (!device)
return { };
- auto source = adoptRef(*new AVVideoCaptureSource(device, WTFMove(id), WTFMove(hashSalt)));
+ auto source = adoptRef(*new AVVideoCaptureSource(device, id));
if (constraints) {
auto result = source->applyConstraints(*constraints);
if (result)
@@ -166,8 +166,8 @@
return CaptureSourceOrError(WTFMove(source));
}
-AVVideoCaptureSource::AVVideoCaptureSource(AVCaptureDeviceTypedef* device, String&& id, String&& hashSalt)
- : RealtimeVideoSource(device.localizedName, WTFMove(id), WTFMove(hashSalt))
+AVVideoCaptureSource::AVVideoCaptureSource(AVCaptureDeviceTypedef* device, const AtomicString& id)
+ : RealtimeVideoSource(id, device.localizedName)
, m_objcObserver(adoptNS([[WebCoreAVVideoCaptureSourceObserver alloc] initWithCallback:this]))
, m_device(device)
{
@@ -177,6 +177,8 @@
static_assert(static_cast<int>(InterruptionReason::VideoInUse) == AVCaptureSessionInterruptionReasonVideoDeviceInUseByAnotherClient, "InterruptionReason::VideoInUse is not AVCaptureSessionInterruptionReasonVideoDeviceInUseByAnotherClient as expected");
static_assert(static_cast<int>(InterruptionReason::AudioInUse) == AVCaptureSessionInterruptionReasonAudioDeviceInUseByAnotherClient, "InterruptionReason::AudioInUse is not AVCaptureSessionInterruptionReasonAudioDeviceInUseByAnotherClient as expected");
#endif
+
+ setPersistentID(String(device.uniqueID));
}
AVVideoCaptureSource::~AVVideoCaptureSource()
@@ -258,7 +260,7 @@
auto& size = this->size();
settings.setWidth(size.width());
settings.setHeight(size.height());
- settings.setDeviceId(hashedId());
+ settings.setDeviceId(id());
RealtimeMediaSourceSupportedConstraints supportedConstraints;
supportedConstraints.setSupportsDeviceId(true);
@@ -281,7 +283,7 @@
return *m_capabilities;
RealtimeMediaSourceCapabilities capabilities(settings().supportedConstraints());
- capabilities.setDeviceId(hashedId());
+ capabilities.setDeviceId(id());
AVCaptureDeviceTypedef *videoDevice = device();
if ([videoDevice position] == AVCaptureDevicePositionFront)
Modified: trunk/Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.cpp (236854 => 236855)
--- trunk/Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.cpp 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.cpp 2018-10-04 22:25:04 UTC (rev 236855)
@@ -694,7 +694,7 @@
return err;
}
-CaptureSourceOrError CoreAudioCaptureSource::create(String&& deviceID, String&& hashSalt, const MediaConstraints* constraints)
+CaptureSourceOrError CoreAudioCaptureSource::create(const String& deviceID, const MediaConstraints* constraints)
{
#if PLATFORM(MAC)
auto device = CoreAudioCaptureDeviceManager::singleton().coreAudioDeviceWithUID(deviceID);
@@ -701,13 +701,13 @@
if (!device)
return { };
- auto source = adoptRef(*new CoreAudioCaptureSource(WTFMove(deviceID), String { device->label() }, WTFMove(hashSalt), device->deviceID()));
+ auto source = adoptRef(*new CoreAudioCaptureSource(deviceID, device->label(), device->deviceID()));
#elif PLATFORM(IOS)
- auto device = AVAudioSessionCaptureDeviceManager::singleton().audioSessionDeviceWithUID(WTFMove(deviceID));
+ auto device = AVAudioSessionCaptureDeviceManager::singleton().audioSessionDeviceWithUID(deviceID);
if (!device)
return { };
- auto source = adoptRef(*new CoreAudioCaptureSource(WTFMove(deviceID), String { device->label() }, WTFMove(hashSalt), 0));
+ auto source = adoptRef(*new CoreAudioCaptureSource(deviceID, device->label(), 0));
#endif
if (constraints) {
@@ -774,8 +774,8 @@
return CoreAudioCaptureSourceFactory::singleton();
}
-CoreAudioCaptureSource::CoreAudioCaptureSource(String&& deviceID, String&& label, String&& hashSalt, uint32_t persistentID)
- : RealtimeMediaSource(RealtimeMediaSource::Type::Audio, WTFMove(label), WTFMove(deviceID), WTFMove(hashSalt))
+CoreAudioCaptureSource::CoreAudioCaptureSource(const String& deviceID, const String& label, uint32_t persistentID)
+ : RealtimeMediaSource(deviceID, RealtimeMediaSource::Type::Audio, label)
, m_captureDeviceID(persistentID)
{
auto& unit = CoreAudioSharedUnit::singleton();
@@ -845,7 +845,7 @@
{
if (!m_capabilities) {
RealtimeMediaSourceCapabilities capabilities(settings().supportedConstraints());
- capabilities.setDeviceId(hashedId());
+ capabilities.setDeviceId(id());
capabilities.setEchoCancellation(RealtimeMediaSourceCapabilities::EchoCancellation::ReadWrite);
capabilities.setVolume(CapabilityValueOrRange(0.0, 1.0));
capabilities.setSampleRate(CapabilityValueOrRange(8000, 96000));
@@ -860,7 +860,7 @@
RealtimeMediaSourceSettings settings;
settings.setVolume(volume());
settings.setSampleRate(sampleRate());
- settings.setDeviceId(hashedId());
+ settings.setDeviceId(id());
settings.setLabel(name());
settings.setEchoCancellation(echoCancellation());
Modified: trunk/Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.h (236854 => 236855)
--- trunk/Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.h 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/platform/mediastream/mac/CoreAudioCaptureSource.h 2018-10-04 22:25:04 UTC (rev 236855)
@@ -55,7 +55,7 @@
class CoreAudioCaptureSource : public RealtimeMediaSource {
public:
- static CaptureSourceOrError create(String&& deviceID, String&& hashSalt, const MediaConstraints*);
+ static CaptureSourceOrError create(const String& deviceID, const MediaConstraints*);
WEBCORE_EXPORT static AudioCaptureFactory& factory();
@@ -74,7 +74,7 @@
void scheduleReconfiguration();
protected:
- CoreAudioCaptureSource(String&& deviceID, String&& label, String&& hashSalt, uint32_t persistentID);
+ CoreAudioCaptureSource(const String& deviceID, const String& label, uint32_t persistentID);
virtual ~CoreAudioCaptureSource();
private:
@@ -126,9 +126,9 @@
#endif
private:
- CaptureSourceOrError createAudioCaptureSource(const CaptureDevice& device, String&& hashSalt, const MediaConstraints* constraints) final
+ CaptureSourceOrError createAudioCaptureSource(const CaptureDevice& device, const MediaConstraints* constraints) final
{
- return CoreAudioCaptureSource::create(String { device.persistentId() }, WTFMove(hashSalt), constraints);
+ return CoreAudioCaptureSource::create(device.persistentId(), constraints);
}
};
Modified: trunk/Source/WebCore/platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp (236854 => 236855)
--- trunk/Source/WebCore/platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp 2018-10-04 22:25:04 UTC (rev 236855)
@@ -52,7 +52,7 @@
using namespace PAL;
DisplayCaptureSourceCocoa::DisplayCaptureSourceCocoa(String&& name)
- : RealtimeMediaSource(Type::Video, WTFMove(name))
+ : RealtimeMediaSource("", Type::Video, WTFMove(name))
, m_timer(RunLoop::current(), this, &DisplayCaptureSourceCocoa::emitFrame)
{
}
Modified: trunk/Source/WebCore/platform/mediastream/mac/DisplayCaptureSourceCocoa.h (236854 => 236855)
--- trunk/Source/WebCore/platform/mediastream/mac/DisplayCaptureSourceCocoa.h 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/platform/mediastream/mac/DisplayCaptureSourceCocoa.h 2018-10-04 22:25:04 UTC (rev 236855)
@@ -51,7 +51,7 @@
public:
protected:
- DisplayCaptureSourceCocoa(String&& name);
+ DisplayCaptureSourceCocoa(String&&);
virtual ~DisplayCaptureSourceCocoa();
virtual RetainPtr<CVPixelBufferRef> generateFrame() = 0;
Modified: trunk/Source/WebCore/platform/mediastream/mac/MockRealtimeAudioSourceMac.h (236854 => 236855)
--- trunk/Source/WebCore/platform/mediastream/mac/MockRealtimeAudioSourceMac.h 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/platform/mediastream/mac/MockRealtimeAudioSourceMac.h 2018-10-04 22:25:04 UTC (rev 236855)
@@ -48,7 +48,7 @@
class MockRealtimeAudioSourceMac final : public MockRealtimeAudioSource {
private:
friend class MockRealtimeAudioSource;
- MockRealtimeAudioSourceMac(String&& deviceID, String&& name, String&& hashSalt);
+ MockRealtimeAudioSourceMac(const String& deviceID, const String& name);
void settingsDidChange(OptionSet<RealtimeMediaSourceSettings::Flag>) final;
std::optional<Vector<int>> discreteSampleRates() const final { return { { 44100, 48000 } }; }
Modified: trunk/Source/WebCore/platform/mediastream/mac/MockRealtimeAudioSourceMac.mm (236854 => 236855)
--- trunk/Source/WebCore/platform/mediastream/mac/MockRealtimeAudioSourceMac.mm 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/platform/mediastream/mac/MockRealtimeAudioSourceMac.mm 2018-10-04 22:25:04 UTC (rev 236855)
@@ -86,16 +86,9 @@
}
}
-CaptureSourceOrError MockRealtimeAudioSource::create(String&& deviceID, String&& name, String&& hashSalt, const MediaConstraints* constraints)
+CaptureSourceOrError MockRealtimeAudioSource::create(const String& deviceID, const String& name, const MediaConstraints* constraints)
{
-#ifndef NDEBUG
- auto device = MockRealtimeMediaSourceCenter::mockDeviceWithPersistentID(deviceID);
- ASSERT(device);
- if (!device)
- return { };
-#endif
-
- auto source = adoptRef(*new MockRealtimeAudioSourceMac(WTFMove(deviceID), WTFMove(name), WTFMove(hashSalt)));
+ auto source = adoptRef(*new MockRealtimeAudioSourceMac(deviceID, name));
// FIXME: We should report error messages
if (constraints && source->applyConstraints(*constraints))
return { };
@@ -103,8 +96,8 @@
return CaptureSourceOrError(WTFMove(source));
}
-MockRealtimeAudioSourceMac::MockRealtimeAudioSourceMac(String&& deviceID, String&& name, String&& hashSalt)
- : MockRealtimeAudioSource(WTFMove(deviceID), WTFMove(name), WTFMove(hashSalt))
+MockRealtimeAudioSourceMac::MockRealtimeAudioSourceMac(const String& deviceID, const String& name)
+ : MockRealtimeAudioSource(deviceID, name)
{
}
Modified: trunk/Source/WebCore/platform/mediastream/mac/MockRealtimeVideoSourceMac.h (236854 => 236855)
--- trunk/Source/WebCore/platform/mediastream/mac/MockRealtimeVideoSourceMac.h 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/platform/mediastream/mac/MockRealtimeVideoSourceMac.h 2018-10-04 22:25:04 UTC (rev 236855)
@@ -51,7 +51,7 @@
private:
friend class MockRealtimeVideoSource;
- MockRealtimeVideoSourceMac(String&& deviceID, String&& name, String&& hashSalt);
+ MockRealtimeVideoSourceMac(const String& deviceID, const String& name);
RetainPtr<CMSampleBufferRef> CMSampleBufferFromPixelBuffer(CVPixelBufferRef);
RetainPtr<CVPixelBufferRef> pixelBufferFromCGImage(CGImageRef) const;
Modified: trunk/Source/WebCore/platform/mediastream/mac/MockRealtimeVideoSourceMac.mm (236854 => 236855)
--- trunk/Source/WebCore/platform/mediastream/mac/MockRealtimeVideoSourceMac.mm 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/platform/mediastream/mac/MockRealtimeVideoSourceMac.mm 2018-10-04 22:25:04 UTC (rev 236855)
@@ -53,16 +53,9 @@
static const int videoSampleRate = 90000;
-CaptureSourceOrError MockRealtimeVideoSource::create(String&& deviceID, String&& name, String&& hashSalt, const MediaConstraints* constraints)
+CaptureSourceOrError MockRealtimeVideoSource::create(const String& deviceID, const String& name, const MediaConstraints* constraints)
{
-#ifndef NDEBUG
- auto device = MockRealtimeMediaSourceCenter::mockDeviceWithPersistentID(deviceID);
- ASSERT(device);
- if (!device)
- return { };
-#endif
-
- auto source = adoptRef(*new MockRealtimeVideoSourceMac(WTFMove(deviceID), WTFMove(name), WTFMove(hashSalt)));
+ auto source = adoptRef(*new MockRealtimeVideoSourceMac(deviceID, name));
// FIXME: We should report error messages
if (constraints && source->applyConstraints(*constraints))
return { };
@@ -70,8 +63,8 @@
return CaptureSourceOrError(WTFMove(source));
}
-MockRealtimeVideoSourceMac::MockRealtimeVideoSourceMac(String&& deviceID, String&& name, String&& hashSalt)
- : MockRealtimeVideoSource(WTFMove(deviceID), WTFMove(name), WTFMove(hashSalt))
+MockRealtimeVideoSourceMac::MockRealtimeVideoSourceMac(const String& deviceID, const String& name)
+ : MockRealtimeVideoSource(deviceID, name)
{
}
Modified: trunk/Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp (236854 => 236855)
--- trunk/Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp 2018-10-04 22:25:04 UTC (rev 236855)
@@ -48,10 +48,10 @@
class VideoCaptureSourceFactoryMac final : public VideoCaptureFactory {
public:
- CaptureSourceOrError createVideoCaptureSource(const CaptureDevice& device, String&& hashSalt, const MediaConstraints* constraints) final
+ CaptureSourceOrError createVideoCaptureSource(const CaptureDevice& device, const MediaConstraints* constraints) final
{
ASSERT(device.type() == CaptureDevice::DeviceType::Camera);
- return AVVideoCaptureSource::create(String { device.persistentId() }, WTFMove(hashSalt), constraints);
+ return AVVideoCaptureSource::create(device.persistentId(), constraints);
}
#if PLATFORM(IOS)
@@ -75,11 +75,11 @@
switch (device.type()) {
case CaptureDevice::DeviceType::Screen:
#if PLATFORM(MAC)
- return ScreenDisplayCaptureSourceMac::create(String { device.persistentId() }, constraints);
+ return ScreenDisplayCaptureSourceMac::create(device.persistentId(), constraints);
#endif
case CaptureDevice::DeviceType::Window:
#if PLATFORM(MAC)
- return WindowDisplayCaptureSourceMac::create(String { device.persistentId() }, constraints);
+ return WindowDisplayCaptureSourceMac::create(device.persistentId(), constraints);
#endif
case CaptureDevice::DeviceType::Application:
case CaptureDevice::DeviceType::Browser:
Modified: trunk/Source/WebCore/platform/mediastream/mac/ScreenDisplayCaptureSourceMac.h (236854 => 236855)
--- trunk/Source/WebCore/platform/mediastream/mac/ScreenDisplayCaptureSourceMac.h 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/platform/mediastream/mac/ScreenDisplayCaptureSourceMac.h 2018-10-04 22:25:04 UTC (rev 236855)
@@ -41,13 +41,13 @@
class ScreenDisplayCaptureSourceMac : public DisplayCaptureSourceCocoa {
public:
- static CaptureSourceOrError create(String&&, const MediaConstraints*);
+ static CaptureSourceOrError create(const String&, const MediaConstraints*);
static std::optional<CaptureDevice> screenCaptureDeviceWithPersistentID(const String&);
static void screenCaptureDevices(Vector<CaptureDevice>&);
private:
- ScreenDisplayCaptureSourceMac(uint32_t, String&&);
+ ScreenDisplayCaptureSourceMac(uint32_t);
virtual ~ScreenDisplayCaptureSourceMac();
static void displayReconfigurationCallBack(CGDirectDisplayID, CGDisplayChangeSummaryFlags, void*);
Modified: trunk/Source/WebCore/platform/mediastream/mac/ScreenDisplayCaptureSourceMac.mm (236854 => 236855)
--- trunk/Source/WebCore/platform/mediastream/mac/ScreenDisplayCaptureSourceMac.mm 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/platform/mediastream/mac/ScreenDisplayCaptureSourceMac.mm 2018-10-04 22:25:04 UTC (rev 236855)
@@ -76,12 +76,12 @@
return std::nullopt;
}
-CaptureSourceOrError ScreenDisplayCaptureSourceMac::create(String&& deviceID, const MediaConstraints* constraints)
+CaptureSourceOrError ScreenDisplayCaptureSourceMac::create(const String& deviceID, const MediaConstraints* constraints)
{
bool ok;
auto displayID = deviceID.toUIntStrict(&ok);
if (!ok) {
- RELEASE_LOG(Media, "ScreenDisplayCaptureSourceMac::create: Display ID does not convert to 32-bit integer");
+ RELEASE_LOG(Media, "Display ID does not convert to 32-bit integer");
return { };
}
@@ -89,7 +89,7 @@
if (!actualDisplayID)
return { };
- auto source = adoptRef(*new ScreenDisplayCaptureSourceMac(actualDisplayID.value(), "Screen"_s)); // FIXME: figure out what title to use
+ auto source = adoptRef(*new ScreenDisplayCaptureSourceMac(actualDisplayID.value()));
if (constraints && source->applyConstraints(*constraints))
return { };
@@ -96,8 +96,8 @@
return CaptureSourceOrError(WTFMove(source));
}
-ScreenDisplayCaptureSourceMac::ScreenDisplayCaptureSourceMac(uint32_t displayID, String&& title)
- : DisplayCaptureSourceCocoa(WTFMove(title))
+ScreenDisplayCaptureSourceMac::ScreenDisplayCaptureSourceMac(uint32_t displayID)
+ : DisplayCaptureSourceCocoa("Screen") // FIXME: figure out what to call this
, m_displayID(displayID)
{
}
@@ -122,7 +122,7 @@
if (m_displayID != actualDisplayID.value()) {
m_displayID = actualDisplayID.value();
- RELEASE_LOG(Media, "ScreenDisplayCaptureSourceMac::createDisplayStream: display ID changed to %d", static_cast<int>(m_displayID));
+ RELEASE_LOG(Media, "ScreenDisplayCaptureSourceMac::createDisplayStream(%p), display ID changed to %d", this, static_cast<int>(m_displayID));
}
if (!m_displayStream) {
@@ -130,7 +130,7 @@
auto screenWidth = CGDisplayModeGetPixelsWide(displayMode.get());
auto screenHeight = CGDisplayModeGetPixelsHigh(displayMode.get());
if (!screenWidth || !screenHeight) {
- RELEASE_LOG(Media, "ScreenDisplayCaptureSourceMac::createDisplayStream: unable to get screen width/height");
+ RELEASE_LOG(Media, "ScreenDisplayCaptureSourceMac::createDisplayStream(%p), unable to get screen width/height", this);
captureFailed();
return false;
}
@@ -168,7 +168,7 @@
auto size = frameSize();
m_displayStream = adoptCF(CGDisplayStreamCreateWithDispatchQueue(m_displayID, size.width(), size.height(), kCVPixelFormatType_420YpCbCr8Planar, streamOptions.get(), m_captureQueue.get(), m_frameAvailableBlock));
if (!m_displayStream) {
- RELEASE_LOG(Media, "ScreenDisplayCaptureSourceMac::createDisplayStream: CGDisplayStreamCreate failed");
+ RELEASE_LOG(Media, "ScreenDisplayCaptureSourceMac::createDisplayStream(%p), CGDisplayStreamCreate failed", this);
captureFailed();
return false;
}
@@ -227,7 +227,7 @@
if (m_displayID != actualDisplayID.value()) {
m_displayID = actualDisplayID.value();
- RELEASE_LOG(Media, "ScreenDisplayCaptureSourceMac::startDisplayStream: display ID changed to %d", static_cast<int>(m_displayID));
+ RELEASE_LOG(Media, "ScreenDisplayCaptureSourceMac::startDisplayStream(%p), display ID changed to %d", this, static_cast<int>(m_displayID));
}
if (!m_displayStream && !createDisplayStream())
@@ -235,7 +235,7 @@
auto err = CGDisplayStreamStart(m_displayStream.get());
if (err) {
- RELEASE_LOG(Media, "ScreenDisplayCaptureSourceMac::startDisplayStream: CGDisplayStreamStart failed with error %d", static_cast<int>(err));
+ RELEASE_LOG(Media, "ScreenDisplayCaptureSourceMac::startDisplayStream(%p), CGDisplayStreamStart failed with error %d", this, static_cast<int>(err));
captureFailed();
return;
}
@@ -278,11 +278,11 @@
break;
case kCGDisplayStreamFrameStatusFrameBlank:
- RELEASE_LOG(Media, "ScreenDisplayCaptureSourceMac::frameAvailable: kCGDisplayStreamFrameStatusFrameBlank");
+ RELEASE_LOG(Media, "ScreenDisplayCaptureSourceMac::frameAvailable(%p), kCGDisplayStreamFrameStatusFrameBlank", this);
break;
case kCGDisplayStreamFrameStatusStopped:
- RELEASE_LOG(Media, "ScreenDisplayCaptureSourceMac::frameAvailable: kCGDisplayStreamFrameStatusStopped");
+ RELEASE_LOG(Media, "ScreenDisplayCaptureSourceMac::frameAvailable(%p), kCGDisplayStreamFrameStatusStopped", this);
break;
}
Modified: trunk/Source/WebCore/platform/mediastream/mac/WindowDisplayCaptureSourceMac.h (236854 => 236855)
--- trunk/Source/WebCore/platform/mediastream/mac/WindowDisplayCaptureSourceMac.h 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/platform/mediastream/mac/WindowDisplayCaptureSourceMac.h 2018-10-04 22:25:04 UTC (rev 236855)
@@ -40,13 +40,13 @@
class WindowDisplayCaptureSourceMac : public DisplayCaptureSourceCocoa {
public:
- static CaptureSourceOrError create(String&&, const MediaConstraints*);
+ static CaptureSourceOrError create(const String&, const MediaConstraints*);
static std::optional<CaptureDevice> windowCaptureDeviceWithPersistentID(const String&);
static void windowCaptureDevices(Vector<CaptureDevice>&);
private:
- WindowDisplayCaptureSourceMac(uint32_t, String&&);
+ WindowDisplayCaptureSourceMac(uint32_t windowID, String&&);
virtual ~WindowDisplayCaptureSourceMac() = default;
RetainPtr<CVPixelBufferRef> generateFrame() final;
Modified: trunk/Source/WebCore/platform/mediastream/mac/WindowDisplayCaptureSourceMac.mm (236854 => 236855)
--- trunk/Source/WebCore/platform/mediastream/mac/WindowDisplayCaptureSourceMac.mm 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/platform/mediastream/mac/WindowDisplayCaptureSourceMac.mm 2018-10-04 22:25:04 UTC (rev 236855)
@@ -102,7 +102,7 @@
return checked_cf_cast<CFDictionaryRef>(CFArrayGetValueAtIndex(windows.get(), 0));
}
-CaptureSourceOrError WindowDisplayCaptureSourceMac::create(String&& windowID, const MediaConstraints* constraints)
+CaptureSourceOrError WindowDisplayCaptureSourceMac::create(const String& windowID, const MediaConstraints* constraints)
{
bool ok;
auto actualID = windowID.toUIntStrict(&ok);
Modified: trunk/Source/WebCore/platform/mock/MockRealtimeAudioSource.cpp (236854 => 236855)
--- trunk/Source/WebCore/platform/mock/MockRealtimeAudioSource.cpp 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/platform/mock/MockRealtimeAudioSource.cpp 2018-10-04 22:25:04 UTC (rev 236855)
@@ -43,16 +43,14 @@
namespace WebCore {
#if !PLATFORM(MAC) && !PLATFORM(IOS) && !(USE(GSTREAMER) && USE(LIBWEBRTC))
-CaptureSourceOrError MockRealtimeAudioSource::create(String&& deviceID, String&& name, String&& hashSalt, const MediaConstraints* constraints)
+CaptureSourceOrError MockRealtimeAudioSource::create(const String& deviceID, const String& name, const MediaConstraints* constraints)
{
-#ifndef NDEBUG
auto device = MockRealtimeMediaSourceCenter::mockDeviceWithPersistentID(deviceID);
ASSERT(device);
if (!device)
return { };
-#endif
- auto source = adoptRef(*new MockRealtimeAudioSource(WTFMove(deviceID), WTFMove(name), WTFMove(hashSalt)));
+ auto source = adoptRef(*new MockRealtimeAudioSource(WTFMove(device), deviceID, name));
if (constraints && source->applyConstraints(*constraints))
return { };
@@ -60,11 +58,11 @@
}
#endif
-MockRealtimeAudioSource::MockRealtimeAudioSource(String&& deviceID, String&& name, String&& hashSalt)
- : RealtimeMediaSource(RealtimeMediaSource::Type::Audio, WTFMove(name), WTFMove(deviceID), WTFMove(hashSalt))
+MockRealtimeAudioSource::MockRealtimeAudioSource(const String& deviceID, const String& name)
+ : RealtimeMediaSource(deviceID, RealtimeMediaSource::Type::Audio, name)
, m_timer(RunLoop::current(), this, &MockRealtimeAudioSource::tick)
{
- auto device = MockRealtimeMediaSourceCenter::mockDeviceWithPersistentID(persistentID());
+ auto device = MockRealtimeMediaSourceCenter::mockDeviceWithPersistentID(deviceID);
ASSERT(device);
m_device = *device;
}
@@ -80,7 +78,7 @@
{
if (!m_currentSettings) {
RealtimeMediaSourceSettings settings;
- settings.setDeviceId(hashedId());
+ settings.setDeviceId(id());
settings.setVolume(volume());
settings.setEchoCancellation(echoCancellation());
settings.setSampleRate(sampleRate());
@@ -102,7 +100,7 @@
if (!m_capabilities) {
RealtimeMediaSourceCapabilities capabilities(settings().supportedConstraints());
- capabilities.setDeviceId(hashedId());
+ capabilities.setDeviceId(id());
capabilities.setVolume(CapabilityValueOrRange(0.0, 1.0));
capabilities.setEchoCancellation(RealtimeMediaSourceCapabilities::EchoCancellation::ReadWrite);
capabilities.setSampleRate(CapabilityValueOrRange(44100, 48000));
Modified: trunk/Source/WebCore/platform/mock/MockRealtimeAudioSource.h (236854 => 236855)
--- trunk/Source/WebCore/platform/mock/MockRealtimeAudioSource.h 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/platform/mock/MockRealtimeAudioSource.h 2018-10-04 22:25:04 UTC (rev 236855)
@@ -42,12 +42,12 @@
class MockRealtimeAudioSource : public RealtimeMediaSource {
public:
- static CaptureSourceOrError create(String&& deviceID, String&& name, String&& hashSalt, const MediaConstraints*);
+ static CaptureSourceOrError create(const String& deviceID, const String& name, const MediaConstraints*);
virtual ~MockRealtimeAudioSource();
protected:
- MockRealtimeAudioSource(String&& deviceID, String&& name, String&& hashSalt);
+ MockRealtimeAudioSource(const String& deviceID, const String& name);
void startProducingData() final;
void stopProducingData() final;
Modified: trunk/Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.cpp (236854 => 236855)
--- trunk/Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.cpp 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.cpp 2018-10-04 22:25:04 UTC (rev 236855)
@@ -83,14 +83,15 @@
};
}
+
class MockRealtimeVideoSourceFactory : public VideoCaptureFactory {
public:
- CaptureSourceOrError createVideoCaptureSource(const CaptureDevice& device, String&& hashSalt, const MediaConstraints* constraints) final
+ CaptureSourceOrError createVideoCaptureSource(const CaptureDevice& device, const MediaConstraints* constraints) final
{
ASSERT(device.type() == CaptureDevice::DeviceType::Camera);
ASSERT(MockRealtimeMediaSourceCenter::captureDeviceWithPersistentID(CaptureDevice::DeviceType::Camera, device.persistentId()));
- return MockRealtimeVideoSource::create(String { device.persistentId() }, String { device.label() }, WTFMove(hashSalt), constraints);
+ return MockRealtimeVideoSource::create(device.persistentId(), device.label(), constraints);
}
#if PLATFORM(IOS)
@@ -112,7 +113,7 @@
switch (device.type()) {
case CaptureDevice::DeviceType::Screen:
case CaptureDevice::DeviceType::Window:
- return MockRealtimeVideoSource::create(String { device.persistentId() }, String { }, String { device.label() }, constraints);
+ return MockRealtimeVideoSource::create(device.persistentId(), device.label(), constraints);
break;
case CaptureDevice::DeviceType::Application:
case CaptureDevice::DeviceType::Browser:
@@ -129,12 +130,12 @@
class MockRealtimeAudioSourceFactory : public AudioCaptureFactory {
public:
- CaptureSourceOrError createAudioCaptureSource(const CaptureDevice& device, String&& hashSalt, const MediaConstraints* constraints) final
+ CaptureSourceOrError createAudioCaptureSource(const CaptureDevice& device, const MediaConstraints* constraints) final
{
ASSERT(device.type() == CaptureDevice::DeviceType::Microphone);
ASSERT(MockRealtimeMediaSourceCenter::captureDeviceWithPersistentID(CaptureDevice::DeviceType::Microphone, device.persistentId()));
- return MockRealtimeAudioSource::create(String { device.persistentId() }, String { device.label() }, WTFMove(hashSalt), constraints);
+ return MockRealtimeAudioSource::create(device.persistentId(), device.label(), constraints);
}
};
Modified: trunk/Source/WebCore/platform/mock/MockRealtimeVideoSource.cpp (236854 => 236855)
--- trunk/Source/WebCore/platform/mock/MockRealtimeVideoSource.cpp 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/platform/mock/MockRealtimeVideoSource.cpp 2018-10-04 22:25:04 UTC (rev 236855)
@@ -49,16 +49,14 @@
namespace WebCore {
#if !PLATFORM(MAC) && !PLATFORM(IOS) && !(USE(GSTREAMER) && USE(LIBWEBRTC))
-CaptureSourceOrError MockRealtimeVideoSource::create(String&& deviceID, String&& name, String&& hashSalt, const MediaConstraints* constraints)
+CaptureSourceOrError MockRealtimeVideoSource::create(const String& deviceID, const String& name, const MediaConstraints* constraints)
{
-#ifndef NDEBUG
auto device = MockRealtimeMediaSourceCenter::mockDeviceWithPersistentID(deviceID);
ASSERT(device);
if (!device)
return { };
-#endif
- auto source = adoptRef(*new MockRealtimeVideoSource(WTFMove(deviceID), WTFMove(name), WTFMove(hashSalt)));
+ auto source = adoptRef(*new MockRealtimeVideoSource(WTFMove(device), deviceID, name));
if (constraints && source->applyConstraints(*constraints))
return { };
@@ -66,11 +64,11 @@
}
#endif
-MockRealtimeVideoSource::MockRealtimeVideoSource(String&& deviceID, String&& name, String&& hashSalt)
- : RealtimeVideoSource(WTFMove(name), WTFMove(deviceID), WTFMove(hashSalt))
+MockRealtimeVideoSource::MockRealtimeVideoSource(const String& deviceID, const String& name)
+ : RealtimeVideoSource(deviceID, name)
, m_emitFrameTimer(RunLoop::current(), this, &MockRealtimeVideoSource::generateFrame)
{
- auto device = MockRealtimeMediaSourceCenter::mockDeviceWithPersistentID(persistentID());
+ auto device = MockRealtimeMediaSourceCenter::mockDeviceWithPersistentID(deviceID);
ASSERT(device);
m_device = *device;
@@ -122,7 +120,7 @@
if (!m_capabilities) {
RealtimeMediaSourceCapabilities capabilities(settings().supportedConstraints());
- capabilities.setDeviceId(hashedId());
+ capabilities.setDeviceId(id());
if (mockCamera()) {
capabilities.addFacingMode(WTF::get<MockCameraProperties>(m_device.properties).facingMode);
updateCapabilities(capabilities);
@@ -156,7 +154,7 @@
settings.setHeight(size.height());
if (aspectRatio())
settings.setAspectRatio(aspectRatio());
- settings.setDeviceId(hashedId());
+ settings.setDeviceId(id());
RealtimeMediaSourceSupportedConstraints supportedConstraints;
supportedConstraints.setSupportsDeviceId(true);
Modified: trunk/Source/WebCore/platform/mock/MockRealtimeVideoSource.h (236854 => 236855)
--- trunk/Source/WebCore/platform/mock/MockRealtimeVideoSource.h 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebCore/platform/mock/MockRealtimeVideoSource.h 2018-10-04 22:25:04 UTC (rev 236855)
@@ -48,10 +48,10 @@
class MockRealtimeVideoSource : public RealtimeVideoSource {
public:
- static CaptureSourceOrError create(String&& deviceID, String&& name, String&& hashSalt, const MediaConstraints*);
+ static CaptureSourceOrError create(const String& deviceID, const String& name, const MediaConstraints*);
protected:
- MockRealtimeVideoSource(String&& deviceID, String&& name, String&& hashSalt);
+ MockRealtimeVideoSource(const String& deviceID, const String& name);
virtual void updateSampleBuffer() = 0;
Modified: trunk/Source/WebKit/ChangeLog (236854 => 236855)
--- trunk/Source/WebKit/ChangeLog 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebKit/ChangeLog 2018-10-04 22:25:04 UTC (rev 236855)
@@ -1,3 +1,17 @@
+2018-10-04 Matt Lewis <jlew...@apple.com>
+
+ Unreviewed, rolling out r236730.
+
+ This caused a consistent crash in test http/tests/media/media-
+ stream/get-display-media-prompt.html.
+
+ Reverted changeset:
+
+ "[MediaStream] RealtimeMediaSource should be able to vend
+ hashed IDs"
+ https://bugs.webkit.org/show_bug.cgi?id=190142
+ https://trac.webkit.org/changeset/236730
+
2018-10-04 Brian Burg <bb...@apple.com>
Web Automation: clear pending callbacks when the session terminates
Modified: trunk/Source/WebKit/Shared/WebCoreArgumentCoders.cpp (236854 => 236855)
--- trunk/Source/WebKit/Shared/WebCoreArgumentCoders.cpp 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebKit/Shared/WebCoreArgumentCoders.cpp 2018-10-04 22:25:04 UTC (rev 236855)
@@ -2761,6 +2761,7 @@
{
encoder << constraint.mandatoryConstraints
<< constraint.advancedConstraints
+ << constraint.deviceIDHashSalt
<< constraint.isValid;
}
@@ -2772,6 +2773,7 @@
return false;
constraints.mandatoryConstraints = WTFMove(*mandatoryConstraints);
return decoder.decode(constraints.advancedConstraints)
+ && decoder.decode(constraints.deviceIDHashSalt)
&& decoder.decode(constraints.isValid);
}
#endif
Modified: trunk/Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp (236854 => 236855)
--- trunk/Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp 2018-10-04 22:25:04 UTC (rev 236855)
@@ -125,15 +125,15 @@
m_process.removeMessageReceiver(Messages::UserMediaCaptureManagerProxy::messageReceiverName());
}
-void UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints(uint64_t id, const CaptureDevice& device, WebCore::RealtimeMediaSource::Type type, String&& hashSalt, const MediaConstraints& constraints, bool& succeeded, String& invalidConstraints, WebCore::RealtimeMediaSourceSettings& settings)
+void UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints(uint64_t id, const CaptureDevice& device, WebCore::RealtimeMediaSource::Type type, const MediaConstraints& constraints, bool& succeeded, String& invalidConstraints, WebCore::RealtimeMediaSourceSettings& settings)
{
CaptureSourceOrError sourceOrError;
switch (type) {
case WebCore::RealtimeMediaSource::Type::Audio:
- sourceOrError = RealtimeMediaSourceCenter::singleton().audioFactory().createAudioCaptureSource(device, WTFMove(hashSalt), &constraints);
+ sourceOrError = RealtimeMediaSourceCenter::singleton().audioFactory().createAudioCaptureSource(device, &constraints);
break;
case WebCore::RealtimeMediaSource::Type::Video:
- sourceOrError = RealtimeMediaSourceCenter::singleton().videoFactory().createVideoCaptureSource(device, WTFMove(hashSalt), &constraints);
+ sourceOrError = RealtimeMediaSourceCenter::singleton().videoFactory().createVideoCaptureSource(device, &constraints);
break;
case WebCore::RealtimeMediaSource::Type::None:
ASSERT_NOT_REACHED();
Modified: trunk/Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.h (236854 => 236855)
--- trunk/Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.h 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.h 2018-10-04 22:25:04 UTC (rev 236855)
@@ -49,7 +49,7 @@
void didReceiveMessage(IPC::Connection&, IPC::Decoder&) final;
void didReceiveSyncMessage(IPC::Connection&, IPC::Decoder&, std::unique_ptr<IPC::Encoder>&) final;
- void createMediaSourceForCaptureDeviceWithConstraints(uint64_t id, const WebCore::CaptureDevice& deviceID, WebCore::RealtimeMediaSource::Type, String&&, const WebCore::MediaConstraints&, bool& succeeded, String& invalidConstraints, WebCore::RealtimeMediaSourceSettings&);
+ void createMediaSourceForCaptureDeviceWithConstraints(uint64_t id, const WebCore::CaptureDevice& deviceID, WebCore::RealtimeMediaSource::Type, const WebCore::MediaConstraints&, bool& succeeded, String& invalidConstraints, WebCore::RealtimeMediaSourceSettings&);
void startProducingData(uint64_t);
void stopProducingData(uint64_t);
void capabilities(uint64_t, WebCore::RealtimeMediaSourceCapabilities&);
Modified: trunk/Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in (236854 => 236855)
--- trunk/Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in 2018-10-04 22:25:04 UTC (rev 236855)
@@ -24,7 +24,7 @@
#if ENABLE(MEDIA_STREAM)
messages -> UserMediaCaptureManagerProxy {
- CreateMediaSourceForCaptureDeviceWithConstraints(uint64_t id, WebCore::CaptureDevice device, WebCore::RealtimeMediaSource::Type type, String hashSalt, struct WebCore::MediaConstraints constraints) -> (bool success, String invalidConstraints, WebCore::RealtimeMediaSourceSettings settings)
+ CreateMediaSourceForCaptureDeviceWithConstraints(uint64_t id, WebCore::CaptureDevice device, WebCore::RealtimeMediaSource::Type type, struct WebCore::MediaConstraints constraints) -> (bool success, String invalidConstraints, WebCore::RealtimeMediaSourceSettings settings)
StartProducingData(uint64_t id)
StopProducingData(uint64_t id)
Capabilities(uint64_t id) -> (WebCore::RealtimeMediaSourceCapabilities capabilities)
Modified: trunk/Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp (236854 => 236855)
--- trunk/Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp 2018-10-04 22:25:04 UTC (rev 236855)
@@ -336,6 +336,9 @@
if (!m_page.isValid())
return;
+ localUserRequest.audioConstraints.deviceIDHashSalt = deviceIdentifierHashSalt;
+ localUserRequest.videoConstraints.deviceIDHashSalt = deviceIdentifierHashSalt;
+
syncWithWebCorePrefs();
RealtimeMediaSourceCenter::singleton().validateRequestConstraints(WTFMove(validHandler), WTFMove(invalidHandler), WTFMove(localUserRequest), WTFMove(deviceIdentifierHashSalt));
Modified: trunk/Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.cpp (236854 => 236855)
--- trunk/Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.cpp 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.cpp 2018-10-04 22:25:04 UTC (rev 236855)
@@ -51,8 +51,8 @@
class UserMediaCaptureManager::Source : public RealtimeMediaSource {
public:
- Source(String&& sourceID, Type type, String&& name, String&& hashSalt, uint64_t id, UserMediaCaptureManager& manager)
- : RealtimeMediaSource(type, WTFMove(name), WTFMove(sourceID), WTFMove(hashSalt))
+ Source(const String& sourceID, Type type, const String& name, uint64_t id, UserMediaCaptureManager& manager)
+ : RealtimeMediaSource(sourceID, type, name)
, m_id(id)
, m_manager(manager)
, m_ringBuffer(makeUniqueRef<SharedRingBufferStorage>(nullptr))
@@ -177,7 +177,7 @@
RealtimeMediaSourceCenter::singleton().setAudioFactory(*this);
}
-WebCore::CaptureSourceOrError UserMediaCaptureManager::createCaptureSource(const CaptureDevice& device, WebCore::RealtimeMediaSource::Type sourceType, String&& hashSalt, const WebCore::MediaConstraints* constraints)
+WebCore::CaptureSourceOrError UserMediaCaptureManager::createCaptureSource(const CaptureDevice& device, WebCore::RealtimeMediaSource::Type sourceType, const WebCore::MediaConstraints* constraints)
{
if (!constraints)
return { };
@@ -186,10 +186,10 @@
RealtimeMediaSourceSettings settings;
String errorMessage;
bool succeeded;
- if (!m_process.sendSync(Messages::UserMediaCaptureManagerProxy::CreateMediaSourceForCaptureDeviceWithConstraints(id, device, sourceType, hashSalt, *constraints), Messages::UserMediaCaptureManagerProxy::CreateMediaSourceForCaptureDeviceWithConstraints::Reply(succeeded, errorMessage, settings), 0))
+ if (!m_process.sendSync(Messages::UserMediaCaptureManagerProxy::CreateMediaSourceForCaptureDeviceWithConstraints(id, device, sourceType, *constraints), Messages::UserMediaCaptureManagerProxy::CreateMediaSourceForCaptureDeviceWithConstraints::Reply(succeeded, errorMessage, settings), 0))
return WTFMove(errorMessage);
- auto source = adoptRef(*new Source(String::number(id), sourceType, String { settings.label() }, WTFMove(hashSalt), id, *this));
+ auto source = adoptRef(*new Source(String::number(id), sourceType, settings.label(), id, *this));
source->setSettings(WTFMove(settings));
m_sources.set(id, source.copyRef());
return WebCore::CaptureSourceOrError(WTFMove(source));
Modified: trunk/Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.h (236854 => 236855)
--- trunk/Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.h 2018-10-04 22:08:51 UTC (rev 236854)
+++ trunk/Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.h 2018-10-04 22:25:04 UTC (rev 236855)
@@ -55,9 +55,9 @@
void initialize(const WebProcessCreationParameters&) final;
// WebCore::RealtimeMediaSource factories
- WebCore::CaptureSourceOrError createAudioCaptureSource(const WebCore::CaptureDevice& device, String&& hashSalt, const WebCore::MediaConstraints* constraints) final { return createCaptureSource(device, WebCore::RealtimeMediaSource::Type::Audio, WTFMove(hashSalt), constraints); }
- WebCore::CaptureSourceOrError createVideoCaptureSource(const WebCore::CaptureDevice& device, String&& hashSalt, const WebCore::MediaConstraints* constraints) final { return createCaptureSource(device, WebCore::RealtimeMediaSource::Type::Video, WTFMove(hashSalt), constraints); }
- WebCore::CaptureSourceOrError createCaptureSource(const WebCore::CaptureDevice&, WebCore::RealtimeMediaSource::Type, String&&, const WebCore::MediaConstraints*);
+ WebCore::CaptureSourceOrError createAudioCaptureSource(const WebCore::CaptureDevice& device, const WebCore::MediaConstraints* constraints) final { return createCaptureSource(device, WebCore::RealtimeMediaSource::Type::Audio, constraints); }
+ WebCore::CaptureSourceOrError createVideoCaptureSource(const WebCore::CaptureDevice& device, const WebCore::MediaConstraints* constraints) final { return createCaptureSource(device, WebCore::RealtimeMediaSource::Type::Video, constraints); }
+ WebCore::CaptureSourceOrError createCaptureSource(const WebCore::CaptureDevice&, WebCore::RealtimeMediaSource::Type, const WebCore::MediaConstraints*);
// IPC::MessageReceiver
void didReceiveMessage(IPC::Connection&, IPC::Decoder&) final;