Diff
Modified: trunk/Source/WebCore/ChangeLog (212643 => 212644)
--- trunk/Source/WebCore/ChangeLog 2017-02-20 17:24:06 UTC (rev 212643)
+++ trunk/Source/WebCore/ChangeLog 2017-02-20 17:24:12 UTC (rev 212644)
@@ -1,3 +1,19 @@
+2017-02-20 Youenn Fablet <you...@apple.com>
+
+ [WebRTC] Fix some memory leaks in libwebrtc binding code
+ https://bugs.webkit.org/show_bug.cgi?id=168596
+
+ Reviewed by Eric Carlson.
+
+ Covered by manual testing.
+
+ * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
+ (WebCore::LibWebRTCMediaEndpoint::StatsCollector::StatsCollector): Using the libwebrtc way of creating such objects.
+ * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:
+ (WebCore::LibWebRTCMediaEndpoint::StatsCollector::create):
+ * platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
+ (WebCore::PeerConnectionFactoryAndThreads::OnMessage):
+
2017-02-20 Alexey Proskuryakov <a...@apple.com>
Clean up how WebKit exports _WebCreateFragment
Modified: trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp (212643 => 212644)
--- trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp 2017-02-20 17:24:06 UTC (rev 212643)
+++ trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp 2017-02-20 17:24:12 UTC (rev 212644)
@@ -219,8 +219,8 @@
m_backend->GetStats(StatsCollector::create(*this, promise, track).get());
}
-LibWebRTCMediaEndpoint::StatsCollector::StatsCollector(LibWebRTCMediaEndpoint& endpoint, const DeferredPromise& promise, MediaStreamTrack* track)
- : m_endpoint(endpoint)
+LibWebRTCMediaEndpoint::StatsCollector::StatsCollector(Ref<LibWebRTCMediaEndpoint>&& endpoint, const DeferredPromise& promise, MediaStreamTrack* track)
+ : m_endpoint(WTFMove(endpoint))
, m_promise(promise)
{
if (track)
Modified: trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h (212643 => 212644)
--- trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h 2017-02-20 17:24:06 UTC (rev 212643)
+++ trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h 2017-02-20 17:24:12 UTC (rev 212644)
@@ -143,19 +143,16 @@
LibWebRTCMediaEndpoint& m_endpoint;
};
- class StatsCollector final : public webrtc::RTCStatsCollectorCallback {
+ class StatsCollector : public webrtc::RTCStatsCollectorCallback {
public:
- static rtc::scoped_refptr<StatsCollector> create(LibWebRTCMediaEndpoint& endpoint, const DeferredPromise& promise, MediaStreamTrack* track) { return new StatsCollector(endpoint, promise, track); }
+ static rtc::scoped_refptr<StatsCollector> create(Ref<LibWebRTCMediaEndpoint>&& endpoint, const DeferredPromise& promise, MediaStreamTrack* track) { return new rtc::RefCountedObject<StatsCollector>(WTFMove(endpoint), promise, track); }
- int AddRef() const { return m_endpoint.AddRef(); }
- int Release() const { return m_endpoint.Release(); }
+ StatsCollector(Ref<LibWebRTCMediaEndpoint>&&, const DeferredPromise&, MediaStreamTrack*);
private:
- StatsCollector(LibWebRTCMediaEndpoint&, const DeferredPromise&, MediaStreamTrack*);
-
void OnStatsDelivered(const rtc::scoped_refptr<const webrtc::RTCStatsReport>&) final;
- LibWebRTCMediaEndpoint& m_endpoint;
+ Ref<LibWebRTCMediaEndpoint> m_endpoint;
const DeferredPromise& m_promise;
String m_id;
};
Modified: trunk/Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProvider.cpp (212643 => 212644)
--- trunk/Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProvider.cpp 2017-02-20 17:24:06 UTC (rev 212643)
+++ trunk/Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProvider.cpp 2017-02-20 17:24:12 UTC (rev 212644)
@@ -65,7 +65,9 @@
void PeerConnectionFactoryAndThreads::OnMessage(rtc::Message* message)
{
ASSERT(message->message_id == 1);
- static_cast<ThreadMessageData*>(message->pdata)->callback();
+ auto* data = ""
+ data->callback();
+ delete data;
}
void LibWebRTCProvider::callOnWebRTCNetworkThread(Function<void()>&& callback)
Modified: trunk/Source/WebKit2/ChangeLog (212643 => 212644)
--- trunk/Source/WebKit2/ChangeLog 2017-02-20 17:24:06 UTC (rev 212643)
+++ trunk/Source/WebKit2/ChangeLog 2017-02-20 17:24:12 UTC (rev 212644)
@@ -1,3 +1,13 @@
+2017-02-20 Youenn Fablet <you...@apple.com>
+
+ [WebRTC] Fix some memory leaks in libwebrtc binding code
+ https://bugs.webkit.org/show_bug.cgi?id=168596
+
+ Reviewed by Eric Carlson.
+
+ * NetworkProcess/webrtc/NetworkRTCProvider.cpp:
+ (WebKit::NetworkRTCProvider::OnMessage):
+
2017-02-20 Carlos Garcia Campos <cgar...@igalia.com>
Remove code under USE(GRAPHICS_SURFACE)
Modified: trunk/Source/WebKit2/NetworkProcess/webrtc/NetworkRTCProvider.cpp (212643 => 212644)
--- trunk/Source/WebKit2/NetworkProcess/webrtc/NetworkRTCProvider.cpp 2017-02-20 17:24:06 UTC (rev 212643)
+++ trunk/Source/WebKit2/NetworkProcess/webrtc/NetworkRTCProvider.cpp 2017-02-20 17:24:12 UTC (rev 212644)
@@ -173,7 +173,9 @@
void NetworkRTCProvider::OnMessage(rtc::Message* message)
{
ASSERT(message->message_id == 1);
- static_cast<NetworkMessageData*>(message->pdata)->callback();
+ auto* data = ""
+ data->callback();
+ delete data;
}
void NetworkRTCProvider::callOnRTCNetworkThread(Function<void()>&& callback)