Chromium Code Reviews| Index: Source/modules/mediastream/RTCStatsRequestImpl.cpp |
| diff --git a/Source/modules/mediastream/RTCStatsRequestImpl.cpp b/Source/modules/mediastream/RTCStatsRequestImpl.cpp |
| index bac8937f682fa6403eba46371ea1348fece41502..dc1fdb5487537e0b3e1bade9bbfa8751a85ac111 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() |
| @@ -68,7 +71,8 @@ void RTCStatsRequestImpl::requestSucceeded(PassRefPtrWillBeRawPtr<RTCStatsRespon |
| { |
| if (!m_successCallback) |
| return; |
|
haraken
2014/06/17 11:43:45
I guess you need to call clear() in this case. So
Henrik Grunell
2014/06/17 12:12:21
Yep, you're right. Done.
|
| - m_successCallback->handleEvent(static_cast<RTCStatsResponse*>(response.get())); |
| + if (m_requester && m_requester->requestMayFireStatsCallback()) |
| + m_successCallback->handleEvent(static_cast<RTCStatsResponse*>(response.get())); |
| clear(); |
| } |
| @@ -80,6 +84,7 @@ void RTCStatsRequestImpl::stop() |
| void RTCStatsRequestImpl::clear() |
| { |
| m_successCallback.clear(); |
| + m_requester.clear(); |
| } |
| } // namespace WebCore |