This source file includes following definitions.
- extraData
- owner
- setOwner
- initialize
- initialize
- reset
- isEnabled
- id
- source
- extraData
- setExtraData
- setSourceProvider
- assign
#include "config.h"
#include "public/platform/WebMediaStreamTrack.h"
#include "platform/mediastream/MediaStreamComponent.h"
#include "platform/mediastream/MediaStreamSource.h"
#include "public/platform/WebAudioSourceProvider.h"
#include "public/platform/WebMediaStream.h"
#include "public/platform/WebMediaStreamSource.h"
#include "public/platform/WebString.h"
#include "wtf/Vector.h"
using namespace WebCore;
namespace blink {
namespace {
class ExtraDataContainer : public MediaStreamComponent::ExtraData {
public:
    explicit ExtraDataContainer(PassOwnPtr<WebMediaStreamTrack::ExtraData> extraData) : m_extraData(extraData) { }
    WebMediaStreamTrack::ExtraData* extraData() { return m_extraData.get(); }
private:
    OwnPtr<WebMediaStreamTrack::ExtraData> m_extraData;
};
} 
WebMediaStreamTrack WebMediaStreamTrack::ExtraData::owner()
{
    ASSERT(m_owner);
    return WebMediaStreamTrack(m_owner);
}
void WebMediaStreamTrack::ExtraData::setOwner(WebCore::MediaStreamComponent* owner)
{
    ASSERT(!m_owner);
    m_owner = owner;
}
WebMediaStreamTrack::WebMediaStreamTrack(PassRefPtr<WebCore::MediaStreamComponent> mediaStreamComponent)
    : m_private(mediaStreamComponent)
{
}
WebMediaStreamTrack::WebMediaStreamTrack(WebCore::MediaStreamComponent* mediaStreamComponent)
    : m_private(mediaStreamComponent)
{
}
WebMediaStreamTrack& WebMediaStreamTrack::operator=(WebCore::MediaStreamComponent* mediaStreamComponent)
{
    m_private = mediaStreamComponent;
    return *this;
}
void WebMediaStreamTrack::initialize(const WebMediaStreamSource& source)
{
    m_private = MediaStreamComponent::create(source);
}
void WebMediaStreamTrack::initialize(const WebString& id, const WebMediaStreamSource& source)
{
    m_private = MediaStreamComponent::create(id, source);
}
void WebMediaStreamTrack::reset()
{
    m_private.reset();
}
WebMediaStreamTrack::operator PassRefPtr<MediaStreamComponent>() const
{
    return m_private.get();
}
WebMediaStreamTrack::operator MediaStreamComponent*() const
{
    return m_private.get();
}
bool WebMediaStreamTrack::isEnabled() const
{
    ASSERT(!m_private.isNull());
    return m_private->enabled();
}
WebString WebMediaStreamTrack::id() const
{
    ASSERT(!m_private.isNull());
    return m_private->id();
}
WebMediaStreamSource WebMediaStreamTrack::source() const
{
    ASSERT(!m_private.isNull());
    return WebMediaStreamSource(m_private->source());
}
WebMediaStreamTrack::ExtraData* WebMediaStreamTrack::extraData() const
{
    MediaStreamComponent::ExtraData* data = m_private->extraData();
    if (!data)
        return 0;
    return static_cast<ExtraDataContainer*>(data)->extraData();
}
void WebMediaStreamTrack::setExtraData(ExtraData* extraData)
{
    ASSERT(!m_private.isNull());
    if (extraData)
        extraData->setOwner(m_private.get());
    m_private->setExtraData(adoptPtr(new ExtraDataContainer(adoptPtr(extraData))));
}
void WebMediaStreamTrack::setSourceProvider(WebAudioSourceProvider* provider)
{
#if ENABLE(WEB_AUDIO)
    ASSERT(!m_private.isNull());
    m_private->setSourceProvider(provider);
#endif 
}
void WebMediaStreamTrack::assign(const WebMediaStreamTrack& other)
{
    m_private = other.m_private;
}
}