| Index: Source/modules/mediastream/RTCStatsRequestImpl.cpp
|
| diff --git a/Source/modules/mediastream/RTCStatsRequestImpl.cpp b/Source/modules/mediastream/RTCStatsRequestImpl.cpp
|
| index bac8937f682fa6403eba46371ea1348fece41502..b9d4fa7c942b6c391f98b08ec459d745f3eb81c0 100644
|
| --- a/Source/modules/mediastream/RTCStatsRequestImpl.cpp
|
| +++ b/Source/modules/mediastream/RTCStatsRequestImpl.cpp
|
| @@ -27,26 +27,31 @@
|
| #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, 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, 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()
|
| {
|
| + if (m_requester)
|
| + m_requester->requestCompletedCheckIfCallbackShouldFire();
|
| }
|
|
|
| PassRefPtrWillBeRawPtr<RTCStatsResponseBase> RTCStatsRequestImpl::createResponse()
|
| @@ -68,18 +73,22 @@ void RTCStatsRequestImpl::requestSucceeded(PassRefPtrWillBeRawPtr<RTCStatsRespon
|
| {
|
| if (!m_successCallback)
|
| return;
|
| - m_successCallback->handleEvent(static_cast<RTCStatsResponse*>(response.get()));
|
| + if (m_requester && m_requester->requestCompletedCheckIfCallbackShouldFire())
|
| + m_successCallback->handleEvent(static_cast<RTCStatsResponse*>(response.get()));
|
| clear();
|
| }
|
|
|
| void RTCStatsRequestImpl::stop()
|
| {
|
| + if (m_requester)
|
| + m_requester->requestCompletedCheckIfCallbackShouldFire();
|
| clear();
|
| }
|
|
|
| void RTCStatsRequestImpl::clear()
|
| {
|
| m_successCallback.clear();
|
| + m_requester = 0;
|
| }
|
|
|
| } // namespace WebCore
|
|
|