RTCStatsRequestImpl.cpp [plain text]
#include "config.h"
#if ENABLE(MEDIA_STREAM)
#include "RTCStatsRequestImpl.h"
#include "MediaStreamTrack.h"
#include "RTCPeerConnectionErrorCallback.h"
#include "RTCStatsCallback.h"
#include "RTCStatsRequest.h"
#include "RTCStatsResponse.h"
namespace WebCore {
PassRefPtr<RTCStatsRequestImpl> RTCStatsRequestImpl::create(ScriptExecutionContext* context, PassRefPtr<RTCStatsCallback> successCallback, PassRefPtr<RTCPeerConnectionErrorCallback> errorCallback, PassRefPtr<MediaStreamTrackPrivate> selector)
{
RefPtr<RTCStatsRequestImpl> request = adoptRef(new RTCStatsRequestImpl(context, successCallback, errorCallback, selector));
request->suspendIfNeeded();
return request.release();
}
RTCStatsRequestImpl::RTCStatsRequestImpl(ScriptExecutionContext* context, PassRefPtr<RTCStatsCallback> successCallback, PassRefPtr<RTCPeerConnectionErrorCallback> errorCallback, PassRefPtr<MediaStreamTrackPrivate> selector)
: ActiveDOMObject(context)
, m_successCallback(successCallback)
, m_errorCallback(errorCallback)
, m_track(selector)
{
}
RTCStatsRequestImpl::~RTCStatsRequestImpl()
{
}
PassRefPtr<RTCStatsResponseBase> RTCStatsRequestImpl::createResponse()
{
return RTCStatsResponse::create();
}
bool RTCStatsRequestImpl::hasSelector()
{
return m_track;
}
MediaStreamTrackPrivate* RTCStatsRequestImpl::track()
{
return m_track.get();
}
void RTCStatsRequestImpl::requestSucceeded(PassRefPtr<RTCStatsResponseBase> response)
{
if (!m_successCallback)
return;
m_successCallback->handleEvent(static_cast<RTCStatsResponse*>(response.get()));
clear();
}
void RTCStatsRequestImpl::requestFailed(const String& error)
{
if (m_errorCallback)
m_errorCallback->handleEvent(DOMError::create(error).get());
clear();
}
void RTCStatsRequestImpl::stop()
{
clear();
}
void RTCStatsRequestImpl::clear()
{
m_successCallback.clear();
}
}
#endif // ENABLE(MEDIA_STREAM)