Index: Source/modules/mediastream/RTCVoidRequestImpl.cpp |
diff --git a/Source/modules/mediastream/RTCVoidRequestImpl.cpp b/Source/modules/mediastream/RTCVoidRequestImpl.cpp |
index f8422d76e3740a6b608caeef9e56a31afb1c61b7..e18c9858ea1b03c06d5c6fc485d98968a2271638 100644 |
--- a/Source/modules/mediastream/RTCVoidRequestImpl.cpp |
+++ b/Source/modules/mediastream/RTCVoidRequestImpl.cpp |
@@ -38,18 +38,20 @@ |
namespace WebCore { |
-PassRefPtr<RTCVoidRequestImpl> RTCVoidRequestImpl::create(ExecutionContext* context, PassOwnPtr<VoidCallback> successCallback, PassOwnPtr<RTCErrorCallback> errorCallback) |
+PassRefPtr<RTCVoidRequestImpl> RTCVoidRequestImpl::create(ExecutionContext* context, PassRefPtrWillBeRawPtr<RTCPeerConnection> requester, PassOwnPtr<VoidCallback> successCallback, PassOwnPtr<RTCErrorCallback> errorCallback) |
{ |
- RefPtr<RTCVoidRequestImpl> request = adoptRef(new RTCVoidRequestImpl(context, successCallback, errorCallback)); |
+ RefPtr<RTCVoidRequestImpl> request = adoptRef(new RTCVoidRequestImpl(context, requester, successCallback, errorCallback)); |
request->suspendIfNeeded(); |
return request.release(); |
} |
-RTCVoidRequestImpl::RTCVoidRequestImpl(ExecutionContext* context, PassOwnPtr<VoidCallback> successCallback, PassOwnPtr<RTCErrorCallback> errorCallback) |
+RTCVoidRequestImpl::RTCVoidRequestImpl(ExecutionContext* context, PassRefPtrWillBeRawPtr<RTCPeerConnection> requester, PassOwnPtr<VoidCallback> successCallback, PassOwnPtr<RTCErrorCallback> errorCallback) |
: ActiveDOMObject(context) |
, m_successCallback(successCallback) |
, m_errorCallback(errorCallback) |
+ , m_requester(requester) |
{ |
+ ASSERT(m_requester); |
} |
RTCVoidRequestImpl::~RTCVoidRequestImpl() |
@@ -58,7 +60,8 @@ RTCVoidRequestImpl::~RTCVoidRequestImpl() |
void RTCVoidRequestImpl::requestSucceeded() |
{ |
- if (m_successCallback) |
+ bool mayFireCallback = m_requester ? m_requester->requestMayFireNonStatsCallback() : false; |
+ if (mayFireCallback && m_successCallback) |
m_successCallback->handleEvent(); |
clear(); |
@@ -66,7 +69,8 @@ void RTCVoidRequestImpl::requestSucceeded() |
void RTCVoidRequestImpl::requestFailed(const String& error) |
{ |
- if (m_errorCallback.get()) |
+ bool mayFireCallback = m_requester ? m_requester->requestMayFireNonStatsCallback() : false; |
+ if (mayFireCallback && m_errorCallback.get()) |
m_errorCallback->handleEvent(error); |
clear(); |
@@ -81,6 +85,7 @@ void RTCVoidRequestImpl::clear() |
{ |
m_successCallback.clear(); |
m_errorCallback.clear(); |
+ m_requester.clear(); |
} |
} // namespace WebCore |