Index: Source/modules/mediastream/RTCSessionDescriptionRequestImpl.cpp |
diff --git a/Source/modules/mediastream/RTCSessionDescriptionRequestImpl.cpp b/Source/modules/mediastream/RTCSessionDescriptionRequestImpl.cpp |
index 5e9301e2f5d0e46f3a9ee3e82d57b002da2b061e..b81e4b428c8c1ce23869c516a9aed3b1d5083ae5 100644 |
--- a/Source/modules/mediastream/RTCSessionDescriptionRequestImpl.cpp |
+++ b/Source/modules/mediastream/RTCSessionDescriptionRequestImpl.cpp |
@@ -41,18 +41,20 @@ |
namespace WebCore { |
-PassRefPtr<RTCSessionDescriptionRequestImpl> RTCSessionDescriptionRequestImpl::create(ExecutionContext* context, PassOwnPtr<RTCSessionDescriptionCallback> successCallback, PassOwnPtr<RTCErrorCallback> errorCallback) |
+PassRefPtr<RTCSessionDescriptionRequestImpl> RTCSessionDescriptionRequestImpl::create(ExecutionContext* context, PassRefPtrWillBeRawPtr<RTCPeerConnection> requester, PassOwnPtr<RTCSessionDescriptionCallback> successCallback, PassOwnPtr<RTCErrorCallback> errorCallback) |
{ |
- RefPtr<RTCSessionDescriptionRequestImpl> request = adoptRef(new RTCSessionDescriptionRequestImpl(context, successCallback, errorCallback)); |
+ RefPtr<RTCSessionDescriptionRequestImpl> request = adoptRef(new RTCSessionDescriptionRequestImpl(context, requester, successCallback, errorCallback)); |
request->suspendIfNeeded(); |
return request.release(); |
} |
-RTCSessionDescriptionRequestImpl::RTCSessionDescriptionRequestImpl(ExecutionContext* context, PassOwnPtr<RTCSessionDescriptionCallback> successCallback, PassOwnPtr<RTCErrorCallback> errorCallback) |
+RTCSessionDescriptionRequestImpl::RTCSessionDescriptionRequestImpl(ExecutionContext* context, PassRefPtrWillBeRawPtr<RTCPeerConnection> requester, PassOwnPtr<RTCSessionDescriptionCallback> successCallback, PassOwnPtr<RTCErrorCallback> errorCallback) |
: ActiveDOMObject(context) |
, m_successCallback(successCallback) |
, m_errorCallback(errorCallback) |
+ , m_requester(requester) |
{ |
+ ASSERT(m_requester); |
} |
RTCSessionDescriptionRequestImpl::~RTCSessionDescriptionRequestImpl() |
@@ -61,7 +63,8 @@ RTCSessionDescriptionRequestImpl::~RTCSessionDescriptionRequestImpl() |
void RTCSessionDescriptionRequestImpl::requestSucceeded(const blink::WebRTCSessionDescription& webSessionDescription) |
{ |
- if (m_successCallback) { |
+ bool shouldFireCallback = m_requester ? m_requester->shouldFireDefaultCallbacks() : false; |
+ if (shouldFireCallback && m_successCallback) { |
RefPtrWillBeRawPtr<RTCSessionDescription> sessionDescription = RTCSessionDescription::create(webSessionDescription); |
m_successCallback->handleEvent(sessionDescription.get()); |
} |
@@ -71,7 +74,8 @@ void RTCSessionDescriptionRequestImpl::requestSucceeded(const blink::WebRTCSessi |
void RTCSessionDescriptionRequestImpl::requestFailed(const String& error) |
{ |
- if (m_errorCallback) |
+ bool shouldFireCallback = m_requester ? m_requester->shouldFireDefaultCallbacks() : false; |
+ if (shouldFireCallback && m_errorCallback) |
m_errorCallback->handleEvent(error); |
clear(); |
@@ -86,6 +90,7 @@ void RTCSessionDescriptionRequestImpl::clear() |
{ |
m_successCallback.clear(); |
m_errorCallback.clear(); |
+ m_requester.clear(); |
} |
} // namespace WebCore |