Diff
Modified: trunk/LayoutTests/ChangeLog (246435 => 246436)
--- trunk/LayoutTests/ChangeLog 2019-06-14 17:12:07 UTC (rev 246435)
+++ trunk/LayoutTests/ChangeLog 2019-06-14 17:14:47 UTC (rev 246436)
@@ -1,3 +1,13 @@
+2019-06-14 Youenn Fablet <[email protected]>
+
+ Cloning a MediaStreamTrack does not clone the logger
+ https://bugs.webkit.org/show_bug.cgi?id=198844
+
+ Reviewed by Eric Carlson.
+
+ * fast/mediastream/MediaStreamTrack-clone-expected.txt:
+ * fast/mediastream/MediaStreamTrack-clone.html:
+
2019-06-14 Shawn Roberts <[email protected]>
webgpu/compute-squares.html test was deleted in https://trac.webkit.org/changeset/246427
Modified: trunk/LayoutTests/fast/mediastream/MediaStreamTrack-clone-expected.txt (246435 => 246436)
--- trunk/LayoutTests/fast/mediastream/MediaStreamTrack-clone-expected.txt 2019-06-14 17:12:07 UTC (rev 246435)
+++ trunk/LayoutTests/fast/mediastream/MediaStreamTrack-clone-expected.txt 2019-06-14 17:14:47 UTC (rev 246436)
@@ -20,6 +20,7 @@
PASS videoTrack.onended is not videoTrack2.onended
PASS videoTrack.onoverconstrained is not videoTrack2.onoverconstrained
PASS videoTrack.readyState is not videoTrack2.readyState
+PASS videoTrack.readyState is videoTrack3.readyState
PASS successfullyParsed is true
TEST COMPLETE
Modified: trunk/LayoutTests/fast/mediastream/MediaStreamTrack-clone.html (246435 => 246436)
--- trunk/LayoutTests/fast/mediastream/MediaStreamTrack-clone.html 2019-06-14 17:12:07 UTC (rev 246435)
+++ trunk/LayoutTests/fast/mediastream/MediaStreamTrack-clone.html 2019-06-14 17:14:47 UTC (rev 246436)
@@ -7,6 +7,7 @@
var mediaStream;
var videoTrack;
var videoTrack2;
+ var videoTrack3;
var audioTrack;
function gotStream(stream) {
@@ -40,6 +41,9 @@
videoTrack.stop();
shouldNotBe('videoTrack.readyState', 'videoTrack2.readyState');
+ videoTrack3 = videoTrack.clone();
+ shouldBe('videoTrack.readyState', 'videoTrack3.readyState');
+
finishJSTest();
}
Modified: trunk/Source/WebCore/ChangeLog (246435 => 246436)
--- trunk/Source/WebCore/ChangeLog 2019-06-14 17:12:07 UTC (rev 246435)
+++ trunk/Source/WebCore/ChangeLog 2019-06-14 17:14:47 UTC (rev 246436)
@@ -1,3 +1,55 @@
+2019-06-14 Youenn Fablet <[email protected]>
+
+ Cloning a MediaStreamTrack does not clone the logger
+ https://bugs.webkit.org/show_bug.cgi?id=198844
+
+ Reviewed by Eric Carlson.
+
+ Make MediaStream and MediaStreamTrack rely on their private versions for logging.
+ Move from a RefPtr version to a Ref so as to forbid nullptr crashes.
+ Make sure that RealtimeIncomingAudioSource and RealtimeIncomingVideoSource check for their logger before logging.
+ Covered by existing tests and updated test.
+
+ * Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp:
+ (WebCore::loggerFromContext):
+ (WebCore::CanvasCaptureMediaStreamTrack::CanvasCaptureMediaStreamTrack):
+ * Modules/mediastream/MediaStream.cpp:
+ (WebCore::loggerFromContext):
+ (WebCore::MediaStream::create):
+ (WebCore::MediaStream::MediaStream):
+ * Modules/mediastream/MediaStream.h:
+ * Modules/mediastream/MediaStreamTrack.cpp:
+ (WebCore::MediaStreamTrack::MediaStreamTrack):
+ * Modules/mediastream/MediaStreamTrack.h:
+ * Modules/mediastream/UserMediaRequest.cpp:
+ (WebCore::UserMediaRequest::allow):
+ * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
+ (WebCore::LibWebRTCMediaEndpoint::mediaStreamFromRTCStream):
+ * Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
+ (WebCore::LibWebRTCPeerConnectionBackend::createReceiverForSource):
+ * Modules/webaudio/MediaStreamAudioDestinationNode.cpp:
+ (WebCore::MediaStreamAudioDestinationNode::MediaStreamAudioDestinationNode):
+ * platform/mediastream/MediaStreamPrivate.cpp:
+ (WebCore::MediaStreamPrivate::create):
+ (WebCore::MediaStreamPrivate::MediaStreamPrivate):
+ (WebCore::MediaStreamPrivate::setLogger): Deleted.
+ * platform/mediastream/MediaStreamPrivate.h:
+ * platform/mediastream/MediaStreamTrackPrivate.cpp:
+ (WebCore::MediaStreamTrackPrivate::create):
+ (WebCore::MediaStreamTrackPrivate::MediaStreamTrackPrivate):
+ (WebCore::MediaStreamTrackPrivate::clone):
+ (WebCore::MediaStreamTrackPrivate::setLogger): Deleted.
+ * platform/mediastream/MediaStreamTrackPrivate.h:
+ * platform/mediastream/RealtimeMediaSourceCenter.cpp:
+ (WebCore::RealtimeMediaSourceCenter::createMediaStream):
+ * platform/mediastream/RealtimeMediaSourceCenter.h:
+ * platform/mediastream/mac/RealtimeIncomingAudioSourceCocoa.cpp:
+ (WebCore::RealtimeIncomingAudioSourceCocoa::OnData):
+ * platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm:
+ (WebCore::RealtimeIncomingVideoSourceCocoa::pixelBufferPool):
+ (WebCore::RealtimeIncomingVideoSourceCocoa::pixelBufferFromVideoFrame):
+ (WebCore::RealtimeIncomingVideoSourceCocoa::OnFrame):
+
2019-06-14 Ali Juma <[email protected]>
IntersectionObserver rootMargin detection fails when `root` is an element
Modified: trunk/Source/WebCore/Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp (246435 => 246436)
--- trunk/Source/WebCore/Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp 2019-06-14 17:12:07 UTC (rev 246435)
+++ trunk/Source/WebCore/Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp 2019-06-14 17:14:47 UTC (rev 246436)
@@ -42,8 +42,13 @@
return adoptRef(*new CanvasCaptureMediaStreamTrack(context, WTFMove(canvas), WTFMove(source)));
}
+static inline Ref<const Logger> loggerFromContext(ScriptExecutionContext& context)
+{
+ return downcast<Document>(context).logger();
+}
+
CanvasCaptureMediaStreamTrack::CanvasCaptureMediaStreamTrack(ScriptExecutionContext& context, Ref<HTMLCanvasElement>&& canvas, Ref<CanvasCaptureMediaStreamTrack::Source>&& source)
- : MediaStreamTrack(context, MediaStreamTrackPrivate::create(source.copyRef()))
+ : MediaStreamTrack(context, MediaStreamTrackPrivate::create(loggerFromContext(context), source.copyRef()))
, m_canvas(WTFMove(canvas))
{
}
Modified: trunk/Source/WebCore/Modules/mediastream/MediaStream.cpp (246435 => 246436)
--- trunk/Source/WebCore/Modules/mediastream/MediaStream.cpp 2019-06-14 17:12:07 UTC (rev 246435)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStream.cpp 2019-06-14 17:14:47 UTC (rev 246436)
@@ -48,9 +48,14 @@
WTF_MAKE_ISO_ALLOCATED_IMPL(MediaStream);
+static inline Ref<const Logger> loggerFromContext(ScriptExecutionContext& context)
+{
+ return downcast<Document>(context).logger();
+}
+
Ref<MediaStream> MediaStream::create(ScriptExecutionContext& context)
{
- return MediaStream::create(context, MediaStreamPrivate::create({ }));
+ return MediaStream::create(context, MediaStreamPrivate::create(loggerFromContext(context), { }));
}
Ref<MediaStream> MediaStream::create(ScriptExecutionContext& context, MediaStream& stream)
@@ -79,21 +84,12 @@
MediaStream::MediaStream(ScriptExecutionContext& context, const MediaStreamTrackVector& tracks)
: ActiveDOMObject(&context)
- , m_private(MediaStreamPrivate::create(createTrackPrivateVector(tracks)))
+ , m_private(MediaStreamPrivate::create(document()->logger(), createTrackPrivateVector(tracks)))
, m_mediaSession(PlatformMediaSession::create(*this))
-#if !RELEASE_LOG_DISABLED
- , m_logger(document()->logger())
- , m_logIdentifier(uniqueLogIdentifier())
-#endif
{
// This constructor preserves MediaStreamTrack instances and must be used by calls originating
// from the _javascript_ MediaStream constructor.
-#if !RELEASE_LOG_DISABLED
- ALWAYS_LOG(LOGIDENTIFIER);
- m_private->setLogger(logger(), logIdentifier());
-#endif
-
for (auto& track : tracks) {
track->addObserver(*this);
m_trackSet.add(track->id(), track);
@@ -109,15 +105,9 @@
: ActiveDOMObject(&context)
, m_private(WTFMove(streamPrivate))
, m_mediaSession(PlatformMediaSession::create(*this))
-#if !RELEASE_LOG_DISABLED
- , m_logger(document()->logger())
- , m_logIdentifier(uniqueLogIdentifier())
-#endif
{
-#if !RELEASE_LOG_DISABLED
ALWAYS_LOG(LOGIDENTIFIER);
- m_private->setLogger(logger(), logIdentifier());
-#endif
+
setIsActive(m_private->active());
m_private->addObserver(*this);
MediaStreamRegistry::shared().registerStream(*this);
Modified: trunk/Source/WebCore/Modules/mediastream/MediaStream.h (246435 => 246436)
--- trunk/Source/WebCore/Modules/mediastream/MediaStream.h 2019-06-14 17:12:07 UTC (rev 246435)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStream.h 2019-06-14 17:14:47 UTC (rev 246436)
@@ -125,8 +125,8 @@
MediaStream(ScriptExecutionContext&, Ref<MediaStreamPrivate>&&);
#if !RELEASE_LOG_DISABLED
- const Logger& logger() const final { return m_logger.get(); }
- const void* logIdentifier() const final { return m_logIdentifier; }
+ const Logger& logger() const final { return m_private->logger(); }
+ const void* logIdentifier() const final { return m_private->logIdentifier(); }
WTFLogChannel& logChannel() const final;
const char* logClassName() const final { return "MediaStream"; }
#endif
@@ -187,11 +187,6 @@
MediaProducer::MediaStateFlags m_state { MediaProducer::IsNotPlaying };
-#if !RELEASE_LOG_DISABLED
- Ref<Logger> m_logger;
- const void* m_logIdentifier;
-#endif
-
bool m_isActive { false };
bool m_isProducingData { false };
bool m_isWaitingUntilMediaCanStart { false };
Modified: trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp (246435 => 246436)
--- trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp 2019-06-14 17:12:07 UTC (rev 246435)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp 2019-06-14 17:14:47 UTC (rev 246436)
@@ -58,10 +58,6 @@
MediaStreamTrack::MediaStreamTrack(ScriptExecutionContext& context, Ref<MediaStreamTrackPrivate>&& privateTrack)
: ActiveDOMObject(&context)
, m_private(WTFMove(privateTrack))
-#if !RELEASE_LOG_DISABLED
- , m_logger(document()->logger())
- , m_logIdentifier(uniqueLogIdentifier())
-#endif
, m_taskQueue(context)
, m_isCaptureTrack(m_private->isCaptureTrack())
{
@@ -68,9 +64,6 @@
ALWAYS_LOG(LOGIDENTIFIER);
suspendIfNeeded();
-#if !RELEASE_LOG_DISABLED
- m_private->setLogger(logger(), logIdentifier());
-#endif
m_private->addObserver(*this);
if (auto document = this->document()) {
Modified: trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h (246435 => 246436)
--- trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h 2019-06-14 17:12:07 UTC (rev 246435)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h 2019-06-14 17:14:47 UTC (rev 246436)
@@ -151,8 +151,8 @@
void setIdForTesting(String&& id) { m_private->setIdForTesting(WTFMove(id)); }
#if !RELEASE_LOG_DISABLED
- const Logger& logger() const final { return m_logger.get(); }
- const void* logIdentifier() const final { return m_logIdentifier; }
+ const Logger& logger() const final { return m_private->logger(); }
+ const void* logIdentifier() const final { return m_private->logIdentifier(); }
#endif
protected:
@@ -189,9 +189,6 @@
#if !RELEASE_LOG_DISABLED
const char* logClassName() const final { return "MediaStreamTrack"; }
WTFLogChannel& logChannel() const final;
-
- Ref<const Logger> m_logger;
- const void* m_logIdentifier;
#endif
Vector<Observer*> m_observers;
Modified: trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.cpp (246435 => 246436)
--- trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.cpp 2019-06-14 17:12:07 UTC (rev 246435)
+++ trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.cpp 2019-06-14 17:14:47 UTC (rev 246436)
@@ -246,7 +246,7 @@
auto& document = downcast<Document>(*scriptExecutionContext());
document.setDeviceIDHashSalt(deviceIdentifierHashSalt);
- RealtimeMediaSourceCenter::singleton().createMediaStream(WTFMove(callback), WTFMove(deviceIdentifierHashSalt), WTFMove(audioDevice), WTFMove(videoDevice), m_request);
+ RealtimeMediaSourceCenter::singleton().createMediaStream(document.logger(), WTFMove(callback), WTFMove(deviceIdentifierHashSalt), WTFMove(audioDevice), WTFMove(videoDevice), m_request);
if (!m_scriptExecutionContext)
return;
Modified: trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp (246435 => 246436)
--- trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp 2019-06-14 17:12:07 UTC (rev 246435)
+++ trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp 2019-06-14 17:14:47 UTC (rev 246436)
@@ -354,7 +354,8 @@
{
auto label = fromStdString(rtcStream.id());
auto mediaStream = m_remoteStreamsById.ensure(label, [label, this]() mutable {
- return MediaStream::create(*m_peerConnectionBackend.connection().scriptExecutionContext(), MediaStreamPrivate::create({ }, WTFMove(label)));
+ auto& document = downcast<Document>(*m_peerConnectionBackend.connection().scriptExecutionContext());
+ return MediaStream::create(document, MediaStreamPrivate::create(document.logger(), { }, WTFMove(label)));
});
return *mediaStream.iterator->value;
}
Modified: trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp (246435 => 246436)
--- trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp 2019-06-14 17:12:07 UTC (rev 246435)
+++ trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp 2019-06-14 17:14:47 UTC (rev 246436)
@@ -269,9 +269,10 @@
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 remoteTrack = MediaStreamTrack::create(*m_peerConnection.scriptExecutionContext(), WTFMove(remoteTrackPrivate));
+ auto& document = downcast<Document>(*m_peerConnection.scriptExecutionContext());
+ auto trackID = source->persistentID();
+ auto remoteTrackPrivate = MediaStreamTrackPrivate::create(document.logger(), WTFMove(source), WTFMove(trackID));
+ auto remoteTrack = MediaStreamTrack::create(document, WTFMove(remoteTrackPrivate));
return RTCRtpReceiver::create(*this, WTFMove(remoteTrack), WTFMove(backend));
}
Modified: trunk/Source/WebCore/Modules/webaudio/MediaStreamAudioDestinationNode.cpp (246435 => 246436)
--- trunk/Source/WebCore/Modules/webaudio/MediaStreamAudioDestinationNode.cpp 2019-06-14 17:12:07 UTC (rev 246435)
+++ trunk/Source/WebCore/Modules/webaudio/MediaStreamAudioDestinationNode.cpp 2019-06-14 17:14:47 UTC (rev 246436)
@@ -47,7 +47,7 @@
MediaStreamAudioDestinationNode::MediaStreamAudioDestinationNode(AudioContext& context, size_t numberOfChannels)
: AudioBasicInspectorNode(context, context.sampleRate(), numberOfChannels)
, m_source(MediaStreamAudioSource::create(context.sampleRate()))
- , m_stream(MediaStream::create(*context.document(), MediaStreamPrivate::create(m_source.copyRef())))
+ , m_stream(MediaStream::create(*context.document(), MediaStreamPrivate::create(context.document()->logger(), m_source.copyRef())))
{
setNodeType(NodeTypeMediaStreamAudioDestination);
initialize();
Modified: trunk/Source/WebCore/platform/mediastream/MediaStreamPrivate.cpp (246435 => 246436)
--- trunk/Source/WebCore/platform/mediastream/MediaStreamPrivate.cpp 2019-06-14 17:12:07 UTC (rev 246435)
+++ trunk/Source/WebCore/platform/mediastream/MediaStreamPrivate.cpp 2019-06-14 17:14:47 UTC (rev 246436)
@@ -45,28 +45,34 @@
namespace WebCore {
-Ref<MediaStreamPrivate> MediaStreamPrivate::create(Ref<RealtimeMediaSource>&& source)
+Ref<MediaStreamPrivate> MediaStreamPrivate::create(Ref<const Logger>&& logger, Ref<RealtimeMediaSource>&& source)
{
- return MediaStreamPrivate::create(MediaStreamTrackPrivateVector::from(MediaStreamTrackPrivate::create(WTFMove(source))));
+ auto loggerCopy = logger.copyRef();
+ return MediaStreamPrivate::create(WTFMove(logger), MediaStreamTrackPrivateVector::from(MediaStreamTrackPrivate::create(WTFMove(loggerCopy), WTFMove(source))));
}
-Ref<MediaStreamPrivate> MediaStreamPrivate::create(const Vector<Ref<RealtimeMediaSource>>& audioSources, const Vector<Ref<RealtimeMediaSource>>& videoSources)
+Ref<MediaStreamPrivate> MediaStreamPrivate::create(Ref<const Logger>&& logger, const Vector<Ref<RealtimeMediaSource>>& audioSources, const Vector<Ref<RealtimeMediaSource>>& videoSources)
{
MediaStreamTrackPrivateVector tracks;
tracks.reserveInitialCapacity(audioSources.size() + videoSources.size());
for (auto& source : audioSources)
- tracks.uncheckedAppend(MediaStreamTrackPrivate::create(source.copyRef()));
+ tracks.uncheckedAppend(MediaStreamTrackPrivate::create(logger.copyRef(), source.copyRef()));
for (auto& source : videoSources)
- tracks.uncheckedAppend(MediaStreamTrackPrivate::create(source.copyRef()));
+ tracks.uncheckedAppend(MediaStreamTrackPrivate::create(logger.copyRef(), source.copyRef()));
- return MediaStreamPrivate::create(tracks);
+ return MediaStreamPrivate::create(WTFMove(logger), tracks);
}
-MediaStreamPrivate::MediaStreamPrivate(const MediaStreamTrackPrivateVector& tracks, String&& id)
+MediaStreamPrivate::MediaStreamPrivate(Ref<const Logger>&& logger, const MediaStreamTrackPrivateVector& tracks, String&& id)
: m_id(WTFMove(id))
+#if !RELEASE_LOG_DISABLED
+ , m_logger(WTFMove(logger))
+ , m_logIdentifier(uniqueLogIdentifier())
+#endif
{
+ UNUSED_PARAM(logger);
ASSERT(!m_id.isEmpty());
for (auto& track : tracks) {
@@ -345,13 +351,6 @@
}
#if !RELEASE_LOG_DISABLED
-void MediaStreamPrivate::setLogger(const Logger& newLogger, const void* newLogIdentifier)
-{
- m_logger = &newLogger;
- m_logIdentifier = newLogIdentifier;
- ALWAYS_LOG(LOGIDENTIFIER);
-}
-
WTFLogChannel& MediaStreamPrivate::logChannel() const
{
return LogWebRTC;
Modified: trunk/Source/WebCore/platform/mediastream/MediaStreamPrivate.h (246435 => 246436)
--- trunk/Source/WebCore/platform/mediastream/MediaStreamPrivate.h 2019-06-14 17:12:07 UTC (rev 246435)
+++ trunk/Source/WebCore/platform/mediastream/MediaStreamPrivate.h 2019-06-14 17:14:47 UTC (rev 246436)
@@ -73,9 +73,9 @@
virtual void didRemoveTrack(MediaStreamTrackPrivate&) { }
};
- static Ref<MediaStreamPrivate> create(Ref<RealtimeMediaSource>&&);
- static Ref<MediaStreamPrivate> create(const Vector<Ref<RealtimeMediaSource>>& audioSources, const Vector<Ref<RealtimeMediaSource>>& videoSources);
- static Ref<MediaStreamPrivate> create(const MediaStreamTrackPrivateVector& tracks, String&& id = createCanonicalUUIDString()) { return adoptRef(*new MediaStreamPrivate(tracks, WTFMove(id))); }
+ static Ref<MediaStreamPrivate> create(Ref<const Logger>&&, Ref<RealtimeMediaSource>&&);
+ static Ref<MediaStreamPrivate> create(Ref<const Logger>&&, const Vector<Ref<RealtimeMediaSource>>& audioSources, const Vector<Ref<RealtimeMediaSource>>& videoSources);
+ static Ref<MediaStreamPrivate> create(Ref<const Logger>&& logger, const MediaStreamTrackPrivateVector& tracks, String&& id = createCanonicalUUIDString()) { return adoptRef(*new MediaStreamPrivate(WTFMove(logger), tracks, WTFMove(id))); }
virtual ~MediaStreamPrivate();
@@ -111,11 +111,12 @@
void monitorOrientation(OrientationNotifier&);
#if !RELEASE_LOG_DISABLED
- void setLogger(const Logger&, const void*);
+ const Logger& logger() const final { return m_logger; }
+ const void* logIdentifier() const final { return m_logIdentifier; }
#endif
private:
- MediaStreamPrivate(const MediaStreamTrackPrivateVector&, String&&);
+ MediaStreamPrivate(Ref<const Logger>&&, const MediaStreamTrackPrivateVector&, String&&);
// MediaStreamTrackPrivate::Observer
void trackStarted(MediaStreamTrackPrivate&) override;
@@ -131,13 +132,8 @@
void forEachObserver(const WTF::Function<void(Observer&)>&) const;
#if !RELEASE_LOG_DISABLED
- const Logger& logger() const final { ASSERT(m_logger); return *m_logger.get(); }
- const void* logIdentifier() const final { return m_logIdentifier; }
const char* logClassName() const final { return "MediaStreamPrivate"; }
WTFLogChannel& logChannel() const final;
-
- RefPtr<const Logger> m_logger;
- const void* m_logIdentifier;
#endif
HashSet<Observer*> m_observers;
@@ -145,6 +141,10 @@
MediaStreamTrackPrivate* m_activeVideoTrack { nullptr };
HashMap<String, RefPtr<MediaStreamTrackPrivate>> m_trackSet;
bool m_isActive { false };
+#if !RELEASE_LOG_DISABLED
+ Ref<const Logger> m_logger;
+ const void* m_logIdentifier;
+#endif
};
typedef Vector<RefPtr<MediaStreamPrivate>> MediaStreamPrivateVector;
Modified: trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.cpp (246435 => 246436)
--- trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.cpp 2019-06-14 17:12:07 UTC (rev 246435)
+++ trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.cpp 2019-06-14 17:14:47 UTC (rev 246436)
@@ -44,20 +44,28 @@
namespace WebCore {
-Ref<MediaStreamTrackPrivate> MediaStreamTrackPrivate::create(Ref<RealtimeMediaSource>&& source)
+Ref<MediaStreamTrackPrivate> MediaStreamTrackPrivate::create(Ref<const Logger>&& logger, Ref<RealtimeMediaSource>&& source)
{
- return create(WTFMove(source), createCanonicalUUIDString());
+ return create(WTFMove(logger), WTFMove(source), createCanonicalUUIDString());
}
-Ref<MediaStreamTrackPrivate> MediaStreamTrackPrivate::create(Ref<RealtimeMediaSource>&& source, String&& id)
+Ref<MediaStreamTrackPrivate> MediaStreamTrackPrivate::create(Ref<const Logger>&& logger, Ref<RealtimeMediaSource>&& source, String&& id)
{
- return adoptRef(*new MediaStreamTrackPrivate(WTFMove(source), WTFMove(id)));
+ return adoptRef(*new MediaStreamTrackPrivate(WTFMove(logger), WTFMove(source), WTFMove(id)));
}
-MediaStreamTrackPrivate::MediaStreamTrackPrivate(Ref<RealtimeMediaSource>&& source, String&& id)
+MediaStreamTrackPrivate::MediaStreamTrackPrivate(Ref<const Logger>&& logger, Ref<RealtimeMediaSource>&& source, String&& id)
: m_source(WTFMove(source))
, m_id(WTFMove(id))
+ , m_logger(WTFMove(logger))
+#if !RELEASE_LOG_DISABLED
+ , m_logIdentifier(uniqueLogIdentifier())
+#endif
{
+ UNUSED_PARAM(logger);
+#if !RELEASE_LOG_DISABLED
+ m_source->setLogger(m_logger.copyRef(), m_logIdentifier);
+#endif
m_source->addObserver(*this);
}
@@ -147,7 +155,8 @@
Ref<MediaStreamTrackPrivate> MediaStreamTrackPrivate::clone()
{
- auto clonedMediaStreamTrackPrivate = create(m_source.copyRef());
+ auto clonedMediaStreamTrackPrivate = create(m_logger.copyRef(), m_source.copyRef());
+
clonedMediaStreamTrackPrivate->m_isEnabled = this->m_isEnabled;
clonedMediaStreamTrackPrivate->m_isEnded = this->m_isEnded;
clonedMediaStreamTrackPrivate->m_contentHint = this->m_contentHint;
@@ -279,14 +288,6 @@
}
#if !RELEASE_LOG_DISABLED
-void MediaStreamTrackPrivate::setLogger(const Logger& newLogger, const void* newLogIdentifier)
-{
- m_logger = &newLogger;
- m_logIdentifier = newLogIdentifier;
- ALWAYS_LOG(LOGIDENTIFIER);
- m_source->setLogger(newLogger, newLogIdentifier);
-}
-
WTFLogChannel& MediaStreamTrackPrivate::logChannel() const
{
return LogWebRTC;
Modified: trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h (246435 => 246436)
--- trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h 2019-06-14 17:12:07 UTC (rev 246435)
+++ trunk/Source/WebCore/platform/mediastream/MediaStreamTrackPrivate.h 2019-06-14 17:14:47 UTC (rev 246436)
@@ -64,8 +64,8 @@
virtual void audioSamplesAvailable(MediaStreamTrackPrivate&, const MediaTime&, const PlatformAudioData&, const AudioStreamDescription&, size_t) { };
};
- static Ref<MediaStreamTrackPrivate> create(Ref<RealtimeMediaSource>&&);
- static Ref<MediaStreamTrackPrivate> create(Ref<RealtimeMediaSource>&&, String&& id);
+ static Ref<MediaStreamTrackPrivate> create(Ref<const Logger>&&, Ref<RealtimeMediaSource>&&);
+ static Ref<MediaStreamTrackPrivate> create(Ref<const Logger>&&, Ref<RealtimeMediaSource>&&, String&& id);
virtual ~MediaStreamTrackPrivate();
@@ -117,13 +117,12 @@
void setIdForTesting(String&& id) { m_id = WTFMove(id); }
#if !RELEASE_LOG_DISABLED
- void setLogger(const Logger&, const void*);
- const Logger& logger() const final { ASSERT(m_logger); return *m_logger.get(); }
+ const Logger& logger() const final { return m_logger; }
const void* logIdentifier() const final { return m_logIdentifier; }
#endif
-
+
private:
- MediaStreamTrackPrivate(Ref<RealtimeMediaSource>&&, String&& id);
+ MediaStreamTrackPrivate(Ref<const Logger>&&, Ref<RealtimeMediaSource>&&, String&& id);
// RealtimeMediaSourceObserver
void sourceStarted() final;
@@ -141,9 +140,6 @@
#if !RELEASE_LOG_DISABLED
const char* logClassName() const final { return "MediaStreamTrackPrivate"; }
WTFLogChannel& logChannel() const final;
-
- RefPtr<const Logger> m_logger;
- const void* m_logIdentifier;
#endif
mutable RecursiveLock m_observersLock;
@@ -157,6 +153,10 @@
bool m_haveProducedData { false };
HintValue m_contentHint { HintValue::Empty };
RefPtr<WebAudioSourceProvider> m_audioSourceProvider;
+ Ref<const Logger> m_logger;
+#if !RELEASE_LOG_DISABLED
+ const void* m_logIdentifier;
+#endif
};
typedef Vector<RefPtr<MediaStreamTrackPrivate>> MediaStreamTrackPrivateVector;
Modified: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.cpp (246435 => 246436)
--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.cpp 2019-06-14 17:12:07 UTC (rev 246435)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.cpp 2019-06-14 17:14:47 UTC (rev 246436)
@@ -63,7 +63,7 @@
RealtimeMediaSourceCenter::~RealtimeMediaSourceCenter() = default;
-void RealtimeMediaSourceCenter::createMediaStream(NewMediaStreamHandler&& completionHandler, String&& hashSalt, CaptureDevice&& audioDevice, CaptureDevice&& videoDevice, const MediaStreamRequest& request)
+void RealtimeMediaSourceCenter::createMediaStream(Ref<const Logger>&& logger, NewMediaStreamHandler&& completionHandler, String&& hashSalt, CaptureDevice&& audioDevice, CaptureDevice&& videoDevice, const MediaStreamRequest& request)
{
Vector<Ref<RealtimeMediaSource>> audioSources;
Vector<Ref<RealtimeMediaSource>> videoSources;
@@ -102,7 +102,7 @@
}
}
- completionHandler(MediaStreamPrivate::create(audioSources, videoSources));
+ completionHandler(MediaStreamPrivate::create(WTFMove(logger), audioSources, videoSources));
}
Vector<CaptureDevice> RealtimeMediaSourceCenter::getMediaStreamDevices()
Modified: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.h (246435 => 246436)
--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.h 2019-06-14 17:12:07 UTC (rev 246435)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.h 2019-06-14 17:14:47 UTC (rev 246436)
@@ -59,12 +59,12 @@
WEBCORE_EXPORT static RealtimeMediaSourceCenter& singleton();
- using ValidConstraintsHandler = WTF::Function<void(Vector<CaptureDevice>&& audioDeviceUIDs, Vector<CaptureDevice>&& videoDeviceUIDs, String&&)>;
- using InvalidConstraintsHandler = WTF::Function<void(const String& invalidConstraint)>;
+ using ValidConstraintsHandler = Function<void(Vector<CaptureDevice>&& audioDeviceUIDs, Vector<CaptureDevice>&& videoDeviceUIDs, String&&)>;
+ using InvalidConstraintsHandler = Function<void(const String& invalidConstraint)>;
WEBCORE_EXPORT void validateRequestConstraints(ValidConstraintsHandler&&, InvalidConstraintsHandler&&, const MediaStreamRequest&, String&&);
- using NewMediaStreamHandler = WTF::Function<void(RefPtr<MediaStreamPrivate>&&)>;
- void createMediaStream(NewMediaStreamHandler&&, String&&, CaptureDevice&& audioDevice, CaptureDevice&& videoDevice, const MediaStreamRequest&);
+ using NewMediaStreamHandler = Function<void(RefPtr<MediaStreamPrivate>&&)>;
+ void createMediaStream(Ref<const Logger>&&, NewMediaStreamHandler&&, String&&, CaptureDevice&& audioDevice, CaptureDevice&& videoDevice, const MediaStreamRequest&);
WEBCORE_EXPORT Vector<CaptureDevice> getMediaStreamDevices();
Modified: trunk/Source/WebCore/platform/mediastream/mac/RealtimeIncomingAudioSourceCocoa.cpp (246435 => 246436)
--- trunk/Source/WebCore/platform/mediastream/mac/RealtimeIncomingAudioSourceCocoa.cpp 2019-06-14 17:12:07 UTC (rev 246435)
+++ trunk/Source/WebCore/platform/mediastream/mac/RealtimeIncomingAudioSourceCocoa.cpp 2019-06-14 17:14:47 UTC (rev 246436)
@@ -88,7 +88,7 @@
#if !RELEASE_LOG_DISABLED
if (!(++m_chunksReceived % 200))
- ALWAYS_LOG(LOGIDENTIFIER, "chunk ", m_chunksReceived);
+ ALWAYS_LOG_IF(loggerPtr(), LOGIDENTIFIER, "chunk ", m_chunksReceived);
#endif
audioSamplesAvailable(mediaTime, audioBufferList, CAAudioStreamDescription(newDescription), numberOfFrames);
Modified: trunk/Source/WebCore/platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm (246435 => 246436)
--- trunk/Source/WebCore/platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm 2019-06-14 17:12:07 UTC (rev 246435)
+++ trunk/Source/WebCore/platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm 2019-06-14 17:14:47 UTC (rev 246436)
@@ -113,7 +113,7 @@
auto status = CVPixelBufferPoolCreate(kCFAllocatorDefault, nullptr, (__bridge CFDictionaryRef)pixelAttributes, &pool);
if (status != kCVReturnSuccess) {
- ERROR_LOG(LOGIDENTIFIER, "Failed creating a pixel buffer pool with error ", status);
+ ERROR_LOG_IF(loggerPtr(), LOGIDENTIFIER, "Failed creating a pixel buffer pool with error ", status);
return nullptr;
}
m_pixelBufferPool = adoptCF(pool);
@@ -144,7 +144,7 @@
auto status = CVPixelBufferPoolCreatePixelBuffer(kCFAllocatorDefault, m_pixelBufferPool.get(), &pixelBuffer);
if (status != kCVReturnSuccess) {
- ERROR_LOG(LOGIDENTIFIER, "Failed creating a pixel buffer with error ", status);
+ ERROR_LOG_IF(loggerPtr(), LOGIDENTIFIER, "Failed creating a pixel buffer with error ", status);
return nullptr;
}
newPixelBuffer = adoptCF(pixelBuffer);
@@ -159,12 +159,12 @@
#if !RELEASE_LOG_DISABLED
if (!(++m_numberOfFrames % 60))
- ALWAYS_LOG(LOGIDENTIFIER, "frame ", m_numberOfFrames);
+ ALWAYS_LOG_IF(loggerPtr(), LOGIDENTIFIER, "frame ", m_numberOfFrames);
#endif
auto pixelBuffer = pixelBufferFromVideoFrame(frame);
if (!pixelBuffer) {
- ERROR_LOG(LOGIDENTIFIER, "Failed to get a pixel buffer from a frame");
+ ERROR_LOG_IF(loggerPtr(), LOGIDENTIFIER, "Failed to get a pixel buffer from a frame");
return;
}
@@ -178,7 +178,7 @@
CMVideoFormatDescriptionRef formatDescription;
OSStatus ostatus = CMVideoFormatDescriptionCreateForImageBuffer(kCFAllocatorDefault, (CVImageBufferRef)pixelBuffer, &formatDescription);
if (ostatus != noErr) {
- ERROR_LOG(LOGIDENTIFIER, "Failed to initialize CMVideoFormatDescription with error ", static_cast<int>(ostatus));
+ ERROR_LOG_IF(loggerPtr(), LOGIDENTIFIER, "Failed to initialize CMVideoFormatDescription with error ", static_cast<int>(ostatus));
return;
}
@@ -186,7 +186,7 @@
ostatus = CMSampleBufferCreateReadyWithImageBuffer(kCFAllocatorDefault, (CVImageBufferRef)pixelBuffer, formatDescription, &timingInfo, &sampleBuffer);
CFRelease(formatDescription);
if (ostatus != noErr) {
- ERROR_LOG(LOGIDENTIFIER, "Failed to create the sample buffer with error ", static_cast<int>(ostatus));
+ ERROR_LOG_IF(loggerPtr(), LOGIDENTIFIER, "Failed to create the sample buffer with error ", static_cast<int>(ostatus));
return;
}