RTCStatsRequestImpl.cpp [plain text]
#include "config.h"
#if ENABLE(MEDIA_STREAM)
#include "RTCStatsRequestImpl.h"
#include "RTCStatsCallback.h"
#include "RTCStatsRequest.h"
#include "RTCStatsResponse.h"
namespace WebCore {
PassRefPtr<RTCStatsRequestImpl> RTCStatsRequestImpl::create(ScriptExecutionContext* context, PassRefPtr<RTCStatsCallback> callback, PassRefPtr<MediaStreamTrack> selector)
{
RefPtr<RTCStatsRequestImpl> request = adoptRef(new RTCStatsRequestImpl(context, callback, selector));
request->suspendIfNeeded();
return request.release();
}
RTCStatsRequestImpl::RTCStatsRequestImpl(ScriptExecutionContext* context, PassRefPtr<RTCStatsCallback> callback, PassRefPtr<MediaStreamTrack> selector)
: ActiveDOMObject(context)
, m_successCallback(callback)
, m_stream(selector ? selector->component()->stream() : 0)
, m_component(selector ? selector->component() : 0)
{
}
RTCStatsRequestImpl::~RTCStatsRequestImpl()
{
}
PassRefPtr<RTCStatsResponseBase> RTCStatsRequestImpl::createResponse()
{
return RTCStatsResponse::create();
}
bool RTCStatsRequestImpl::hasSelector()
{
return m_stream;
}
MediaStreamDescriptor* RTCStatsRequestImpl::stream()
{
return m_stream.get();
}
MediaStreamComponent* RTCStatsRequestImpl::component()
{
return m_component.get();
}
void RTCStatsRequestImpl::requestSucceeded(PassRefPtr<RTCStatsResponseBase> response)
{
if (!m_successCallback)
return;
m_successCallback->handleEvent(static_cast<RTCStatsResponse*>(response.get()));
clear();
}
void RTCStatsRequestImpl::stop()
{
clear();
}
void RTCStatsRequestImpl::clear()
{
m_successCallback.clear();
}
}
#endif // ENABLE(MEDIA_STREAM)