RTCSessionDescriptionRequestImpl.cpp [plain text]
#include "config.h"
#if ENABLE(MEDIA_STREAM)
#include "RTCSessionDescriptionRequestImpl.h"
#include "RTCPeerConnection.h"
#include "RTCPeerConnectionErrorCallback.h"
#include "RTCSessionDescription.h"
#include "RTCSessionDescriptionCallback.h"
#include "RTCSessionDescriptionDescriptor.h"
namespace WebCore {
PassRefPtr<RTCSessionDescriptionRequestImpl> RTCSessionDescriptionRequestImpl::create(ScriptExecutionContext* context, PassRefPtr<RTCSessionDescriptionCallback> successCallback, PassRefPtr<RTCPeerConnectionErrorCallback> errorCallback)
{
RefPtr<RTCSessionDescriptionRequestImpl> request = adoptRef(new RTCSessionDescriptionRequestImpl(context, successCallback, errorCallback));
request->suspendIfNeeded();
return request.release();
}
RTCSessionDescriptionRequestImpl::RTCSessionDescriptionRequestImpl(ScriptExecutionContext* context, PassRefPtr<RTCSessionDescriptionCallback> successCallback, PassRefPtr<RTCPeerConnectionErrorCallback> errorCallback)
: ActiveDOMObject(context)
, m_successCallback(successCallback)
, m_errorCallback(errorCallback)
{
}
RTCSessionDescriptionRequestImpl::~RTCSessionDescriptionRequestImpl()
{
}
void RTCSessionDescriptionRequestImpl::requestSucceeded(PassRefPtr<RTCSessionDescriptionDescriptor> descriptor)
{
if (m_successCallback) {
RefPtr<RTCSessionDescription> sessionDescription = RTCSessionDescription::create(descriptor);
m_successCallback->handleEvent(sessionDescription.get());
}
clear();
}
void RTCSessionDescriptionRequestImpl::requestFailed(const String& error)
{
if (m_errorCallback)
m_errorCallback->handleEvent(DOMError::create(error).get());
clear();
}
void RTCSessionDescriptionRequestImpl::stop()
{
clear();
}
void RTCSessionDescriptionRequestImpl::clear()
{
m_successCallback.clear();
m_errorCallback.clear();
}
}
#endif // ENABLE(MEDIA_STREAM)