Index: Source/modules/mediastream/RTCSessionDescriptionRequestImpl.cpp |
diff --git a/Source/modules/mediastream/RTCSessionDescriptionRequestImpl.cpp b/Source/modules/mediastream/RTCSessionDescriptionRequestImpl.cpp |
index 5e9301e2f5d0e46f3a9ee3e82d57b002da2b061e..5d311e2acd7d962bebae7f997cdf028de84f38f0 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, PassRefPtr<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, PassRefPtr<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 mayFireCallback = m_requester ? m_requester->requestMayFireNonStatsCallback() : true; |
haraken
2014/06/15 13:43:57
Just help me understand: Why is this 'true', not '
Henrik Grunell
2014/06/16 07:48:59
Yes, it should be false. Changed.
|
+ if (mayFireCallback && 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 mayFireCallback = m_requester ? m_requester->requestMayFireNonStatsCallback() : true; |
+ if (mayFireCallback && 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 |