Chromium Code Reviews| Index: Source/modules/mediastream/RTCSessionDescriptionRequestImpl.cpp |
| diff --git a/Source/modules/mediastream/RTCSessionDescriptionRequestImpl.cpp b/Source/modules/mediastream/RTCSessionDescriptionRequestImpl.cpp |
| index 5e9301e2f5d0e46f3a9ee3e82d57b002da2b061e..1dd9a08f81ba241ad20e07cca25a0a61a86d7d6b 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 mayFireCallback = m_requester ? m_requester->requestMayFireNonStatsCallback() : false; |
|
haraken
2014/06/17 11:43:45
Nit: mayFireCallback => shouldFireCallback ?
|
| + 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() : false; |
| + 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 |