Index: Source/modules/mediastream/RTCStatsRequestImpl.cpp |
diff --git a/Source/modules/mediastream/RTCStatsRequestImpl.cpp b/Source/modules/mediastream/RTCStatsRequestImpl.cpp |
index bac8937f682fa6403eba46371ea1348fece41502..d53e7a6543a3cceebb37d84fec0eaeb3e1078e34 100644 |
--- a/Source/modules/mediastream/RTCStatsRequestImpl.cpp |
+++ b/Source/modules/mediastream/RTCStatsRequestImpl.cpp |
@@ -27,22 +27,25 @@ |
#include "modules/mediastream/RTCStatsRequestImpl.h" |
#include "modules/mediastream/MediaStreamTrack.h" |
+#include "modules/mediastream/RTCPeerConnection.h" |
#include "modules/mediastream/RTCStatsCallback.h" |
namespace WebCore { |
-PassRefPtr<RTCStatsRequestImpl> RTCStatsRequestImpl::create(ExecutionContext* context, PassOwnPtr<RTCStatsCallback> callback, PassRefPtr<MediaStreamTrack> selector) |
+PassRefPtr<RTCStatsRequestImpl> RTCStatsRequestImpl::create(ExecutionContext* context, PassRefPtrWillBeRawPtr<RTCPeerConnection> requester, PassOwnPtr<RTCStatsCallback> callback, PassRefPtr<MediaStreamTrack> selector) |
{ |
- RefPtr<RTCStatsRequestImpl> request = adoptRef(new RTCStatsRequestImpl(context, callback, selector)); |
+ RefPtr<RTCStatsRequestImpl> request = adoptRef(new RTCStatsRequestImpl(context, requester, callback, selector)); |
request->suspendIfNeeded(); |
return request.release(); |
} |
-RTCStatsRequestImpl::RTCStatsRequestImpl(ExecutionContext* context, PassOwnPtr<RTCStatsCallback> callback, PassRefPtr<MediaStreamTrack> selector) |
+RTCStatsRequestImpl::RTCStatsRequestImpl(ExecutionContext* context, PassRefPtrWillBeRawPtr<RTCPeerConnection> requester, PassOwnPtr<RTCStatsCallback> callback, PassRefPtr<MediaStreamTrack> selector) |
: ActiveDOMObject(context) |
, m_successCallback(callback) |
, m_component(selector ? selector->component() : 0) |
+ , m_requester(requester) |
{ |
+ ASSERT(m_requester); |
} |
RTCStatsRequestImpl::~RTCStatsRequestImpl() |
@@ -66,9 +69,9 @@ MediaStreamComponent* RTCStatsRequestImpl::component() |
void RTCStatsRequestImpl::requestSucceeded(PassRefPtrWillBeRawPtr<RTCStatsResponseBase> response) |
{ |
- if (!m_successCallback) |
- return; |
- m_successCallback->handleEvent(static_cast<RTCStatsResponse*>(response.get())); |
+ bool shouldFireCallback = m_requester ? m_requester->shouldFireGetStatsCallback() : false; |
+ if (shouldFireCallback && m_successCallback) |
+ m_successCallback->handleEvent(static_cast<RTCStatsResponse*>(response.get())); |
clear(); |
} |
@@ -80,6 +83,7 @@ void RTCStatsRequestImpl::stop() |
void RTCStatsRequestImpl::clear() |
{ |
m_successCallback.clear(); |
+ m_requester.clear(); |
} |
} // namespace WebCore |